Project berikut ini kita akan membuat sebuah kontroller untuk mengendalikan posisi transmisi (gigi) pada kendaraan bermotor. Rangkaian kontroller ini menggunakan Arduino Nano seperti pada gambar berikut.
Gambar 1 rangkaian tombol dan LED untuk simulasi kontroller transmisi kendaraan.
Pada rangkaian terdapat 6 buah tombol yang terhubung ke pin Ao – A5 Arduino. Tombol ini berfungsi sebagai input signal ke mikrokontroller. Tombol A0 untuk mengaktifkan gigi 1, tombol A1 untuk gigi 2, tombol A2 untuk gigi 3, tombol A3 untuk gigi 4, tombol A4 untuk gigi 5 dan tombol A5 untuk netral. Lampu LED yang terpasang pada pin D11 hingga pin D6 berfungsi sebagai indikator posisi transmisi. Bila hendak diaplikasikan ke kendaraan, maka rangkaian ini harus dihubungkan ke rangkaian interfacing dan aktuator ke sistem transmisi kendaraan yang akan dikontrol.
Untuk mengaktifkan transmisi tinggal menekan tombol gigi yang dikehendaki. Tombol gigi tidak dapat berpindah melompat, tetapi harus bertahap. Tombol Netral dapat diaktifkan pada posisi mana saja. Berikut kode program arduino.
int F; int tombol1 = A0; int tombol2 = A1; int tombol3 = A2; int tombol4 = A3; int tombol5 = A4; int tombol6 = A5; int led; void setup () { pinMode(tombol1, INPUT); pinMode(tombol2, INPUT); pinMode(tombol3, INPUT); pinMode(tombol4, INPUT); pinMode(tombol5, INPUT); pinMode(tombol6, INPUT); for(led=2; led<13; led++) {pinMode(led, OUTPUT);} } void loop() { if(digitalRead(tombol1) == 1) {F = 1;} else if(digitalRead(tombol2) == 1) {F = 2;} else if(digitalRead(tombol3) == 1) {F = 3;} else if(digitalRead(tombol4) == 1) {F = 4;} else if(digitalRead(tombol5) == 1) {F = 5;} else if(digitalRead(tombol6) == 1) {F = 6;} else {F = 0;} switch (F) { case 1 : label : digitalWrite(7, LOW); digitalWrite(2, HIGH); if(digitalRead(tombol5) == 1) {digitalWrite(2,LOW); break;} else if(digitalRead(tombol2) == 1) {digitalWrite(2,LOW); break;} else if(digitalRead(tombol6) == 1) {break;} else {goto label;} break; case 2 : label2 : digitalWrite(7, LOW); digitalWrite(3, HIGH); if (digitalRead(tombol1) == 1) {digitalWrite(3,LOW); break;} else if(digitalRead(tombol3) == 1) {digitalWrite(3,LOW); break;} else if(digitalRead(tombol6) == 1) {break;} else {goto label2;} break; case 3 : label3 : digitalWrite(7, LOW); digitalWrite(4, HIGH); if(digitalRead(tombol2) == 1) {digitalWrite(4,LOW); break;} else if(digitalRead(tombol4) == 1) {digitalWrite(4,LOW); break;} else if(digitalRead(tombol6) == 1) {break;} else {goto label3;} break; case 4 : label5 :digitalWrite(7, LOW); digitalWrite(5, HIGH); if(digitalRead(tombol3) == 1) {digitalWrite(5,LOW); break;} else if(digitalRead(tombol5) == 1) {digitalWrite(5,LOW); break;} else if(digitalRead(tombol6) == 1) {break;} else {goto label5;} break; case 5 : label6: digitalWrite(7, LOW); digitalWrite(6, HIGH); if(digitalRead(tombol4) == 1) {digitalWrite(6,LOW); break;} else if(digitalRead(tombol6) == 1) {break;} else if(digitalRead(tombol1) == 1) {digitalWrite(6,LOW); goto label;} else {goto label6;} break; case 6 : digitalWrite(7, HIGH); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); break; default : digitalWrite(7, HIGH); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); break; } }
Berikut hasilnya :