// Definisi Pin
const int ledPin = 16;
const int buttonPin = 14;
// Variabel Kontrol Kecepatan
int speedMode = 0; // 0=Lambat (1000ms), 1=Sedang (500ms), 2=Cepat (250ms)
unsigned long currentDelay = 1000; // Kondisi awal lambat
// Variabel untuk Deteksi Tombol
int buttonState = HIGH;
int lastButtonState = HIGH;
void setup() {
// Konfigurasi pin
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Menggunakan internal pull-up
Serial.begin(115200); // Mulai Serial monitor
Serial.println("Latihan-2b Siap.");
}
void loop() {
// Membaca status tombol saat ini
buttonState = digitalRead(buttonPin);
// Cek transisi penekanan tombol
if (buttonState != lastButtonState) {
// Jika tombol baru saja ditekan (HIGH ke LOW)
if (buttonState == LOW) {
speedMode++; // Pindah ke mode berikutnya
if (speedMode > 2) {
speedMode = 0; // Kembali ke awal
}
// Perbarui delay berdasarkan mode kecepatan
switch (speedMode) {
case 0: // Lambat (Kondisi Awal)
currentDelay = 1000;
break;
case 1: // Sedang (Tekan 1 Kali)
currentDelay = 500;
break;
case 2: // Cepat (Tekan 1 Kali Lagi)
currentDelay = 250;
break;
}
// Tampilkan mode saat ini ke Serial Monitor
Serial.print("Mode Kecepatan Baru: ");
Serial.println(speedMode);
Serial.print("Delay Baru: ");
Serial.print(currentDelay);
Serial.println(" ms");
}
// Sedikit delay untuk debouncing (menghindari penekanan ganda)
delay(50);
}
// Simpan status tombol untuk iterasi berikutnya
lastButtonState = buttonState;
// Logika Kedip LED (Sederhana untuk Latihan)
digitalWrite(ledPin, HIGH); // Nyalakan LED
delay(currentDelay / 2); // Tunda setengah periode
digitalWrite(ledPin, LOW); // Matikan LED
delay(currentDelay / 2); // Tunda setengah periode
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4