Perangkat Keras Pelatihan Bahasa Semaphore Bendera.
Perangkat Keras Pelatihan Bahasa Semaphore Bendera
Daniel Yerimi (0927051)
Jurusan Sistem Komputer, Fakultas Teknik
Universitas Kristen Maranatha
Jalan Prof. drg. Surya Sumantri, MPH 65
Bandung
Abstrak
Dalam cara berkomunikasi, pada bidang kelautan atau pramuka masih digunakan
teknik berkomunikasi dengan bahasa Semaphorebendera. Semaphore bendera
adalah sebuah sistem untuk mengirim informasi jarak jauh berupa sinyal visual
dengan menggunakan bendera kecil, tongkat, atau tangan. Informasi- informasi
kemudian diinterpretasikan dalam posisi bendera.
Melihat Semaphore bendera yang masih digunakan hingga saat ini, maka
pembuatan perangkat keras pelatihan bahasa Semaphore bendera dirasa perlu
untuk membantu melatih pembelajaran kode-kode yang digunakan dalam bahasa
Semaphore bendera.
Dalam perancangan dan pembuatan alat, digunakan modul Arduino Duemilanove
dengan ATMega328 sebagai microcontroller yang mengendalikan LED untuk
menggambarkan delapan arah yang digunakan dalam bahasa Semaphore bendera,
dan LCD untuk menampilkan input. Selain itu, dalam perancangan program
dibuat tiga jenis mode, yaitu: Practice Mode, Test Mode, dan Exam Mode.
Dengan adanya tiga jenis mode, pembelajaran bahasa Semaphore bendera dapat
dilakukan dengan lebih bervariasi.
(2)
Flag Semaphore Language Training Hardware
Daniel Yerimi (0927051)
Computer Engineering Major, Faculty of Technique
Maranatha Christian University
Prof. drg. Surya SumantriSt., MPH 65
Bandung
Abstract
In navy or scout, a flag Semaphore language is still used for communication. Flag
Semaphore is a system to send information in a long distance as a visual signal
using small flags, rods, or hands. The information then be interpreted in flags
positions.
Concerned that flag Semaphore is still used until now, then a making of
Semaphore language training hardware is considered necessary to help learning
the codes used in flag Semaphore language.
In design, Arduino Duemilanove module with ATMega328 as its microcontroller
is used to control LEDs which represent eight ways in flag Semaphore language,
and LCD to display the input. Besides that, three types of practice are designed in
the program, i.e.: Practice Mode, Test Mode, and Exam Mode.
With three types of practice, learning of flag Semaphore language can be done
variously.
(3)
DAFTAR ISI
Abstrak ...i
Abstract ... ii
DAFTAR ISI ... iii
DAFTAR GAMBAR ...v
DAFTAR TABEL ... vii
BAB I PENDAHULUAN ...1
1.1
Latar Belakang ...1
1.2
Identifikasi Masalah ...1
1.3
Tujuan ...2
1.4
Pembatasan Masalah ...2
1.5
Sistematika Penulisan ...2
BAB II LANDASAN TEORI ...4
2.1
Semaphore Bendera ...4
2.1.1.
Sejarah ...4
2.1.2.
Semaphore Modern ...4
2.1.3.
Penggunaan Semaphore Bendera ...6
2.2
Perangkat Keras ...6
2.2.1.
Module Arduino Duemilanove dengan ATMega328...6
2.2.2.
LCD 16x2 ...8
2.2.3.
IC HEF4094 ...9
2.2.4.
Keypad 3x4...9
2.2.5.
Resistor ...10
2.2.6.
LED ...10
2.2.7.
Potensiometer ...11
2.2.8.
Kabel Jumper Breadboard ...11
2.2.9.
Printed Circuit Board Berlubang ...12
2.3
Perangkat Lunak ...12
2.3.1.
PanduanAwalArduino IDE0022 ...15
(4)
BAB III PERANCANGAN ...21
3.1
Perancangan Perangkat Keras ...21
3.1.1
Diagram Blok ...21
3.1.2
Skematik ...21
3.1.3
LED dan Resistor ...23
3.2
Perancangan Perangkat Lunak ...24
BAB IV PENGAMATAN ...36
BAB V KESIMPULAN DAN SARAN ...51
5.1
Kesimpulan ...51
5.2
Saran...51
DAFTAR PUSTAKA ...52
LAMPIRAN A SOURCE CODE ... A - 1
LAMPIRAN B DIAGRAM ALIR ...B - 1
LAMPIRAN C SKEMATIK DAN ALAT ...C - 1
(5)
DAFTAR GAMBAR
Gambar 2.1 Kode Semaphore Bendera ...5
Gambar 2.2 Arduino Duemilanove dengan ATMega328 ...6
Gambar 2.3 LCD 16x2 JHD162A ...8
Gambar 2.4 IC HEF4094 ...9
Gambar 2.5 Keypad 3x4 ...9
Gambar 2.6 Resistor 100 ohm ...10
Gambar 2.7 Red LED ...10
Gambar 2.8 Potensiometer 10K ohm...11
Gambar 2.9 Kabel Penghubung ...12
Gambar 2.10 PCB Berlubang ...12
Gambar 2.11Tampilan Arduino IDE0022...13
Gambar 2.12 Menu BarArduino...14
Gambar 2.13 Pilihan board ...15
Gambar 2.14 Pilihan port ...16
Gambar 3.1 Diagram Blok ...21
Gambar 3.2 Skematik ...22
Gambar3.3Rangkaian LED dan Resistor ...23
Gambar 3.4 Startup flowchart ...24
Gambar 3.5 Sub Function Setup ...25
Gambar 3.6 Sub Function getMode ...25
Gambar 3.7 Sub Function Loop ...26
Gambar 3.8 Sub Function getCode ...27
Gambar 3.9 Sub Function lightOn ...28
Gambar 3.10 Sub Function numberOn ...29
Gambar 3.11 Sub Function practiceMode 1...30
Gambar 3.12 Sub Function practiceMode 2...32
Gambar 3.13 Sub Function testMode 1...33
Gambar 3.14 Sub Function testMode 2...34
(6)
Gambar 4.1 Startup Text ...36
Gambar 4.2 Input Mode Latihan ...37
Gambar 4.3 Mode Angka ...38
Gambar 4.4 Mode Huruf ...39
Gambar 4.5 Input Huruf dan Angka...40
Gambar 4.6
Fungsi ‘
C
lear’
...41
Gambar 4.7 Practice Mode ...42
Gambar 4.8 Test Mode dan Exam Mode Soal Random ...43
Gambar 4.9 Test Mode Jawaban Benar ...44
Gambar 4.10 Test Mode Jawaban Salah ...45
Gambar 4.11 Test Mode Kesempatan Jika Jawaban Salah ...46
Gambar 4.12 Exam Mode Jumlah JawabanBenar ...47
Gambar 4.13 Exam Mode Jumlah Jawaban Salah ...48
Gambar 4.14 Exam Mode Kembali ke Menu Utama...49
(7)
DAFTAR TABEL
Tabel 2.1 Spesifikasi Modul Arduino Duemilanove ATMega328 ...7
Tabel 2.2 Warna Resistor ...10
Tabel 2.3 File ...14
Tabel 2.4 Sketch ...14
Tabel 2.5 Tools ...15
Tabel 3.1 Karakteristik LED ...23
Tabel 4.1 Percobaan 1 Startup Text ...36
Tabel 4.2 Percobaan 2 Input Mode Latihan ...37
Tabel 4.3 Percobaan 3 Mode Angka ...38
Tabel 4.4 Percobaan 4 Mode Huruf ...39
Tabel 4.5 Percobaan 5 Input Huruf dan Angka...40
Tabel 4.6 Percobaan 6 Fungsi Clear ...41
Tabel 4.7 Percobaan 7 Practice Mode ...42
Tabel 4.8 Percobaan 8 Test Mode dan Exam Mode Soal Random ...43
Tabel 4.9 Percobaan 9 Test Mode Jawaban Benar...44
Tabel 4.10 Percobaan 10 Test Mode Jawaban Salah ...45
Tabel 4.11 Percobaan 11 Test Mode Kesempatan Jika Jawaban Salah ...46
Tabel 4.12 Percobaan 12 Exam Mode Jumlah Jawaban Benar...47
Tabel 4.13 Percobaan 13 Exam Mode Jumlah Jawaban Salah ...48
Tabel 4.14 Percobaan 14 Exam Mode Kembali ke Menu Utama ...49
(8)
LAMPIRAN A
(9)
#include <LCD3Wire.h> #include <Keypad.h> #define LCD_LINES 2 #define DOUT_PIN 11 #define STR_PIN 12 #define CLK_PIN 10
LCD3Wire lcd = LCD3Wire(LCD_LINES, DOUT_PIN, STR_PIN, CLK_PIN); const byte ROWS = 4;
const byte COLS = 3; char keys[ROWS][COLS] = { {'1','2','3'},
{'4','5','6'}, {'7','8','9'}, {'*','0','#'} };
byte rowPins[ROWS] = {9,A1,A2,A3}; byte colPins[COLS] = {A4,A5,0}; char letter;
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); void setup() {
lcd.init(); randomSeed(analogRead(A0)); pinMode(13, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); digitalWrite(13, LOW); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); }
void loop() { lcd.clear(); lcd.cursorTo(1,1); lcd.printIn("Semaphore Code"); lcd.cursorTo(2,2); lcd.printIn("Practice Set"); delay(2000); lcd.clear(); lcd.cursorTo(1,0); lcd.printIn("by:Daniel Yerimi"); lcd.cursorTo(2,5); lcd.printIn("0927051"); delay(2000);
char mode = getMode(); if(mode=='1') {
lcd.clear(); lcd.cursorTo(1,0);
(10)
delay(2000); practiceMode(); } else if(mode=='2') { lcd.clear();
lcd.cursorTo(1,0);
lcd.printIn("Test Mode"); delay(2000);
testMode();
} else if(mode=='3') { lcd.clear(); lcd.cursorTo(1,0); lcd.printIn("Exam Mode"); delay(2000); examMode(); } }
char getMode() { lcd.clear(); lcd.cursorTo(1,0); lcd.printIn("Choose Mode:"); delay(2000); lcd.clear(); lcd.cursorTo(1,0); lcd.printIn("1. Practice"); lcd.cursorTo(2,0); lcd.printIn("2. Test"); delay(2000); lcd.clear(); lcd.cursorTo(1,0); lcd.printIn("3. Exam");
char init_key = keypad.getKey(); while(1) {
init_key = keypad.getKey(); delay(100);
if(init_key=='1' || init_key=='2' || init_key=='3') break; }
return init_key; }
int getCode(int idx, int count) { int code;
if(idx==1 && count==1) { code = 1;
letter = 'A';
} else if(idx==1 && count==2) { code = 2;
letter = 'B';
} else if(idx==1 && count==3) { code = 3;
letter = 'C';
} else if(idx==2 && count==1) { code = 4;
letter = 'D';
} else if(idx==2 && count==2) { code = 5;
letter = 'E';
} else if(idx==2 && count==3) { code = 6;
letter = 'F';
} else if(idx==3 && count==1) { code = 7;
(11)
letter = 'G';
} else if(idx==3 && count==2) { code = 8;
letter = 'H';
} else if(idx==3 && count==3) { code = 9;
letter = 'I';
} else if(idx==4 && count==1) { code = 10;
letter = 'J';
} else if(idx==4 && count==2) { code = 11;
letter = 'K';
} else if(idx==4 && count==3) { code = 12;
letter = 'L';
} else if(idx==5 && count==1) { code = 13;
letter = 'M';
} else if(idx==5 && count==2) { code = 14;
letter = 'N';
} else if(idx==5 && count==3) { code = 15;
letter = 'O';
} else if(idx==6 && count==1) { code = 16;
letter = 'P';
} else if(idx==6 && count==2) { code = 17;
letter = 'Q';
} else if(idx==6 && count==3) { code = 18;
letter = 'R';
} else if(idx==7 && count==1) { code = 19;
letter = 'S';
} else if(idx==7 && count==2) { code = 20;
letter = 'T';
} else if(idx==7 && count==3) { code = 21;
letter = 'U';
} else if(idx==8 && count==1) { code = 22;
letter = 'V';
} else if(idx==8 && count==2) { code = 23;
letter = 'W';
} else if(idx==8 && count==3) { code = 24;
letter = 'X';
} else if(idx==9 && count==1) { code = 25;
letter = 'Y';
} else if(idx==9 && count==2) { code = 26;
letter = 'Z'; }
return code; }
(12)
void lightOn(int code) { if(code==1) { //A
digitalWrite(5, HIGH); digitalWrite(6, HIGH); } else if(code==2) { //B digitalWrite(5, HIGH); digitalWrite(7, HIGH); } else if(code==3) { //C digitalWrite(5, HIGH); digitalWrite(8, HIGH); } else if(code==4) { //D digitalWrite(13, HIGH); digitalWrite(5, HIGH); } else if(code==5) { //E digitalWrite(2, HIGH); digitalWrite(5, HIGH); } else if(code==6) { //F digitalWrite(3, HIGH); digitalWrite(5, HIGH); } else if(code==7) { //G digitalWrite(4, HIGH); digitalWrite(5, HIGH); } else if(code==8) { //H digitalWrite(6, HIGH); digitalWrite(7, HIGH); } else if(code==9) { //I digitalWrite(6, HIGH); digitalWrite(8, HIGH); } else if(code==10) { //J digitalWrite(13, HIGH); digitalWrite(3, HIGH); } else if(code==11) { //K digitalWrite(13, HIGH); digitalWrite(6, HIGH); } else if(code==12) { //L digitalWrite(2, HIGH); digitalWrite(6, HIGH); } else if(code==13) { //M digitalWrite(3, HIGH); digitalWrite(6, HIGH); } else if(code==14) { //N digitalWrite(4, HIGH); digitalWrite(6, HIGH); } else if(code==15) { //O digitalWrite(7, HIGH); digitalWrite(8, HIGH); } else if(code==16) { //P digitalWrite(13, HIGH); digitalWrite(7, HIGH); } else if(code==17) { //Q digitalWrite(2, HIGH); digitalWrite(7, HIGH); } else if(code==18) { //R digitalWrite(3, HIGH); digitalWrite(7, HIGH); } else if(code==19) { //S digitalWrite(4, HIGH); digitalWrite(7, HIGH); } else if(code==20) { //T digitalWrite(13, HIGH); digitalWrite(8, HIGH); } else if(code==21) { //U digitalWrite(2, HIGH);
(13)
digitalWrite(8, HIGH); } else if(code==22) { //V digitalWrite(13, HIGH); digitalWrite(4, HIGH); } else if(code==23) { //W digitalWrite(2, HIGH); digitalWrite(3, HIGH); } else if(code==24) { //X digitalWrite(2, HIGH); digitalWrite(4, HIGH); } else if(code==25) { //Y digitalWrite(3, HIGH); digitalWrite(8, HIGH); } else if(code==26) { //Z digitalWrite(3, HIGH); digitalWrite(4, HIGH); }
}
void numberOn(int code) { if(code==1) {
digitalWrite(5, HIGH); digitalWrite(6, HIGH); } else if(code==2) { digitalWrite(5, HIGH); digitalWrite(7, HIGH); } else if(code==3) { digitalWrite(5, HIGH); digitalWrite(8, HIGH); } else if(code==4) { digitalWrite(13, HIGH); digitalWrite(5, HIGH); } else if(code==5) { digitalWrite(2, HIGH); digitalWrite(5, HIGH); } else if(code==6) { digitalWrite(3, HIGH); digitalWrite(5, HIGH); } else if(code==7) { digitalWrite(4, HIGH); digitalWrite(5, HIGH); } else if(code==8) { digitalWrite(6, HIGH); digitalWrite(7, HIGH); } else if(code==9) { digitalWrite(6, HIGH); digitalWrite(8, HIGH); } else if(code==10) { digitalWrite(13, HIGH); digitalWrite(6, HIGH); }
}
void practiceMode() { lcd.clear();
lcd.printIn("Input:"); lcd.cursorTo(2,0); char key;
boolean numberMode = false; int idx_init = 255;
int idx_curr = 255; int num_idx_init = 255; int num_idx_curr = 255;
(14)
int counter = 0; int num_counter = 0; int num_code = 0; int i, code; while(1) {
if(numberMode == false) { key = keypad.getKey(); delay(100);
if(key!=NO_KEY) { switch(key) {
case '1': if(idx_init==255) idx_init = 1; idx_curr = 1;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '2': if(idx_init==255) idx_init = 2; idx_curr = 2;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '3': if(idx_init==255) idx_init = 3; idx_curr = 3;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '4': if(idx_init==255) idx_init = 4; idx_curr = 4;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '5': if(idx_init==255) idx_init = 5; idx_curr = 5;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
(15)
} break;
case '6': if(idx_init==255) idx_init = 6; idx_curr = 6;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '7': if(idx_init==255) idx_init = 7; idx_curr = 7;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '8': if(idx_init==255) idx_init = 8; idx_curr = 8;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '9': if(idx_init==255) idx_init = 9; idx_curr = 9;
if(idx_curr==idx_init) { if(counter<2) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break; case '*': lcd.clear();
lcd.printIn("Input:"); lcd.cursorTo(2,0); idx_init = 255; idx_curr = 255; counter = 0; break;
case '#': if(idx_init!=255 && counter>0) { code = getCode(idx_init, counter); lightOn(code);
delay(2000);
for(i=2; i<=8; i++) digitalWrite(i, LOW); digitalWrite(13, LOW);
lcd.clear();
lcd.printIn("Input:"); lcd.cursorTo(2,0); idx_init = 255;
(16)
idx_curr = 255; counter = 0; }
break;
case '0': if(idx_init==255) idx_init = 0; idx_curr = 0;
if(idx_curr==idx_init) { numberMode = true; lcd.clear(); idx_init = 255; idx_curr = 255; counter = 0;
lcd.printIn("Number Mode"); digitalWrite(13, HIGH); digitalWrite(2, HIGH); delay(1000); lcd.clear(); lcd.printIn("Input:"); lcd.cursorTo(2,0); digitalWrite(13, LOW); digitalWrite(2, LOW); } break; default: break; }
}
} else if(numberMode==true) { key = keypad.getKey(); delay(100);
if(key!=NO_KEY) { switch(key) {
case '1': if(num_counter<1) { num_counter++; num_idx_curr = 1; num_code = 1; lcd.print(key); }
break;
case '2': if(num_counter<1) { num_counter++; num_idx_curr = 2; num_code = 2; lcd.print(key); }
break;
case '3': if(num_counter<1) { num_counter++; num_idx_curr = 3; num_code = 3; lcd.print(key); }
break;
case '4': if(num_counter<1) { num_counter++; num_idx_curr = 4; num_code = 4; lcd.print(key); }
break;
case '5': if(num_counter<1) { num_counter++; num_idx_curr = 5; num_code = 5;
(17)
lcd.print(key); }
break;
case '6': if(num_counter<1) { num_counter++; num_idx_curr = 6; num_code = 6; lcd.print(key); }
break;
case '7': if(num_counter<1) { num_counter++; num_idx_curr = 7; num_code = 7; lcd.print(key); }
break;
case '8': if(num_counter<1) { num_counter++; num_idx_curr = 8; num_code = 8; lcd.print(key); }
break;
case '9': if(num_counter<1) { num_counter++; num_idx_curr = 9; num_code = 9; lcd.print(key); }
break;
case '0': if(num_idx_curr==num_idx_init) { if(num_counter<2) {
num_counter++; if(num_counter==2) { numberMode = false; lcd.clear();
num_idx_curr = 255; num_idx_init = 255; num_code = 0; num_counter=0; lcd.printIn("Letter Mode"); digitalWrite(13, HIGH); digitalWrite(3, HIGH); delay(1000); lcd.clear(); lcd.printIn("Input:"); lcd.cursorTo(2,0); digitalWrite(13, LOW); digitalWrite(3, LOW); break; }
num_code = 9 + num_counter; lcd.print(key);
} } break; case '*': lcd.clear();
lcd.printIn("Input:"); lcd.cursorTo(2,0); num_idx_curr = 255; num_idx_init = 255; num_code = 0;
(18)
num_counter=0; break;
case '#': if(num_counter>0){ if(num_code!=0) { numberOn(num_code); delay(2000);
for(i=2; i<=8; i++) digitalWrite(i, LOW); digitalWrite(13, LOW);
lcd.clear();
lcd.printIn("Input:"); lcd.cursorTo(2,0); num_idx_curr = 255; num_idx_init = 255; num_code = 0; num_counter=0; }
} break; default: break; }
} } }; }
void testMode() {
int i, code, question_code, idx, idx_question, count_question; boolean isAnswered = false;
boolean numberMode = false; char key;
int temp = 1; int idx_init = 255; int idx_curr = 255; int num_idx_init = 255; int num_idx_curr = 255; int counter = 0;
int num_counter = 0; int num_code = 0; while(1) {
idx = random(36) + 1; if(idx<=26) {
if((idx%3) != 0) {
idx_question = idx/3 + 1; count_question = idx%3; } else {
idx_question = idx/3 + 1; count_question = idx%3 + 3; }
question_code = getCode(idx_question, count_question); lightOn(question_code);
} else {
digitalWrite(13, HIGH); digitalWrite(2, HIGH); delay(1000);
digitalWrite(13, LOW); digitalWrite(2, LOW); idx_question = idx-26; numberOn(idx_question); } lcd.clear(); lcd.printIn("Input:"); lcd.cursorTo(2,0); while(isAnswered==false) {
(19)
if(numberMode == false) { key = keypad.getKey(); delay(100);
if(key!=NO_KEY) { switch(key) {
case '1': if(idx_init==255) idx_init = 1; idx_curr = 1;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '2': if(idx_init==255) idx_init = 2; idx_curr = 2;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '3': if(idx_init==255) idx_init = 3; idx_curr = 3;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '4': if(idx_init==255) idx_init = 4; idx_curr = 4;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '5': if(idx_init==255) idx_init = 5; idx_curr = 5;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '6': if(idx_init==255) idx_init = 6; idx_curr = 6;
(20)
if(counter<3) { counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '7': if(idx_init==255) idx_init = 7; idx_curr = 7;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '8': if(idx_init==255) idx_init = 8; idx_curr = 8;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '9': if(idx_init==255) idx_init = 9; idx_curr = 9;
if(idx_curr==idx_init) { if(counter<2) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break; case '*': lcd.clear();
lcd.printIn("Input:"); lcd.cursorTo(2,0); idx_init = 255; idx_curr = 255; counter = 0; break;
case '#': if(idx_init!=255 && counter>0) { code = getCode(idx_init, counter); if(code==question_code) {
lcd.clear();
lcd.printIn("Correct!"); delay(1000);
isAnswered=true; } else {
lcd.clear(); lcd.printIn("Wrong!"); delay(1000); if(temp==3) isAnswered=true; temp++; } if(isAnswered==true) {
(21)
for(i=2; i<=8; i++) digitalWrite(i, LOW); digitalWrite(13, LOW); } lcd.clear(); lcd.printIn("Input:"); lcd.cursorTo(2,0); idx_init = 255; idx_curr = 255; counter = 0; }
break;
case '0': if(idx_init==255) idx_init = 0; idx_curr = 0;
if(idx_curr==idx_init) { numberMode = true; lcd.clear(); idx_init = 255; idx_curr = 255; counter = 0;
lcd.printIn("Number Mode"); delay(1000); lcd.clear(); lcd.printIn("Input:"); lcd.cursorTo(2,0); } break; default: break; }
}
} else if(numberMode==true) { key = keypad.getKey(); delay(100);
if(key!=NO_KEY) { switch(key) {
case '1': if(num_counter<1) { num_counter++; num_idx_curr = 1; num_code = 1; lcd.print(key); }
break;
case '2': if(num_counter<1) { num_counter++; num_idx_curr = 2; num_code = 2; lcd.print(key); }
break;
case '3': if(num_counter<1) { num_counter++; num_idx_curr = 3; num_code = 3; lcd.print(key); }
break;
case '4': if(num_counter<1) { num_counter++; num_idx_curr = 4; num_code = 4; lcd.print(key); }
break;
(22)
num_counter++; num_idx_curr = 5; num_code = 5; lcd.print(key); }
break;
case '6': if(num_counter<1) { num_counter++; num_idx_curr = 6; num_code = 6; lcd.print(key); }
break;
case '7': if(num_counter<1) { num_counter++; num_idx_curr = 7; num_code = 7; lcd.print(key); }
break;
case '8': if(num_counter<1) { num_counter++; num_idx_curr = 8; num_code = 8; lcd.print(key); }
break;
case '9': if(num_counter<1) { num_counter++; num_idx_curr = 9; num_code = 9; lcd.print(key); }
break;
case '0': if(num_idx_curr==num_idx_init) { if(num_counter<2) {
num_counter++; if(num_counter==2) { lcd.clear();
num_idx_curr = 255; num_idx_init = 255; num_code = 0; num_counter=0; lcd.printIn("Letter Mode"); delay(1000); lcd.clear(); lcd.printIn("Input:"); lcd.cursorTo(2,0); break; }
num_code = 9 + num_counter; lcd.print(key);
} } break; case '*': lcd.clear();
lcd.printIn("Input:"); lcd.cursorTo(2,0); num_idx_curr = 255; num_idx_init = 255; num_code = 0; num_counter=0; break;
(23)
case '#': if(num_counter>0){ if(num_code!=0) { if(num_code==idx_question) { lcd.clear(); lcd.printIn("Correct!"); delay(1000); isAnswered=true; } else {
lcd.clear(); lcd.printIn("Wrong!"); delay(1000); if(temp==3) isAnswered=true; temp++; } if(isAnswered==true) {
for(i=2; i<=8; i++) digitalWrite(i, LOW); digitalWrite(13, LOW);
}
lcd.clear();
lcd.printIn("Input:"); lcd.cursorTo(2,0); num_idx_curr = 255; num_idx_init = 255; num_code = 0; num_counter=0; }
} break; default: break; }
} } };
temp = 1;
isAnswered = false; numberMode = false; };
}
void examMode() {
int code, question_code, idx, idx_question, count_question; boolean isAnswered = false;
boolean numberMode = false; char key;
int i = 0; int no = 0; int correct = 0; int wrong = 0; int idx_init = 255; int idx_curr = 255; int num_idx_init = 255; int num_idx_curr = 255; int counter = 0;
int num_counter = 0; int num_code = 0; lcd.clear(); lcd.cursorTo(1,1); lcd.printIn("Answer 10"); lcd.cursorTo(2,3); lcd.printIn("Questions!"); delay(1000); while(no<10) {
(24)
if(idx<=26) {
if((idx%3) != 0) {
idx_question = idx/3 + 1; count_question = idx%3; } else {
idx_question = idx/3 + 1; count_question = idx%3 + 3; }
question_code = getCode(idx_question, count_question); lightOn(question_code);
} else {
digitalWrite(13, HIGH); digitalWrite(2, HIGH); delay(1000);
digitalWrite(13, LOW); digitalWrite(2, LOW); idx_question = idx-26; numberOn(idx_question); } lcd.clear(); lcd.printIn("Input:"); lcd.cursorTo(2,0); while(isAnswered==false) { if(numberMode == false) { key = keypad.getKey(); delay(100);
if(key!=NO_KEY) { switch(key) {
case '1': if(idx_init==255) idx_init = 1; idx_curr = 1;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '2': if(idx_init==255) idx_init = 2; idx_curr = 2;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '3': if(idx_init==255) idx_init = 3; idx_curr = 3;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '4': if(idx_init==255) idx_init = 4; idx_curr = 4;
(25)
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '5': if(idx_init==255) idx_init = 5; idx_curr = 5;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '6': if(idx_init==255) idx_init = 6; idx_curr = 6;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '7': if(idx_init==255) idx_init = 7; idx_curr = 7;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '8': if(idx_init==255) idx_init = 8; idx_curr = 8;
if(idx_curr==idx_init) { if(counter<3) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
} break;
case '9': if(idx_init==255) idx_init = 9; idx_curr = 9;
if(idx_curr==idx_init) { if(counter<2) {
counter++;
code = getCode(idx_init, counter); lcd.cursorTo(2,0);
lcd.print(letter); }
(26)
break; case '*': lcd.clear();
lcd.printIn("Input:"); lcd.cursorTo(2,0); idx_init = 255; idx_curr = 255; counter = 0; break;
case '#': if(idx_init!=255 && counter>0) { isAnswered=true;
code = getCode(idx_init, counter); if(code==question_code) {
correct++; lcd.clear();
lcd.printIn("Correct!"); delay(1000);
} else { wrong++; lcd.clear();
lcd.printIn("Wrong!"); delay(1000);
}
for(i=2; i<=8; i++) digitalWrite(i, LOW); digitalWrite(13, LOW); lcd.clear(); if(no<9) { lcd.printIn("Input:"); lcd.cursorTo(2,0); }
idx_init = 255; idx_curr = 255; counter = 0; }
break;
case '0': if(idx_init==255) idx_init = 0; idx_curr = 0;
if(idx_curr==idx_init) { numberMode = true; lcd.clear(); idx_init = 255; idx_curr = 255; counter = 0;
lcd.printIn("Number Mode"); delay(1000); lcd.clear(); lcd.printIn("Input:"); lcd.cursorTo(2,0); } break; default: break; }
}
} else if(numberMode==true) { key = keypad.getKey(); delay(100);
if(key!=NO_KEY) { switch(key) {
case '1': if(num_counter<1) { num_counter++; num_idx_curr = 1; num_code = 1; lcd.print(key); }
(27)
break;
case '2': if(num_counter<1) { num_counter++; num_idx_curr = 2; num_code = 2; lcd.print(key); }
break;
case '3': if(num_counter<1) { num_counter++; num_idx_curr = 3; num_code = 3; lcd.print(key); }
break;
case '4': if(num_counter<1) { num_counter++; num_idx_curr = 4; num_code = 4; lcd.print(key); }
break;
case '5': if(num_counter<1) { num_counter++; num_idx_curr = 5; num_code = 5; lcd.print(key); }
break;
case '6': if(num_counter<1) { num_counter++; num_idx_curr = 6; num_code = 6; lcd.print(key); }
break;
case '7': if(num_counter<1) { num_counter++; num_idx_curr = 7; num_code = 7; lcd.print(key); }
break;
case '8': if(num_counter<1) { num_counter++; num_idx_curr = 8; num_code = 8; lcd.print(key); }
break;
case '9': if(num_counter<1) { num_counter++; num_idx_curr = 9; num_code = 9; lcd.print(key); }
break;
case '0': if(num_idx_curr==num_idx_init) { if(num_counter<2) {
num_counter++; if(num_counter==2) { numberMode = false; lcd.clear();
(28)
num_idx_curr = 255; num_idx_init = 255; num_code = 0; num_counter=0; lcd.printIn("Letter Mode"); delay(1000); lcd.clear(); lcd.printIn("Input:"); lcd.cursorTo(2,0); break; }
num_code = 9 + num_counter; lcd.print(key);
} } break; case '*': lcd.clear();
lcd.printIn("Input:"); lcd.cursorTo(2,0); num_idx_curr = 255; num_idx_init = 255; num_code = 0; num_counter=0; break;
case '#': if(num_counter>0){ if(num_code!=0) { isAnswered = true;
if(num_code==idx_question) { correct++;
lcd.clear();
lcd.printIn("Correct!"); delay(1000);
} else { wrong++; lcd.clear();
lcd.printIn("Wrong!"); delay(1000);
}
for(i=2; i<=8; i++) digitalWrite(i, LOW); digitalWrite(13, LOW); lcd.clear(); if(no<9) { lcd.printIn("Input:"); lcd.cursorTo(2,0); }
num_idx_curr = 255; num_idx_init = 255; num_code = 0; num_counter=0; }
} break; default: break; }
} } };
isAnswered = false; numberMode = false; no++;
};
lcd.clear(); lcd.cursorTo(1,6);
(29)
lcd.printIn("DONE"); delay(2000);
while(keypad.getKey() == NO_KEY) { lcd.clear();
lcd.cursorTo(1,0);
lcd.printIn("Correct: "); lcd.cursorTo(2,0);
for(i=0; i<correct; i++) { lcd.print('o');
delay(100); }
if(keypad.getKey() != NO_KEY) break; delay(3000);
if(keypad.getKey() != NO_KEY) break; lcd.clear();
lcd.cursorTo(1,0); lcd.printIn("Wrong: "); lcd.cursorTo(2,0); for(i=0; i<wrong; i++) { lcd.print('x');
delay(100); }
if(keypad.getKey() != NO_KEY) break; delay(3000);
}; }
(30)
LAMPIRAN B
DIAGRAM ALIR
(31)
B
-
1
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir Start, Setup, Loop, dan getMode Sumber: pribadi
(32)
B
-
2
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir getCode 1 Sumber: pribadi
(33)
B
-
3
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir getCode 2 Sumber: pribadi
(34)
B
-
4
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir lightOn 1 Sumber: pribadi
(35)
B
-
5
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir lightOn 2 Sumber: pribadi
(36)
B
-
6
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir numberOn Sumber: pribadi
(37)
B
-
7
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir practiceMode 1 Sumber: pribadi
(38)
B
-
8
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir practiceMode 2 Sumber: pribadi
(39)
B
-
9
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir practiceMode 3 Sumber: pribadi
(40)
B
-
1
0
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir practiceMode 4 Sumber: pribadi
(41)
B
-
1
1
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir practiceMode 5 Sumber: pribadi
(42)
testMode
int code, question_code, idx, idx_question,
count_question; boolean isAnswered =
false; boolean numberMode =
false; char key; int temp = 1; int idx_init = 255; int idx_curr = 255; int num_idx_init = 255; int num_idx_curr = 255;
int counter = 0; int num_counter = 0;
int num_code = 0;
Idx = random(36)+1;
idx<=26 ?
(idx%3) != 0 ? Y
idx_question=idx/3 + 1; count_question=idx%3;
Y
idx_question=idx/3 + 1; count_question =
idx%3 + 3; N question_code = getCode(idx_question, count_question); getCode(idx, code) lightOn(question_code) lightOn(code)
LED 13 on; LED 2 on; Delay 1000ms;
LED 13 off; LED 2 off; idx_question = idx-26; numberOn(idx_question); N
Clear LCD;
LCD display Input: X3
Ans
temp = 1; isAnswered = false; numberMode=false;
numberOn(code)
Ga mbar Diagra m A lir testMode 1 Sumber: pribadi
(43)
B
-
1
3
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir testMode 2 Sumber: pribadi
(44)
B
-
1
4
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir testMode 3 Sumber: pribadi
(45)
B
-
1
5
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir testMode 4 Sumber: pribadi
(46)
B
-
1
6
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir testMode 5 Sumber: pribadi
(47)
B
-
1
7
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir testMode 6 Sumber: pribadi
(48)
examMode
int code, question_code, idx, idx_question, count_question, no,
correct, wrong; boolean isAnswered =
false; boolean numberMode =
false; char key; int temp = 1; int idx_init = 255; int idx_curr = 255; int num_idx_init = 255; int num_idx_curr = 255;
int counter = 0; int num_counter = 0;
int num_code = 0;
Idx = random(36)+1;
idx<=26 ?
(idx%3) != 0 ? Y
idx_question=idx/3 + 1; count_question=idx%3;
Y
idx_question=idx/3 + 1; count_question =
idx%3 + 3; N question_code = getCode(idx_question, count_question); getCode(idx, code) lightOn(question_code) lightOn(code)
LED 13 on; LED 2 on; Delay 1000ms;
LED 13 off; LED 2 off; idx_question = idx-26; numberOn(idx_question); N
Clear LCD;
LCD display Input:
X6
Ans2
no++; isAnswered = false; numberMode=false;
numberOn(code) no < 10 ?
Y
Calc N
Calc
Clear LCD;
LCD display DONE
Delay 2000ms; Input keypad keypad = NO_KEY ? Clear LCD; Lcd.print(correct); Lcd.print(wrong); Delay 3000ms; Y Key = keypad; Delay 100ms;
Return N
Ga mbar Diagra m A lir e xa mMode 1 Sumber: pribadi
(49)
B
-
1
9
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir examMode 2 Sumber: pribadi
(50)
B
-
2
0
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir examMode 3 Sumber: pribadi
(51)
B
-
2
1
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir examMode 4 Sumber: pribadi
(52)
B
-
2
2
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir examMode 5 Sumber: pribadi
(53)
B
-
2
3
U
n
iv
e
rs
itas
K
ri
st
e
n
M
ar
an
ath
a
Gambar Diagram Alir examMode 6 Sumber: pribadi
(54)
LAMPIRAN C
(55)
G
a
m
b
a
r
S
k
e
m
a
ti
k
S
u
m
b
e
r:
p
ri
b
a
d
(56)
Ga mbar A lat Sumber: pribadi
(57)
BAB I
PENDAHULUAN
1.1
Latar Belakang
Seiring dengan berkembangnya teknologi di jaman modern, teknik
berkomunikasi pun berkembang dengan pesat. Teknologi infra-red, RFID
(Radio Frequency Identification), bluetooth, wi-fi, sudah tidak asing lagi
terdengar di masyarakat umum. Dengan teknologi-teknologi tersebut,
kemudahan dalam berkomunikasi jarak jauh bukanlah hal yang mustahil.
Namun dalam cara berkomunikasi, pada bidang kelautan atau pra muka
masih digunakan teknik berkomunikasi dengan bahasa Semaphore
bendera. Semaphore bendera adalah sebuah sistem untuk mengirim
informasi jarak jauh berupa sinyal visual dengan menggunakan bendera
kecil,
tongkat,
atau
tangan.
Informasi- informasi
kemudian
diinterpretasikan dalam posisi bendera.
Melihat Semaphore bendera yang masih digunakan hingga saat ini, maka
pembuatan perangkat keras pelatihan bahasa Semaphore bendera dirasa
perlu untuk membantu melatih pembelajaran kode-kode yang digunakan
dalam bahasa Semaphore bendera.
1.2
Identifikasi Masalah
Adapun masalah yang akan dibahas pada Tugas Akhir ini adalah
bagaimana cara membuat perangkat keras pelatihan bahasa Semaphore
bendera?
(58)
1.3
Tujuan
Tujuan dari Tugas Akhir ini adalah membuat perangkat keras pelatihan
bahasa bendera Semaphore.
1.4
Pembatasan Masalah
Batasan masalah pada Tugas Akhir ini antara lain:
1.
Bahasa Semaphore yang digunakan dalam perancangan alat dan
tipe-tipe latihan adalah bahasa Semaphore bendera.
2.
Alat ditujukan untuk pelatihan kode-kode Semaphore bendera berupa
informasi huruf atau angka, bukan pelatihan pengiriman kode
Semaphore bendera.
3.
Modul yang digunakan adalah Arduino module Severino Duemilanove
dengan ATMega 328.
4.
LCD yang digunakan adalah LCD 16x2.
5.
Keypad yang digunakan adalah keypad 3x4.
6.
Perangkat lunak yang digunakan adalah Arduino IDE0022.
1.5
Sistematika Penulisan
BAB 1: PENDAHULUAN
Berisi pembahasan singkat mengenai bahasa Semaphore bendera
dan garis besar laporan Tugas Akhir.
BAB 2: LANDASAN TEORI
Berisi penjelasan tentang bahasa Semaphore bendera, perangkat
keras, dan perangkat lunak yang digunakan dalam perancangan
dan pembuatan alat.
BAB 3: PERANCANGAN
Berisi tentang perancangan perangkat keras dan perangkat lunak
yang digunakan dalam pembuatan alat.
(59)
BAB 4: PENGAMATAN
Berisi tentang hasil pengamatan dari perangkat keras pelatihan
bahasa Semaphore bendera.
BAB 5: KESIMPULAN DAN SARAN
Berisi tentang kesimpulan dan saran yang diperoleh dari
perangkat keras pelatihan bahasa Semaphore bendera.
(60)
BAB V
KESIMPULAN DAN SARAN
5.1
Kesimpulan
Kesimpulan dari Tugas Akhir yang telah dilakukan adalah:
1.
Perangkat keras pelatihan bahasa Semaphore bendera telah berhasil
dibuat.
2.
Dengan adanya tiga jenis latihan, pembelajaran bahasa Semaphore
bendera dapat dilakukan dengan lebih bervariasi.
5.2
Saran
Untuk pelatihan bahasa Semaphore bendera dengan tingkat kesulitan yang
lebih tinggi, disarankan agar alat dapat menerima input / memberikan soal
berupa kalimat. Akan tetapi, untuk memungkinkan hal ini maka diperlukan
LCD dengan jumlah kolom dan baris yang lebih banyak.
(61)
Jurnal Tugas Akhir
Perangkat Keras Pelatihan Bahasa Semaphore Bendera
Flag Semaphore Language Training Hardware
Daniel Yerimi (0927051)
Abstrak
Dala m cara berko munikasi, pada bidang kelautan atau pramu ka masih digunakan teknik berko munikasi dengan bahasa Semaphore bendera. Se maphore bendera adalah sebuah sistem untuk mengirim informasi ja rak jauh berupa sinyal visual dengan menggunakan bendera kecil, tongkat, atau tangan. Informasi-informasi ke mud ian diinterpretasikan dala m posisi bendera.
Melihat Se maphore bendera yang masih d igunakan hingga saat ini, ma ka pe mbuatan perangkat keras pelatihan bahasa Semaphore bendera dirasa perlu untuk me mbantu me latih pe mb ela jaran kode-kode yang digunakan dala m bahasa Semaphore bendera.
Dala m perancangan dan pembuatan alat, digunakan modul Arduino Due milanove dengan ATMega328 sebagai
microcontroller yang mengendalikanLED untuk mengga mbarkan de lapan arah yang digunakan dalam bahasa
Se maphore bendera, dan LCD untuk mena mp ilkan input. Sela in itu, dala m perancangan program dibuat tiga jenis mode, yaitu: Practice Mode, Test Mode, dan Exa m Mode.
Dengan adanya tiga jenis mode, pembela jaran bahasa Se maphore benderadapat dilaku kan dengan lebih bervariasi.
Kata kunci: Se maphore bendera, mikrokontroler ATMega328, modul Arduino Due milanove
I. Pendahuluan
Seiring dengan berkembangnya teknologi di ja man modern, teknik berko mun ikasi pun berke mbang dengan pesat.Teknologi infra-red, RFID (RadioFrequencyIdentification), bluetooth, wi-fi, sudah tidak asing lagi terdengar di masyarakat umu m.Dengan teknologi-teknologi tersebut, kemudahan dalam berko munikasi ja rak jauh bukanlah hal yang mustahil.
Na mun dala m cara berko munikasi, pada bidang ke lautan atau pramu ka masih digunakan tekn ik berko mun ikasi dengan bahasa Semaphore bendera. Semaphore bendera adalah sebuah sistem untuk mengirim info rmasi ja rak jauh berupa sinyal visual dengan menggunakan bendera kecil, tongkat, atau tangan. Informasi-informasi ke mudian diinterpretasikan dala m posisi bendera.
Melihat Se maphore bendera yang masih d igunakan hingga saat ini, ma ka pe mbuatan perangkat keras pelatihan bahasa Semaphore bendera dirasa perlu untuk me mbantu me latih pe mbela jaran kode -kode yang digunakan dala m bahasa Semaphore bendera.
Batasan masalah pada Tugas Akhir in i antara lain :
1. Bahasa Semaphore yang digunakan dalam perancangan alat dan tipe -tipe latihan adalah bahasa Semaphore bendera.
2. Alat ditujukan untuk pelatihan kode-kode Semaphore bendera berupa informasi huruf atau angka, bukan pelatihan pengiriman kode Se maphore bendera.
3. Modul yang digunakan adalah Arduino module Severino Due milanove dengan ATMega 328.
4. LCD yang digunakan adalah LC D 16x2.
5. Keypad yang digunakan adalah k eypad 3x4.
6. Perangkat lunak yang digunakan adalah Arduino IDE0022.
II. Landasan Teori
2.1 Semaphore Bendera
Se maphore secara umu m ada lah suatu cara untuk mengirim dan menerima informasi berupa kode dengan menggunakan bendera, dayung, tongkat, atau tangan. Akan tetapi, istilah yang tepat untuk menggambarkan cara ini adalah flag Se maphore atau Semaphore bendera. Hal in i dikarenakan istilah Se maphore digunakan untuk beberapa cara pengiriman informasi bukan hanya terbatas pada penggunaan bendera saja, na mun istilah Se maphore digunakan juga dala m pe mrogra man, sinyal pada jalur re l kereta, dan Se maphore line. Sistem Se maphore bendera menggunakan dua tongkat pendek dengan bendera persegi, di mana orang yang me la kukan Se maphore mengirim dan menerima pesan dalam bentuk huruf atau angka.Satu tangan masing -masing me megang sebuah bendera, kemudian direntangkan dalam delapan arah.Bendera yang digunakan
(62)
Jurnal Tugas Akhir
berukuran 45c m x 45cm yang ditempel pada tongkat pendek.Warna pada bendera dibedakan berdasarkan tempat sinyal dikirim (laut atau daratan).Di laut, bendera berwarna merah dan kuning, sedangkan di darat, bendera berwarna putih dan biru.
Ga mbar 1 Kode Se maphore Bendera Sumber: www.bra ingle.co m
Untuk membuat kode angka, sebelum memulai kode harus diawali dengan kode “Numbers”, dan jika ingin
ke mbali me mbuat kode huruf, ma ka harus me mbuat kode “Letters” (lihat Gambar 1).
2.2 Perangkat Keras
Dala m pembuatan perangkat keras pelatihan bahasa Semaphore bendera, digunakan beberapa komponen dala m perancangannya.
2.2.1 Module Ar duino Due milanove dengan ATMeg a328
Ga mbar 2 Arduino Due milanove dengan ATMega328 Sumber: arduino.cc
Arduino Duemilanove (lihat Ga mba r 2) adalah sebuah modul yang menggunakan microcontroller AVR ATMega328. Modul in i me miliki 14 pin input/output digital (6 d iantaranya dapat digunakan sebagai Pulse Width Modulation atau PWM), 6 input analog, sebuah kristal osilator 16MHz, koneksi serial RS232, dan tombol re set (lihat Tabel 1).
(63)
Jurnal Tugas Akhir
Tabel 1 Spesifikasi modul Arduino Due milanove denganATMega328
Microcontroller ATMega 328
Tegangan Operasi 5V
Tegangan Input (reko mendasi) 7-12V
Tegangan Input (batas) 6-20V
Pin Digital I/O 14 (6 pin dapat digunakan sebagai PWM output)
Pin Input Analog 6 (A 0-A5)
Arus DC per Pin I/O 40mA
Arus DC untuk Pin 3.3V 50mA
Flash Memory 32KB (2KB untuk bootloader)
SRAM 2KB
EEPROM 1KB
Clock Speed 16MHz
Sumber: http://arduino.cc/en/Main/arduinoBoardDuemilanove
2.2.2 LCD 16x2
Liquid Crystal Display atau disebut LCD (lihat Ga mbar 3) adalah sebuah alat display yang
menggunakan elekt roda dan filter terpolarisasi untuk me milih pixel mana yang akan dita mpilkan dan tidak dita mpilkan.
Ga mbar 3 LCD 16x2 JHD162A Sumber: pribadi
2.2.3 IC HEF4094
HEF4094 (lihat Ga mbar 4) adalah sebuah Integrated Circuit (IC) yang berfungsi sebagai 8-stage
serial shift register.IC ini dapat menerima input data serial dan menjadikannya output data
paralel.
Ga mbar 4 IC HEF4094 Sumber: pribadi
2.2.4 Keypad 3x4
Keypad (lihat Ga mbar 5) me rupakan sekumpulan to mbol-to mbol yang tersusun dalam sebuah
blok dan dapat ditemukan pada hamp ir se mua k eyboard komputer dan me mungkinkan untuk meng-input informasi nu merik maupun huruf.
Ga mbar 5 Keypad 3x4 Sumber: pribadi
2.2.5 Resistor
Resistor (lihat Ga mbar 6) digunakan sebagai penahan arus listrik dan merupakan salah satu
ko mponen yang paling sering digunakan.Besar tahanan dalam sebuah resistor ditentukan dari ju mlah ge lang dan warna gelang tersebut.
(64)
Jurnal Tugas Akhir
2.2.6 LED
Light Emitting Diode atau LED (lihat Ga mbar 7) adalah sumber cahaya semikonduktor dan
banyak digunakan pada berbagai peralatan ele ktronik.
Ga mbar 7 Red LED Sumber: pribadi
2.2.7 Pote nsiome ter
Potensiometer (lihat Ga mbar 8) adalah resistor tiga terminal dengan sambungan geser yang me mbentuk pe mbagi tegangan yang dapat diatur. Dala m penggunaannya, potensiometer dapat digambarkan sebagai dua buah resistor yang disusun secara seri dengan tegangan output diambil di antara dua resistor tersebut. Dalam perancangan alat, digunakan potensiometer dengan besaran 10K ohm.
Ga mbar 8 Potensiometer 10K ohm Sumber: pribadi
Potensiometer digunakan sebagai pengatur tingkat keta ja man ga mbar (contrast) pada LCD dengan tegangan maksimu m 5V.
2.3 Perangkat Lunak
Dala m pe mbuatan perangkat keras pelatihan bahasa Semaphore, digunakan perangkat lunak Arduino IDE0022 (lihat Ga mbar 9) yang berfungsi sebagai pengunggah source code dari PC ke modul Arduino.
Ga mbar 9 Ta mp ilan Arduino IDE0022 Sumber: pribadi
(65)
Jurnal Tugas Akhir
III. Pe rancangan
3.1 Perancangan Perangkat Keras
Dala m pe mbuatan perangkat keras pelatihan bahasa Semaphore bendera, terdapat beberapa rancangan ko mponen.
3.1.1 Diagram Blok
LCD 16x2 JHD162A
Keypad 3x4 HEF4094
Module Arduino LED
Ga mbar 10 Diagra m Blok Sumber: pribadi
Secara garis besar, diagra m blo k (lihat Ga mbar 10) mengga mbarkan k eypad yang digunakan sebagai penerima input yang kemudian diproses oleh modul Arduino. Hasil eksekusi akan ditamp ilkan pada LCD dala m bentuk huruf / angka. Pada mode “Practice”, huruf/angka yang diinputkan akan ditampilkan pada LED. Pada mode “Test” dan “Exam”, alat akan mengha-silkan soal random yang dita mpilkan pada LED.
3.1.2 Skematik
Dala m perancangan alat, ske matik yang digunakan tampak seperti pada Ga mba r 11.LC D yang digunakan berukuran 16 kolo m dan 2 baris.LCD d igunakan untuk mena mpilkan panduan latihan,
input, dan teks.IC HEF4094 digunakan untuk mengurangi ju mlah pin yang dibutuhkan LCD dari 7 pin (RS, R/W, Enable, D4-D7) men jadi 3 pin pada Arduino.
Ga mbar 11 Ske mat ik Sumber: pribadi
3.2 Perancangan Perangkat Lunak
Dala m pe mbuatan perangkat keras pelatihan bahasa Semaphore bendera, terdapat tiga mode, yaitu: 1. Practice Mode
Dala m mode ini, input berupa huruf / angka akan dita mpilkan kode Se maphore benderanya pada LED. 2. Test Mode
Dala m mode in i, a lat akan me mberikan soal random. Jika soal dija wab dengan benar, ma ka pada LCD
akan tampil “Correct!”, jika salah maka akan tampil “Wrong!”. Tiga kesempatan akan diberikan jika
jawaban salah, ke mudian alat a kan me mbe rikan soal random berikutnya. 3. Exa m Mode
Dala m mode ini, alat akan me mbe rikan sepuluh soal random berupa huruf / angka yang ditampilkan pada LED. Pada akhir mode, ju mlah jawaban benar dan salah akan dihitung, lalu ditampi lkan pada
LCD.
(66)
Jurnal Tugas Akhir
Start
Include library; Create lcd object;
Create keypad object; Char letter;
Setup
Loop
Stop
Ga mbar 12Startup Flowchart Sumber: pribadi
Ketika program dimu lai (lihat Ga mba r 12), library Keypad dan LCD3Wires akan dipanggil, dan konfigurasi pin akan dilaku kan sebagai output / input (lihat Ga mbar 13).
Setup
Initialize lcd; randomSeed(analog
Read(A0))); Set pin mode;
Return
Ga mbar 13Sub Function Setup Sumber: pribadi
Setelah in isialisasi k eypad dan LCD, pilihan modeakan dita mpilkan, dan program akan menunggu input dari pilihan tersebut (lihat Ga mbar 14).
getMode
Clear LCD; LCD display mode;
Char init_key;
Input keypad
Init_key = keypad; Delay 100ms;
init_key = 1 || init_key = 2 || init_key = 3 ?
N
Return init_key Y
(67)
Jurnal Tugas Akhir
Loop
Clear LCD; LCD display startup
text; Char mode =
getMode();
getMode
mode = 1 ? N mode = 2 ? N mode = 3 ?
Clear LCD; LCD display Practice Mode; Delay 2000ms; practiceMode();
Y
practiceMode
Clear LCD; LCD displa Test
Mode; Delay 2000ms;
testMode();
testMode
Clear LCD; LCD displa E am
Mode; Delay 2000ms; examMode(); examMode Y Y N
Ga mbar 15Sub Function Loop Sumber: pribadi
Setelah mode dip ilih, maka sub functionmodeakan dipanggil sesuai dengan pilihan (lihat Ga mbar 15). Mode 1 adalah Practice Mode, mode 2 ada lah Test Mode, dan mode 3 adalah Test Mode.
Pada Practice Mode dan Test Mode, programakan mengulang latihan terus -menerus hingga tombol reset pada Arduino ditekan. Pada Exa m Mode, ju mlah soal dibatasi sebanyak sepuluh buah.
IV. Pengamatan
Dari hasil percobaan yang dilakukan terhadap perangkat keras pelatihan bahasa Semaphore, didapatkan hasil pengamatan sebagai berikut:
Tabel 2 Percobaan 1 Startup Text
Test Case Hasil yang Diharapkan Status
Ketika a lat menyala, mena mpilkan startuptext pada LCD (Ga mbar 16).
Alat mena mpil-kan startup text pada LCD. Berhasil Sumber: Pribadi
Ganbar 16Startup Text Sumber: pribadi
Tabel 3 Percobaan 2 InputMode Latihan
Test Case Hasil yang Diharapkan Status
Program tidak akan lanjut jika pengguna
belum me masukkan mode (Ga mbar 17).
Program akan menunggu input yang tepat dari
pengguna.
Berhasil Sumber: Pribadi
(68)
Jurnal Tugas Akhir
Ga mbar 17Input Mode Latihan Sumber: pribadi
Tabel 4 Percobaan 3 Mode Angka
Test Case Hasil yang Diharapkan Status
Dala m mode huruf, pengguna dapat mengganti ke mode angka dengan menekan
tombol „0‟ (Gambar 18).
Mode angka dapat digunakan setelah menekan
„0‟. Berhasil
Sumber: Pribadi
Ganbar 18Mode Angka Sumber: pribadi
Tabel 5 Percobaan 4 Mode Huruf
Test Case Hasil yang Diharapkan Status
Dala m mode angka, pengguna dapat mengganti ke mode huruf dengan menekan
tombol „0‟ dua kali (Gambar 19).
Mode huruf dapat digunakan setelah menekan
„0‟ dua kali. Berhasil
Sumber: Pribadi
Ganbar 19Mode huruf Sumber: pribadi
(69)
Jurnal Tugas Akhir
Tabel 6 Percobaan 5 Input Huruf dan Angka
Test Case Hasil yang Diharapkan Status
Dala m setiap mode, pengguna dapat
menginput satu huruf/angka saja (Ga mbar 20).
Dala m setiap mode, hanya dapat menginput satu huruf / angka saja.
Berhasil Sumber: Pribadi
Ganbar 20Input Huruf dan Angka Sumber: pribadi
Tabel 7 Percobaan 6 Pract ice Mode
Test Case Hasil yang Diharapkan Status
Dala m Practice Mode, jika pengguna telah me mbe rikan input dan menekan to mbol
„exe.‟, maka hasilnya akan ditampilkan pada
LED (Ga mbar 21).
LED mena mpilkan hasil yang sesuai dengan input pengguna.
Berhasil
Sumber: Pribadi
Ganbar 21 Practice Mode Sumber: pribadi
Tabel 8 Percobaan 7 Test Mode dan Exa m Mode Soa l Random
Test Case Hasil yang Diharapkan Status
Dala m Test Mode dan Exa m Mode, alat me mbe rikan soal random (Ga mbar 22).
Alat me mberikan soal random. Berhasil Sumber: Pribadi
Ganbar 22 Test Mode dan Exa m Mode Soal Random Sumber: pribadi
(70)
Jurnal Tugas Akhir
Tabel 9 Percobaan 8 Exa m Mode Ke mba li ke Menu Uta ma
Test Case Hasil yang Diharapkan Status
Dala m Exa m Mode, setelah LCD mena mp ilkan ju mlah ja waban benar dan salah, alat akan menunggu input apapun untuk ke mbali ke menu utama (Ga mba r 23).
Alat menunggu input apapun untuk ke mba li ke menu uta ma.
Berhasil
Sumber: Pribadi
Ganbar 23 Exa m Mode Ke mbali ke Menu Uta ma Sumber: pribadi
Tabel 10 Percobaan 9 Practice dan Test Mode Kembali ke Menu Uta ma
Test Case Hasil yang Diharapkan Status
Dala m Practice Mode dan Test Mode, jika tombol reset d itekan a kan ke mba li ke menu utama (Ga mbar 24).
Ke mbali ke menu uta ma jika to mbol reset ditekan.
Berhasil
Sumber: Pribadi
Ganbar 24 Practice dan Test Mode Kembali ke Menu Uta ma Sumber: pribadi
V. Kesimpulan dan Saran
5.1 Kesimpulan
Kesimpulan dari Tugas Akhir yang telah dilaku kan adalah:
1. Perangkat ke ras pelatihan bahasa Semaphore bendera telah berhasil dibuat.
2. Dengan adanya tiga jenis latihan, pembelaja ran bahasa Semaphore bendera dapat dilakukan dengan lebih bervariasi.
5.2 Saran
Untuk pelatihan bahasa Semaphore bendera dengan tingkat kesulitan yang lebih tinggi, d isarankan agar alat dapat menerima input / me mberikan soal berupa ka limat. Akan tetapi, untuk me mungkinkan ha l ini ma ka diperlukan LCD dengan jumlah kolo m dan baris yang lebih banyak.
(71)
Jurnal Tugas Akhir
Daftar Pustaka
1. Arduino Severino Manual. 2008. Arduino.
2. Darma wan, Aan. Work shop Arduino. 2012. Te knik Ele ktro Maranatha.
3. Halliday, Resnick, Walke r. Fundamentals of Physics. 2001. John Wiley & Sons, Inc. 4. HEF4094 Product Data Sheet. 2010. NXP B.P.
5. JHD162A Series. 2000. Sunro m. 6. http://arduino.cc.29 Juli 2012.
7. http://arduino.cc/en/Tutorial/ Liquid Crystal.29 Juli 2012. 8. http://arduino.cc/playground/Code/LCD3wires.29 Ju li 2012. 9. http://en.wikipedia.org/wiki/Flag_semaphore.29 Juli 2012. 10. http://en.wikipedia.org/wiki/Se maphore.29 Juli 2012.
11. http://www.co mputerhope.com/jargon/k/keypad.htm.29 Ju li 2012. 12. http://www.kpsec.freeuk.co m/co mponents/led.htm.29 Juli 2012. 13. http://www.mob ileburn.co m/defin ition.jsp?term=LCD.29 Ju li 2012.
14. http://www.radio-e lectronics.com/in fo/data/semicond/leds -light-e mitting-diodes/characteristics.php.29 Juli 2012.
(72)
DAFTAR PUSTAKA
1. Arduino Severino Manual. 2008. Arduino.
2. Darmawan, Aan. Workshop Arduino. 2012. Teknik Elektro Maranatha.
3. Halliday, Resnick, Walker. Fundamentals of Physics. 2001. John Wiley &
Sons, Inc.
4. HEF4094 Product Data Sheet. 2010. NXP B.P.
5. JHD162A Series. 2000. Sunrom.
6. http://arduino.cc. 29 Juli 2012.
7. http://arduino.cc/en/Tutorial/LiquidCrystal. 29 Juli 2012.
8. http://arduino.cc/playground/Code/LCD3wires. 29 Juli 2012.
9. http://en.wikipedia.org/wiki/Flag_semaphore. 29 Juli 2012.
10.http://en.wikipedia.org/wiki/Semaphore. 29 Juli 2012.
11.http://www.computerhope.com/jargon/k/keypad.htm. 29 Juli 2012.
12.http://www.kpsec.freeuk.com/components/led.htm. 29 Juli 2012.
13.http://www.mobileburn.com/definition.jsp?term=LCD. 29 Juli 2012.
14.http://www.radio-electronics.com/info/data/semicond/leds-
(1)
Loop
Clear LCD; LCD display startup
text; Char mode =
getMode();
getMode
mode = 1 ? N mode = 2 ? N mode = 3 ?
Clear LCD; LCD display Practice Mode; Delay 2000ms; practiceMode();
Y
practiceMode
Clear LCD; LCD displa Test
Mode; Delay 2000ms;
testMode();
testMode
Clear LCD; LCD displa E am
Mode; Delay 2000ms; examMode(); examMode Y Y N
Ga mbar 15Sub Function Loop Sumber: pribadi
Setelah mode dip ilih, maka sub functionmodeakan dipanggil sesuai dengan pilihan (lihat Ga mbar 15). Mode 1 adalah Practice Mode, mode 2 ada lah Test Mode, dan mode 3 adalah Test Mode.
Pada Practice Mode dan Test Mode, programakan mengulang latihan terus -menerus hingga tombol reset pada Arduino ditekan. Pada Exa m Mode, ju mlah soal dibatasi sebanyak sepuluh buah.
IV. Pengamatan
Dari hasil percobaan yang dilakukan terhadap perangkat keras pelatihan bahasa Semaphore, didapatkan hasil pengamatan sebagai berikut:
Tabel 2 Percobaan 1 Startup Text
Test Case Hasil yang Diharapkan Status Ketika a lat menyala, mena mpilkan startuptext
pada LCD (Ga mbar 16).
Alat mena mpil-kan startup text pada LCD. Berhasil
Sumber: Pribadi
Ganbar 16Startup Text Sumber: pribadi
(2)
Ga mbar 17Input Mode Latihan Sumber: pribadi
Tabel 4 Percobaan 3 Mode Angka
Test Case Hasil yang Diharapkan Status Dala m mode huruf, pengguna dapat
mengganti ke mode angka dengan menekan
tombol „0‟ (Gambar 18).
Mode angka dapat digunakan setelah menekan
„0‟. Berhasil
Sumber: Pribadi
Ganbar 18Mode Angka Sumber: pribadi
Tabel 5 Percobaan 4 Mode Huruf
Test Case Hasil yang Diharapkan Status Dala m mode angka, pengguna dapat
mengganti ke mode huruf dengan menekan
tombol „0‟ dua kali (Gambar 19).
Mode huruf dapat digunakan setelah menekan
„0‟ dua kali. Berhasil
Sumber: Pribadi
Ganbar 19Mode huruf Sumber: pribadi
(3)
Tabel 6 Percobaan 5 Input Huruf dan Angka
Test Case Hasil yang Diharapkan Status Dala m setiap mode, pengguna dapat
menginput satu huruf/angka saja (Ga mbar 20).
Dala m setiap mode, hanya dapat menginput satu huruf / angka saja.
Berhasil Sumber: Pribadi
Ganbar 20Input Huruf dan Angka Sumber: pribadi
Tabel 7 Percobaan 6 Pract ice Mode
Test Case Hasil yang Diharapkan Status Dala m Practice Mode, jika pengguna telah
me mbe rikan input dan menekan to mbol
„exe.‟, maka hasilnya akan ditampilkan pada
LED (Ga mbar 21).
LED mena mpilkan hasil yang sesuai dengan input pengguna.
Berhasil
Sumber: Pribadi
Ganbar 21 Practice Mode Sumber: pribadi
Tabel 8 Percobaan 7 Test Mode dan Exa m Mode Soa l Random
Test Case Hasil yang Diharapkan Status Dala m Test Mode dan Exa m Mode, alat
me mbe rikan soal random (Ga mbar 22).
Alat me mberikan soal random. Berhasil
(4)
Tabel 9 Percobaan 8 Exa m Mode Ke mba li ke Menu Uta ma
Test Case Hasil yang Diharapkan Status Dala m Exa m Mode, setelah LCD
mena mp ilkan ju mlah ja waban benar dan salah, alat akan menunggu input apapun untuk ke mbali ke menu utama (Ga mba r 23).
Alat menunggu input apapun untuk ke mba li ke menu uta ma.
Berhasil
Sumber: Pribadi
Ganbar 23 Exa m Mode Ke mbali ke Menu Uta ma Sumber: pribadi
Tabel 10 Percobaan 9 Practice dan Test Mode Kembali ke Menu Uta ma
Test Case Hasil yang Diharapkan Status Dala m Practice Mode dan Test Mode, jika
tombol reset d itekan a kan ke mba li ke menu utama (Ga mbar 24).
Ke mbali ke menu uta ma jika to mbol reset ditekan.
Berhasil
Sumber: Pribadi
Ganbar 24 Practice dan Test Mode Kembali ke Menu Uta ma Sumber: pribadi
V. Kesimpulan dan Saran
5.1 Kesimpulan
Kesimpulan dari Tugas Akhir yang telah dilaku kan adalah:
1. Perangkat ke ras pelatihan bahasa Semaphore bendera telah berhasil dibuat.
2. Dengan adanya tiga jenis latihan, pembelaja ran bahasa Semaphore bendera dapat dilakukan dengan
lebih bervariasi.
5.2 Saran
Untuk pelatihan bahasa Semaphore bendera dengan tingkat kesulitan yang lebih tinggi, d isarankan agar alat dapat menerima input / me mberikan soal berupa ka limat. Akan tetapi, untuk me mungkinkan ha l ini ma ka diperlukan LCD dengan jumlah kolo m dan baris yang lebih banyak.
(5)
Daftar Pustaka
1. Arduino Severino Manual. 2008. Arduino.
2. Darma wan, Aan. Work shop Arduino. 2012. Te knik Ele ktro Maranatha.
3. Halliday, Resnick, Walke r. Fundamentals of Physics. 2001. John Wiley & Sons, Inc. 4. HEF4094 Product Data Sheet. 2010. NXP B.P.
5. JHD162A Series. 2000. Sunro m. 6. http://arduino.cc.29 Juli 2012.
7. http://arduino.cc/en/Tutorial/ Liquid Crystal.29 Juli 2012. 8. http://arduino.cc/playground/Code/LCD3wires.29 Ju li 2012. 9. http://en.wikipedia.org/wiki/Flag_semaphore.29 Juli 2012. 10. http://en.wikipedia.org/wiki/Se maphore.29 Juli 2012.
11. http://www.co mputerhope.com/jargon/k/keypad.htm.29 Ju li 2012. 12. http://www.kpsec.freeuk.co m/co mponents/led.htm.29 Juli 2012. 13. http://www.mob ileburn.co m/defin ition.jsp?term=LCD.29 Ju li 2012.
14. http://www.radio-e lectronics.com/in fo/data/semicond/leds -light-e mitting-diodes/characteristics.php.29 Juli
(6)