Minggu, 15 Mei 2016

Traffic Light With Button

Setelah pada tutorial sebelumnya kita membuat traffic light secara otomatis, sekarang bagaimana cara membuat traffic light interaktif? Traffic Light ini menggunakan input push button untuk mengatur nyala lampu pada traffic light. Selain itu, ditambahkan pula lampu untuk pejalan kaki (pedestrian light). Jadi, apabila ada pejalan kaki yang ingin menyebrang jalan bisa melihat indikator lampu pejalan kaki. Yuk langsung aja disimak tutorialnya.

Alat-Alat :

  • Arduino (kali ini digunakan arduino nano)
  • 2 LED merah
  • 1 LED kuning
  • 2 LED hijau
  • 1 pushbutton 
  • Breadboard
  • Pushbutton
Step-By-Step:
1. Buatlah rangkaian seperti gambar dibawah ini:
Dengan konfigurasi sebagai berikut:
Diingatkan kembali, pada tutorial ini, kita memiliki 2 lampu yaitu traffic light/car light dan pedestrian light. Car Light terdiri dari LED merah, kuning dan hijau. Sedangkan Pedestrian light terdiri dari LED merah dan hijau.
  • LED merah (car light) = pin 2 Arduino
  • LED kuning (car light) = pin 3 Arduino
  • LED hijau (car light) = pin 4 Arduino
  • LED merah (pedestrian light) = pin 5 Arduino
  • LED hijau (pedestrian light) = pin 6 Arduino
  • Kaki 1 Push button = 5V
  • Kaki 2 Push button = pin 13 Arduino
note : nomor kaki pushbutton bebas.

3. How it works?
 Mula-mula ada sebuah traffic light yang berjalan otomatis, dilengkapi dengan pedestrian light yang akan menyala hijau apabila traffic light menyala merah begitu pula sebaliknya. Selanjutnya pushbutton akan mengubah nyala lampu apabila ditekan, contoh apabila digunakan untuk menyebrang maka lampu pedestrian menjadi hijau dan traffic light menjadi merah. Mudah dipahami kan?

4. Buatlah program pada software Arduino IDE dan selanjutnya upload pada board Arduino.
berikut ini adalah sourcecodenya:


int carRed = 2; // car lights 
int carYellow = 3; 
int carGreen = 4; 
int pedRed = 5; // pedestrian lights 
int pedGreen = 6; 
int button = 13; // button pin 
int crossTime = 5000; // waktu menyebrang
unsigned long changeTime; // waktu saat button ditekan
void setup() { 
pinMode(carRed, OUTPUT); 
pinMode(carYellow, OUTPUT); 
pinMode(carGreen, OUTPUT); 
pinMode(pedRed, OUTPUT); 
pinMode(pedGreen, OUTPUT); 
pinMode(button, INPUT); // button pada pin 13
// menyalakan lampu hijau 
digitalWrite(carGreen, HIGH); 
digitalWrite(pedRed, HIGH); 
} 
void loop() { 
int state = digitalRead(button); 
/* Cek jika button ditekan dan selesai selama 5 detik ketika button terakhir kali ditekan */ 
if (state == HIGH && (millis() - changeTime) > 5000) { 
// memanggil fungsi Change lights
changeLights(); 
} 
} 
void changeLights() { //fungsi perubahan lampu
digitalWrite(carGreen, LOW); // LED hijau OFF 
digitalWrite(carYellow, HIGH); // LED Kuning ON
delay(2000); // jeda 2 detik 
digitalWrite(carYellow, LOW); // LED kuning OFF
digitalWrite(carRed, HIGH); // LED merah ON
delay(1000); // jeda 1 detik
digitalWrite(pedRed, LOW); // LED merah off (ped)
digitalWrite(pedGreen, HIGH); // LED hjau ON (ped) 
delay(crossTime); // jeda untuk crosstime

// LED Hijau berkedip (ped)
for (int x=0; x<10; x++) { 
digitalWrite(pedGreen, HIGH); 
delay(250); 
digitalWrite(pedGreen, LOW); 
delay(250); 
} 
// menyalakan LED merah (ped) 
digitalWrite(pedRed, HIGH); 
delay(500); 
digitalWrite(carYellow, HIGH); // LED kuning ON 
digitalWrite(carRed, LOW); // LED merah OFF
delay(1000); 
digitalWrite(carGreen, HIGH); 
digitalWrite(carYellow, LOW); // LED kuning OF 
// waktu terakhir saat LED menyala  
changeTime = millis(); 
// kembali ke program utama untuk looping (berulang)
}

0 komentar:

Posting Komentar