Pembuatan Program Tes Buta Warna Pada Handphone Menggunakan Metoda RGB Anomaloscope.

(1)

i Universtitas Kristen Maranatha

ABSTRAK

Perangkat handphone sudah menjadi hal yang umum di era teknologi yang pesat ini. Seiring berkembangnya kecanggihan teknologi, aplikasi – aplikasi yang digunakan pada perangkat handphone pun berkembang. Namun di sisi lain, masih ada masyarakat yang tidak menyadari bahwa mereka menderita penyakit buta warna. Dikarenakan mereka tidak pernah memeriksakannya ke dokter. Bila terdapat aplikasi yang membantu untuk mendeteksi penyakit, akan sangat membantu masyarakat. Maka pada tugas akhir ini dibuatlah aplikasi tes buta warna menggunakan metoda RGB Anomaloscope. Dengan adanya aplikasi tes buta warna ini akan membantu masyarakat mendeteksi penyakit buta warna ini dan dapat berkonsultasi pada dokter ahli.


(2)

ii Universtitas Kristen Maranatha

ABSTRACT

Mobile devices have become a common thing in era of technology. With developing of technology, applications used in the devices have to be developed. On the other hand, there are still people who are unaware that they suffer color blindness. Due to they never check to the doctor. If there is an application that can detect color blindness, it will greatly help people. So on this final project, color blind test program using RGB Anomaloscope methods on mobile device was created. With color blind test program on mobile device, people can detect this disease and consult to specialist.


(3)

iii Universtitas Kristen Maranatha

DAFTAR ISI

ABSTRAK ... i

ABSTRACT ... ii

DAFTAR ISI ... iii

DAFTAR GAMBAR ... v

DAFTAR TABEL ... vi

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang Masalah ... 1

1.2 Identifikasi Masalah ... 2

1.3 Rumusan Masalah ... 2

1.4 Pembatasan Masalah ... 2

1.5 Sistematika Penulisan ... 3

BAB II LANDASAN TEORI ... 4

2.1 Java ... 4

2.1.1 Arsitektur Java ... 5

2.1.2 Perkembangan Java ... 5

2.1.3 J2ME (Java 2 Micro Edition) ... 6

2.1.3.1 Siklus hidup J2ME ... 9

2.2 NetBeans ... 12

2.2.1 Sejarah NetBeans ... 12

2.2.2 NetBeans IDE ... 13

2.3 RGB Anomaloscope ... 16

BAB III ANALISIS DAN PERANCANGAN ... 17

3.1 Rancangan Awal Aplikasi... 17

3.2 Gambaran Keseluruhan ... 19

3.3 Penjelasan aplikasi tes buta warna ... 20

3.3.1 Tampilan utama (Main menu) ... 21

3.3.2 Tes Buta Warna RGB Anomaloscope ... 22


(4)

iv Universtitas Kristen Maranatha

3.3.2.2 Warna tetap (soal) ... 24

3.3.2.3 Perhitungan besar penyimpangan warna ... 25

3.3.3 Penentuan hasil tes ... 26

BAB IV HASIL DAN DATA PENGAMATAN ... 28

4.1 Hasil aplikasi tes buta warna... 28

4.1.1 Tampilan utama (Main Menu) ... 28

4.1.2 Tes buta warna dengan metoda RGB Anomaloscope ... 29

4.1.3 Hasil tes buta warna dengan metoda RGB anomaloscope ... 33

4.1.4 Implementasi pada handphone ... 36

4.2 Data Pengamatan ... 39

BAB V KESIMPULAN DAN SARAN ... 41

5.1 Kesimpulan ... 41

5.2 Saran ... 41

DAFTAR PUSTAKA ... 42 LAMPIRAN...A-1


(5)

v Universtitas Kristen Maranatha

DAFTAR GAMBAR

Gambar 2.1 Siklus hidup J2ME ... 9

Gambar 2.2 Screenshot NetBeans 6.9 ... 13

Gambar 2.3 Anomaloscope ... 16

Gambar 3.1 Rancangan awal... 17

Gambar 3.2 Rancangan awal warna ... 18

Gambar 3.3 Diagram alir utama ... 19

Gambar 4.1 Canvas tampilan utama (Main Menu) aplikasi ... 28

Gambar 4.2 Screenshot soal pertama, ke-2 dan ke-3 (Percobaan ke-1)... 29

Gambar 4.3 Screenshot soal ke-4, ke-5dan ke-6 (Percobaan ke-1) ... 29

Gambar 4.4 Screenshot soal ke-7, ke-8 dan ke-9 (Percobaan ke-1) ... 30

Gambar 4.5 Screenshot soal ke-10, ke-11dan ke-12 (Percobaan ke-1) ... 30

Gambar 4.6 Screenshot soal ke-13, ke-14 dan ke-15 (Percobaan ke-1) ... 30

Gambar 4.7 Screenshot soal pertama, ke-2 dan ke-3 (percobaan ke-2) ... 31

Gambar 4.8 Screenshot soal ke-4, ke-5 dan ke-6 (percobaan ke-2)... 31

Gambar 4.9 Screenshot soal ke-7, ke-8 dan ke-9 (percobaan ke-2)... 32

Gambar 4.10 Screenshot soal ke-10, ke-11 dan ke-12 (percobaan ke-2) ... 32

Gambar 4.11 Screenshot soal ke-13, ke-14 dan ke-15 (percobaan ke-2) ... 32

Gambar 4.12 Canvas hasil tes buta warna pada warna hijau ... 33

Gambar 4.13 Canvas hasil tes buta warna pada warna merah ... 34

Gambar 4.14 Canvas hasil tes buta warna pada kedua warna ... 34

Gambar 4.15 Canvas hasil tes tidak buta warna pada kedua warna ... 35

Gambar 4.16 Tampilan utama aplikasi pada handphone ... 36

Gambar4.17 Tampilan tes buta warna (soal pertama sampai ke-3) ... 36

Gambar4.18 Tampilan tes buta warna (soal ke-4 sampai ke-6) ... 37

Gambar4.19 Tampilan tes buta warna (soal ke-7 sampai ke-9) ... 37

Gambar4.20 Tampilan tes buta warna (soal ke-10 sampai ke-12) ... 37

Gambar4.21 Tampilan tes buta warna (soal ke-13 sampai ke-15) ... 38


(6)

vi Universtitas Kristen Maranatha

DAFTAR TABEL


(7)

LAMPIRAN


(8)

A-1 Universtitas Kristen Maranatha package RGB; import java.util.Random; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /**

* @author Andreas Octorianto * RGB ANOMALOSCOPE */

public class Midlet extends MIDlet {

private Display display; private MainCanvas canvas; private MenuCanvas menu; private Alert r;

public Midlet() {

display = Display.getDisplay(this); canvas = new MainCanvas(); menu = new MenuCanvas(); }

public void startApp() { display.setCurrent(menu); }

public void pauseApp() { }

public void destroyApp(boolean unconditional) { }

public void showResult() { String Result = null; if (canvas.count == 15) {

if (canvas.r_score >= 40 && canvas.g_score >= 40) {

Result = "Anda terbukti Buta Warna. Mohon hubungi dokter untuk lebih lanjut. Terima kasih telah menggunakan aplikasi ini";

}

if (canvas.r_score >= 40 && canvas.g_score <= 40) {

Result = "Anda terbukti Buta Warna pada warna merah. Mohon hubungi dokter untuk lebih lanjut. Terima kasih telah menggunakan aplikasi ini";

}

if (canvas.r_score <= 40 && canvas.g_score >= 40) {

Result = "Anda terbukti Buta Warna pada warna merah. Mohon hubungi dokter untuk lebih lanjut. Terima kasih telah menggunakan aplikasi ini";

}

if (canvas.r_score <= 40 && canvas.g_score <= 40) {

Result = "Anda tidak terbukti Buta Warna. Terima kasih telah menggunakan aplikasi ini";


(9)

A-2 Universtitas Kristen Maranatha

r = new Alert("Result", Result, null, AlertType.INFO); r.setTimeout(Alert.FOREVER);

display.setCurrent(r); } else {

Result = "Anda belum menyelesaikan test!";

r = new Alert("Result", Result, null, AlertType.INFO); r.setTimeout(Alert.FOREVER);

display.setCurrent(r); }

}

public void exit() { destroyApp(true); notifyDestroyed(); }

public void next() { display.setCurrent(canvas); }

public void back () { canvas.r_score = 0; //reset canvas.g_score = 0; canvas.count = 0;

display.setCurrent(menu); }

class MainCanvas extends Canvas implements CommandListener {

private final Command back = new Command("back", Command.BACK, 1); /* Score */

int r_score = 0; int g_score = 0; /* Counter */ int count = 0;

/* current sample color */ Random r = new Random(); int Color_r = r.nextInt(256); int Color_g = r.nextInt(256); int Color_b = 0;

int rgbColor = 0x00ffff00; /* current index */

int ndx = 1;

protected void paint(Graphics g) { this.addCommand(back); this.setCommandListener(this); int w = getWidth();

int h = getHeight(); //ukuran warna soal int sample_w = w - 1; int sample_h = h - 48; int sample_y = 2;


(10)

A-3 Universtitas Kristen Maranatha

//ukuran warna berubah int tick_w = w - 1; int tick_h = h - 128; int tick_y = 2; //ukuran indikator

int b_y = sample_y + sample_h + 4; int g_y = b_y + 14;

//latar belakang layar g.setColor(0, 0, 0); g.fillRect(0, 0, w, h); //warna untuk yang berubah g.setColor(rgbColor);

g.fillRect(2, sample_y, sample_w, sample_h); //Warna untuk soal

g.setColor(Color_r,Color_g,Color_b); g.fillRect(2, tick_y, tick_w, tick_h); //warna untuk penunjuk perubahan int yellow = (rgbColor >> 8) & 0xff; g.setColor(255, 255, 0);

g.fillRect(20, g_y, yellow / 4, 10); int red1 = (rgbColor >> 16) & 0xff; //tulisan pada canvas penujuk soal g.setColor(255, 255, 255);

g.drawString(Integer.toString(count), 36, b_y - 3, Graphics.LEFT | Graphics.TOP);

g.drawString(Integer.toString(yellow),18, g_y - 3, Graphics.RIGHT | Graphics.TOP);

}

public void keyRepeated(int key) {

keyPressed(key); //Handle repeat as in pressed. }

protected void keyPressed(int key) { int action = getGameAction(key); int dir = 0;

switch (action) { case RIGHT: dir += 1; break; case LEFT: dir -= 1; break;

case FIRE: //jawaban berbeda score tidak bertambah if (count == 15){

showResult(); }

count++;

Random s = new Random(); Color_r = s.nextInt(256);


(11)

A-4 Universtitas Kristen Maranatha

Color_g = s.nextInt(256); break;

case UP: //jawaban sama score bertambah if (count == 15){

showResult(); }

int colorG = (rgbColor >> (ndx*8)) & 0xff; int colorR = (rgbColor >> ((ndx+1)*8)) & 0xff;

if (Color_r > Color_g && colorR < (Color_r+3) && colorR > (Color_r-3)) {r_score+=10;}

if (Color_g > Color_r && colorG < (Color_g+3) && colorG > (Color_g-3)) {g_score+=10;}

count++;

Random d = new Random(); Color_r = d.nextInt(256); Color_g = d.nextInt(256);

if (r_score >= 150) {r_score = 150;} if (g_score >= 150) {g_score = 150;} break;

default: return; }

//limit

if (count > 15) { count = 15; }

int x = (rgbColor >> (ndx*8)) & 0xff; int y = (rgbColor >> (ndx+1)*8) & 0xff; int v = x|y;

v += (dir * 0x20); if (v < 0) { v = 0; } if (v > 255) { v = 255; } int mask1 = 0xff << (ndx * 8); int mask2 = 0xff << ((ndx+1)*8); int mask = mask1|mask2;

rgbColor = (rgbColor & ~mask) | (v << (ndx * 8) | (v <<(ndx+1)*8)); repaint();

}

public void commandAction(Command c, Displayable d) { if (c == back) { back(); }

} }

class MenuCanvas extends Canvas implements CommandListener{ private final Command next = new Command ("Ok", Command.OK, 1); private final Command exit = new Command ("Exit", Command.EXIT, 1); protected void paint(Graphics g) {


(12)

A-5 Universtitas Kristen Maranatha

this.addCommand(next); this.addCommand(exit); this.setCommandListener(this); g.setColor(0, 0, 0);

g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(255,255,255);

g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE));

g.drawString("Selamat Datang", 115, 30, Graphics.HCENTER|Graphics.BASELINE);

g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE));

g.drawString("dalam Tes Buta Warna.", 115, 45, Graphics.HCENTER|Graphics.BASELINE);

g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));

g.drawString("untuk memilih jawaban BERBEDA tombol tengah", 120, 70, Graphics.HCENTER|Graphics.BASELINE);

g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));

g.drawString("untuk jawaban SAMA tekan panah atas", 115, 85, Graphics.HCENTER|Graphics.BASELINE);

g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE));

g.drawString("Apakah Ingin Memulai Test ?", 120, 125, Graphics.HCENTER|Graphics.BASELINE);

}

public void commandAction(Command c, Displayable d) { if (c == exit) { exit(); }

if (c == next) { next(); } }

} }


(13)

1 Universtitas Kristen Maranatha

BAB I

PENDAHULUAN

1.1 Latar Belakang Masalah

Dewasa ini, handphone sudah menjadi suatu kebutuhan bagi masyarakat dan menjadi pusat komunikasi sekarang ini. Bahkan pada saat ini banyak orang mempunyai handphone lebih dari satu. Karena itu, banyak aplikasi - aplikasi yang diperuntukan untuk handphone bermunculan. Hampir semua aplikasi itu dibuat dengan menggunakan bahasa pemrograman J2ME (Java 2

Micro Edition). J2ME adalah bahasa pemrograman Java yang memusatkan

dalam pembuatan aplikasi untuk perangkat – perangkat elektronik yang kecil, salah satu adalah handphone.

Pada saat ini masih ada masyarakat yang menderita penyakit buta warna. Banyak penderita buta warna yang tidak menyadari karena tidak pernah memeriksanya pada dokter. Bila ada aplikasi yang dapat mendeteksi jenis penyakit ini akan dapat membantu untuk mendeteksi seberapa banyak orang yang mengidap penyakit. Ini berarti aplikasi itu harus bisa digunakan pada


(14)

2

Universtitas Kristen Maranatha benda atau barang yang biasa dibawa oleh orang salah satu yaitu, handphone. Untuk itulah, dibuatnya program / aplikasi tes buta warna pada handphone.

1.2 Identifikasi Masalah

Bagaimana membuat program tes buta warna pada handphone menggunakan metoda RGB Anomaloscope?

1.3 Rumusan Masalah

Membuat program tes buta warna pada handphone menggunakan metoda

RGB Anomaloscope.

1.4 Pembatasan Masalah

Pembatasan masalah dalam laporan ini yaitu :

a. Program yang digunakan dalam membuat aplikasi tes buta warna pada

handphone adalah NetBeans 7.0 dengan bahasa pemrograman J2ME.

b. Metoda yang digunakan untuk tes buta warna adalah RGB Anomaloscope, yang dimana menggunakan dua warna yang harus ditentukan apakah kedua warna itu sama atau tidak.


(15)

3

Universtitas Kristen Maranatha

1.5 Sistematika Penulisan

Bab I : Pendahuluan

Berisikan tentang latar belakang, identifikasi masalah, rumusan masalah, pembatasan masalah.

Bab II : Kerangka Teoritis

Berisikan tentang teori – teori seputar topik tugas akhir. Bab III : Perancangan dan Pemodelan

Berisikan tentang perancangan aplikasi tes buta warna pada handphone yang akan dibuat.

Bab IV : Hasil dan pembahasan

Berisikan tentang hasil perancangan dan data pengamatan dari aplikasi tes buta warna yang dibuat.

Bab V : Kesimpulan dan Saran

Berisikan tentang kesimpulan yang dicapai dan saran – saran.


(16)

41 Universtitas Kristen Maranatha

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Pembuatan tes buta warna pada handphone menggunakan metoda RGB

Anomloscope dapat diimplementasikan dan berkerja dengan baik

 Dari data pengamatan yang sudah didapat, program tes buta warna ini dapat mendeteksi penyakit buta warna dengan baik.

5.2 Saran

Tes buta warna pada handphone ini dapat ditambahkan fasilitas SMS

Composer. SMS Composer adalah sebuah fasilitas yang bisa mengirimkan

sebuah pesang singkat (SMS) pada sebuah nomer yang tetap. Informasi yang dikirimkan adalah hasil tes buta warna yang telah dilakukan dan langsung dikirimkan pada sebuah rumah sakit atau dokter yang ahli dalam penyakit ini.


(17)

42 Universtitas Kristen Maranatha

DAFTAR PUSTAKA

Colblindor. Color Blind Essentials: www.colblindor.com

http://hrboyceiii.blogspot.com/2007/02/bit-shifting-what-is-it-and-why.html http://netbeans.org/about/history.html

http://en.wikipedia.org/wiki/NetBeans

http://javastudy.wordpress.com/2007/11/25/sejarah-netbeans/ http://code.google.com/p/tugas/wiki/Sejarahjava

http://www.andisun.com/artikel/sekilas-java-2-microedition-j2me

Keegan, Patrick. 2006. NetBeans IDE Field Guide, Developing J2ME Mobility

Applications. USA:Prentice Hall

Keogh, James. 2003. J2ME: The Complete Reference. California:McGraw-Hill Mclntyre, Donald. 2002.Colour Blindess: Causes and Effects. UK:Dalton

Publishing

Raharjo, Budi dkk. 2007. Tuntunan Pemograman Java untuk Handphone dan Alat


(1)

this.addCommand(next); this.addCommand(exit); this.setCommandListener(this); g.setColor(0, 0, 0);

g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(255,255,255);

g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE));

g.drawString("Selamat Datang", 115, 30, Graphics.HCENTER|Graphics.BASELINE);

g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE));

g.drawString("dalam Tes Buta Warna.", 115, 45, Graphics.HCENTER|Graphics.BASELINE);

g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));

g.drawString("untuk memilih jawaban BERBEDA tombol tengah", 120, 70, Graphics.HCENTER|Graphics.BASELINE);

g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));

g.drawString("untuk jawaban SAMA tekan panah atas", 115, 85, Graphics.HCENTER|Graphics.BASELINE);

g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE));

g.drawString("Apakah Ingin Memulai Test ?", 120, 125, Graphics.HCENTER|Graphics.BASELINE);

}

public void commandAction(Command c, Displayable d) { if (c == exit) { exit(); }

if (c == next) { next(); } }

} }


(2)

1 Universtitas Kristen Maranatha

BAB I

PENDAHULUAN

1.1 Latar Belakang Masalah

Dewasa ini, handphone sudah menjadi suatu kebutuhan bagi masyarakat dan menjadi pusat komunikasi sekarang ini. Bahkan pada saat ini banyak orang mempunyai handphone lebih dari satu. Karena itu, banyak aplikasi - aplikasi yang diperuntukan untuk handphone bermunculan. Hampir semua aplikasi itu dibuat dengan menggunakan bahasa pemrograman J2ME (Java 2

Micro Edition). J2ME adalah bahasa pemrograman Java yang memusatkan

dalam pembuatan aplikasi untuk perangkat – perangkat elektronik yang kecil, salah satu adalah handphone.

Pada saat ini masih ada masyarakat yang menderita penyakit buta warna. Banyak penderita buta warna yang tidak menyadari karena tidak pernah memeriksanya pada dokter. Bila ada aplikasi yang dapat mendeteksi jenis penyakit ini akan dapat membantu untuk mendeteksi seberapa banyak orang yang mengidap penyakit. Ini berarti aplikasi itu harus bisa digunakan pada


(3)

2

benda atau barang yang biasa dibawa oleh orang salah satu yaitu, handphone. Untuk itulah, dibuatnya program / aplikasi tes buta warna pada handphone. 1.2 Identifikasi Masalah

Bagaimana membuat program tes buta warna pada handphone menggunakan metoda RGB Anomaloscope?

1.3 Rumusan Masalah

Membuat program tes buta warna pada handphone menggunakan metoda

RGB Anomaloscope.

1.4 Pembatasan Masalah

Pembatasan masalah dalam laporan ini yaitu :

a. Program yang digunakan dalam membuat aplikasi tes buta warna pada

handphone adalah NetBeans 7.0 dengan bahasa pemrograman J2ME.

b. Metoda yang digunakan untuk tes buta warna adalah RGB Anomaloscope, yang dimana menggunakan dua warna yang harus ditentukan apakah kedua warna itu sama atau tidak.


(4)

3

Universtitas Kristen Maranatha

1.5 Sistematika Penulisan

Bab I : Pendahuluan

Berisikan tentang latar belakang, identifikasi masalah, rumusan masalah, pembatasan masalah.

Bab II : Kerangka Teoritis

Berisikan tentang teori – teori seputar topik tugas akhir. Bab III : Perancangan dan Pemodelan

Berisikan tentang perancangan aplikasi tes buta warna pada handphone yang akan dibuat.

Bab IV : Hasil dan pembahasan

Berisikan tentang hasil perancangan dan data pengamatan dari aplikasi tes buta warna yang dibuat.

Bab V : Kesimpulan dan Saran

Berisikan tentang kesimpulan yang dicapai dan saran – saran.


(5)

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Pembuatan tes buta warna pada handphone menggunakan metoda RGB

Anomloscope dapat diimplementasikan dan berkerja dengan baik

 Dari data pengamatan yang sudah didapat, program tes buta warna ini dapat mendeteksi penyakit buta warna dengan baik.

5.2 Saran

Tes buta warna pada handphone ini dapat ditambahkan fasilitas SMS

Composer. SMS Composer adalah sebuah fasilitas yang bisa mengirimkan

sebuah pesang singkat (SMS) pada sebuah nomer yang tetap. Informasi yang dikirimkan adalah hasil tes buta warna yang telah dilakukan dan langsung dikirimkan pada sebuah rumah sakit atau dokter yang ahli dalam penyakit ini.


(6)

42 Universtitas Kristen Maranatha

DAFTAR PUSTAKA

Colblindor. Color Blind Essentials: www.colblindor.com

http://hrboyceiii.blogspot.com/2007/02/bit-shifting-what-is-it-and-why.html http://netbeans.org/about/history.html

http://en.wikipedia.org/wiki/NetBeans

http://javastudy.wordpress.com/2007/11/25/sejarah-netbeans/ http://code.google.com/p/tugas/wiki/Sejarahjava

http://www.andisun.com/artikel/sekilas-java-2-microedition-j2me

Keegan, Patrick. 2006. NetBeans IDE Field Guide, Developing J2ME Mobility

Applications. USA:Prentice Hall

Keogh, James. 2003. J2ME: The Complete Reference. California:McGraw-Hill Mclntyre, Donald. 2002.Colour Blindess: Causes and Effects. UK:Dalton

Publishing

Raharjo, Budi dkk. 2007. Tuntunan Pemograman Java untuk Handphone dan Alat