// Menentukan PIN untuk tombol
#define TOMBOL_HIJAU 2
#define TOMBOL_MERAH 3
uint8_t buttonPin[]={TOMBOL_HIJAU,TOMBOL_MERAH};
// Menentukan PIN untuk LED
uint8_t ledPin[]={13,12,11,10,9};
uint8_t kondisiLED=3; // nyimpan status LED
// Variabel lain yang dibutuhkan
uint32_t lastChangeTime[] = {0,0};
uint32_t debounceDelay = 200UL; // UL = unsigned long, angka 200 merupakan angka debounce terkecil yang dapat diaplikasikan
bool kondisiLEDBerubah=true;
void setup() {
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() {
// MENERIMA INPUT
// 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();
kondisiLEDBerubah=true;
}
if(digitalRead(buttonPin[1]) && // Tombol merah
((millis()-lastChangeTime[1])>debounceDelay) &&
kondisiLED!=0){
kondisiLED=kondisiLED-1;
lastChangeTime[1]=millis();
kondisiLEDBerubah=true;
}
// MEMBERIKAN INSTRUKSI KE AKTUATOR (LED)
if(kondisiLEDBerubah){
for(uint8_t i=0;i<kondisiLED;i++){
digitalWrite(ledPin[i], HIGH);
}
for(uint8_t i=kondisiLED;i<5;i++){
digitalWrite(ledPin[i],LOW);
}
kondisiLEDBerubah=false;
}
Serial.print("Nilai kondisiLED: ");
Serial.println(kondisiLED);
}