/*
Nama: Andra Rizki Pratama
NIM: 2107411043
Kelas: TI-6
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
// green, yellow, red
int trafficLight[4][3] = {
{0,1,2},
{3,4,5},
{6,7,8},
{9,10,11}
};
// Variable definition
#define sound 12
#define pb 13
int state = 0;
void setup() {
// put your setup code here, to run once:
lcd.init();
lcd.backlight();
lcd.setCursor(3, 0);
pinMode(pb, INPUT_PULLUP);
pinMode(trafficLight[0][0],OUTPUT);
pinMode(trafficLight[0][1],OUTPUT);
pinMode(trafficLight[0][2],OUTPUT);
pinMode(trafficLight[1][0],OUTPUT);
pinMode(trafficLight[1][1],OUTPUT);
pinMode(trafficLight[1][2],OUTPUT);
pinMode(trafficLight[2][0],OUTPUT);
pinMode(trafficLight[2][1],OUTPUT);
pinMode(trafficLight[2][2],OUTPUT);
pinMode(trafficLight[3][0],OUTPUT);
pinMode(trafficLight[3][1],OUTPUT);
pinMode(trafficLight[3][2],OUTPUT);
// Default value
digitalWrite(trafficLight[0][2], HIGH);
digitalWrite(trafficLight[1][2], HIGH);
digitalWrite(trafficLight[2][2], HIGH);
digitalWrite(trafficLight[3][2], HIGH);
// Serial.begin(9600);
}
void yellowSound(){
for(int i=0; i<3; i++){
tone(sound, 261.6);
delay(50);
noTone(sound);
delay(250);
}
tone(sound, 523.251);
delay(500);
noTone(sound);
}
void loop() {
// put your main code here, to run repeatedly:
delay(200);
for (int i = 0; i < 4; i++) {
// state++;
// Serial.println("Traffic Light State: " + String(state));
lcd.print("GO.");
digitalWrite(trafficLight[i][2], LOW);
digitalWrite(trafficLight[i][0], HIGH);
delay(2000);
lcd.clear();
lcd.print("Prepare to stop.");
digitalWrite(trafficLight[i][0], LOW);
digitalWrite(trafficLight[i][1], HIGH);
yellowSound();
lcd.clear();
lcd.print("STOP!");
delay(500);
digitalWrite(trafficLight[i][1], LOW);
digitalWrite(trafficLight[i][2], HIGH);
lcd.clear();
}
}