// Program: Running LED dengan Tombol START (PA10) dan Tombol OFF (PA9) pada STM32 Blue Pill
// Definisi pin LED
#define L1 PB5 // LED 1 terhubung ke PB5
#define L2 PB6 // LED 2 terhubung ke PB6
#define L3 PB7 // LED 3 terhubung ke PB7
#define L4 PB8 // LED 4 terhubung ke PB8
// Definisi pin tombol
#define BUTTON_START PA10 // Tombol START untuk menjalankan running LED
#define BUTTON_OFF PA9 // Tombol OFF untuk mematikan LED
void setup() {
// Atur semua pin LED sebagai OUTPUT
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
// Atur tombol sebagai INPUT dengan resistor pull-up internal
pinMode(BUTTON_START, INPUT_PULLUP);
pinMode(BUTTON_OFF, INPUT_PULLUP);
}
void loop() {
// Jika tombol OFF ditekan
if (digitalRead(BUTTON_OFF) == LOW) {
// Matikan semua LED
digitalWrite(L1, LOW);
digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
return; // Keluar dari loop untuk menghindari running LED berjalan
}
// Jika tombol START ditekan
if (digitalRead(BUTTON_START) == LOW) {
// Jalankan running LED per langkah
runningLEDStep(L1); // Nyalakan LED 1
if (digitalRead(BUTTON_OFF) == LOW) return; // Cek tombol OFF setiap langkah
runningLEDStep(L2); // Nyalakan LED 2
if (digitalRead(BUTTON_OFF) == LOW) return;
runningLEDStep(L3); // Nyalakan LED 3
if (digitalRead(BUTTON_OFF) == LOW) return;
runningLEDStep(L4); // Nyalakan LED 4
} else {
// Jika tidak ada tombol ditekan, matikan semua LED
digitalWrite(L1, LOW);
digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
}
}
// Fungsi untuk menyalakan satu LED dan delay sejenak
void runningLEDStep(int pin) {
// Matikan semua LED terlebih dahulu
digitalWrite(L1, LOW);
digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
// Nyalakan LED yang dipilih
digitalWrite(pin, HIGH);
delay(100); // Delay singkat agar lebih responsif terhadap tombol OFF
}