// Nama : Nur Alisa
// NIM : 2209106089
// MODUL 2 LATIHAN 1 : POLA SOS, 3 KEDIPAN PENDEK -> 3 KEDIPAN PANJANG -> 3 KEDIPAN PENDEK
// Pin Konfigurasi
const int LED_RED = 3;
const int BUTTON_PIN = 4;
// Variabel
bool powerOff = false;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
int lastButtonState = HIGH;
int buttonState;
void setup() {
Serial.begin(115200);
pinMode(LED_RED, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
Serial.println("SISTEM POLA LAMPU DARURAT SOS");
Serial.println("Tekan tombol untuk memulai");
}
void loop() {
// Baca status tombol dengan debouncing
int reading = digitalRead(BUTTON_PIN);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
// Jika tombol ditekan (LOW karena menggunakan PULLUP)
if (buttonState == LOW) {
powerOff = !powerOff;
if (powerOff) {
Serial.println("Tombol LOW terdeteksi! Memulai sinyal SOS");
} else {
Serial.println("Lampu kembali menyala! Sinyal SOS berhenti");
digitalWrite(LED_RED, LOW);
}
}
}
}
lastButtonState = reading;
if (powerOff) {
blinkSOS();
}
}
void blinkSOS() {
// 3 kedipan pendek (S)
for (int i = 0; i < 3; i++) {
digitalWrite(LED_RED, HIGH);
delay(250);
digitalWrite(LED_RED, LOW);
delay(250);
}
delay(400);
// 3 kedipan panjang (O)
for (int i = 0; i < 3; i++) {
digitalWrite(LED_RED, HIGH);
delay(700);
digitalWrite(LED_RED, LOW);
delay(300);
}
delay(400);
// 3 kedipan pendek (S)
for (int i = 0; i < 3; i++) {
digitalWrite(LED_RED, HIGH);
delay(250);
digitalWrite(LED_RED, LOW);
delay(250);
}
delay(1000);
}