#define TOMBOL_HIJAU 2
#define TOMBOL_MERAH 3
uint8_t buttonPin[]={TOMBOL_HIJAU,TOMBOL_MERAH};
uint8_t ledPin[]={13,12,11,10,9};
uint8_t kondisiLED=0; // nyimpan status LED
uint32_t lastChangeTime[] = {0,0};
uint32_t debounceDelay = 200UL; // UL = unsigned long, angka 200 merupakan angka debounce terkecil yang dapat diaplikasikan
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
for(uint8_t i=0; i<2; i++){
pinMode(buttonPin[i], INPUT); // inisialisasi button
}
for(uint8_t j=0;j<5;j++){
pinMode(ledPin[j], OUTPUT);
}
}
void loop() {
// membaca status tombol yang ditekan dan
// mengurangi atau menambah kondisiLED
if(digitalRead(buttonPin[0]) && // Tombol hijau
((millis()-lastChangeTime[0])>debounceDelay) &&
kondisiLED!=5){
kondisiLED=kondisiLED+1;
lastChangeTime[0]=millis();
}
if(digitalRead(buttonPin[1]) && // Tombol merah
((millis()-lastChangeTime[1])>debounceDelay) &&
kondisiLED!=0){
kondisiLED=kondisiLED-1;
lastChangeTime[1]=millis();
}
// Lampu LED mati semua
if(kondisiLED==0){
for(uint8_t i=0;i<5;i++){
digitalWrite(ledPin[i],LOW);
}
}
// Lampu LED nyala 1, mati 4
if(kondisiLED==1){
digitalWrite(ledPin[0], HIGH);
for(uint8_t i=1;i<5;i++){
digitalWrite(ledPin[i],LOW);
}
}
// Lampu LED nyala 2, mati 3
if(kondisiLED==2){
for(uint8_t i=0;i<2;i++){
digitalWrite(ledPin[i], HIGH);
}
for(uint8_t i=2;i<5;i++){
digitalWrite(ledPin[i],LOW);
}
}
// Tambahkan untuk kondisiLED 3 - 5
Serial.print("Nilai kondisiLED: ");
Serial.println(kondisiLED);
}