const int ButtonUp = 2;
const int ButtonDown = 4;
const int ButtonOnOff = 7;
const int led = 8;
int buttonState = 0;
int counterOnOff = 0;
int buttonCounter = 0;
bool ledState = false;
unsigned long previousMillis = 0;
unsigned long interval = 500; // Interval default
void setup() {
Serial.begin(9600);
pinMode(ButtonUp, INPUT);
pinMode(ButtonDown, INPUT);
pinMode(ButtonOnOff, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
// baca status tombol:
buttonState = digitalRead(ButtonOnOff);
// jika tombol ditekan
if (buttonState == HIGH) {
// tambahkan satu ke counter
counterOnOff++;
Serial.print("Counter On Off: ");
Serial.println(counterOnOff);
// tunggu sebentar untuk menghindari bouncing
delay(250);
}
// jika counter genap, hentikan seluruh operasi
if (counterOnOff % 2 == 0) {
return; // keluar dari loop
}
else {
// jika counter ganjil, lanjutkan dengan mengontrol LED
// Membaca tombol dan menambahkan counter jika ditekan
if (digitalRead(ButtonUp) == HIGH) {
buttonCounter++;
Serial.print("Button pushed. Total button pushes: ");
Serial.println(buttonCounter);
delay(250);
// Mengatur delay baru untuk LED
interval = buttonCounter * 500;
previousMillis = currentMillis; // Me-reset waktu sebelumnya
}
// Counter Down
if (digitalRead(ButtonDown) == HIGH) {
buttonCounter--;
Serial.print("Button pushed. Total button pushes: ");
Serial.println(buttonCounter);
delay(250);
// Mengatur delay baru untuk LED
interval = buttonCounter * 500;
previousMillis = currentMillis; // Me-reset waktu sebelumnya
}
// Mengontrol LED berdasarkan interval waktu
if (currentMillis - previousMillis >= interval) {
// Toggle status LED
ledState = !ledState;
digitalWrite(led, ledState);
previousMillis = currentMillis; // Me-reset waktu sebelumnya
}
}
}