Lampu Merah (Traffic light) Dengan Arduino

Membuat lampu merah atau traffic light dengan jumlah simpangan tanpa batas dengan Arduino.

Masing masing lampu menggunakan satu board arduino, dan masing-masing lampu terhubung dengan pin 3 sebagai masukan dari lampu sebelumnya, dan pin 4 output untuk
berikut ini skemanya.

sekema lampu jalan

Keterangan :
Pin 0 : Merah
Pin 1 : Kuning
Pin 2 : Hijau
Pin 3 : Input dari lampu sebelumnya
Pin 4 : Output ke lampu setelahnya
Pin 5 : jumper jika dijadikan yang pertama, (hanya boleh ada 1, lebih jelasnya lihat video);
pin A0 : kecepatan lampu

Contoh penggunaan 3 simpangan

contoh penggunaan 3 simpangan

Video

Source code sketch Arduino IDE

int merah = 0,
    kuning = 1,
    hijau = 2,
    
    fromR = 3, 
    toT = 4,
    firstsignal = 5;

byte ex  = 0b0;
byte first = 0b0;
void setup() {
  pinMode(merah,OUTPUT);
  pinMode(kuning,OUTPUT);
  pinMode(hijau,OUTPUT); 

  pinMode(fromR,INPUT);
  pinMode(firstsignal,INPUT); 
  pinMode(toT,OUTPUT);
 
 
  if(digitalRead(firstsignal) == HIGH) first = 0b1;
}
int myspeed = 500;
void gantiLampu(int pin){
    for(int i=0; i < 3; i++){
        if(i == pin) digitalWrite(i,HIGH);
        else digitalWrite(i,LOW);
      }
  }
 
void loop() {   

  myspeed = analogRead(A0);

   if(myspeed < 200) myspeed = 200; 

  
  int i = digitalRead(fromR);
  if(first == 0b1){
      i = HIGH;
      ex = 0b1;
      first = 0b0;
    }

  if(i == LOW) ex = 0b1;
    
  if( i == HIGH && ex == 0b1){
      ex = 0b0;

     digitalWrite(toT,LOW);
     gantiLampu(kuning);
      delay(myspeed);
     gantiLampu(hijau);
      delay(myspeed);
     gantiLampu(merah);
     digitalWrite(toT,HIGH);
     delay(1000);
    } else {
      

     gantiLampu(merah);
      } 
  // put your main code here, to run repeatedly:

}