const int YESIL_LED_PIN = 7;
const int KIRMIZI_LED_PIN = 6;
const int BUTON_PIN = 2;
enum SistemDurumu {
BEKLEME_MODU,
UCUS_MODU
};
volatile SistemDurumu mevcutDurum = BEKLEME_MODU;
unsigned long oncekiZaman = 0;
void durumDegistir() {
if (mevcutDurum == BEKLEME_MODU) {
mevcutDurum = UCUS_MODU;
} else {
mevcutDurum = BEKLEME_MODU;
}
}
void setup() {
Serial.begin(115200);
pinMode(YESIL_LED_PIN, OUTPUT);
pinMode(KIRMIZI_LED_PIN, OUTPUT);
pinMode(BUTON_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BUTON_PIN), durumDegistir, FALLING);
digitalWrite(YESIL_LED_PIN, LOW);
digitalWrite(KIRMIZI_LED_PIN, LOW);
}
void loop() {
SistemDurumu guncelDurum;
noInterrupts();
guncelDurum = mevcutDurum;
interrupts();
long sure;
if (guncelDurum == BEKLEME_MODU) {
sure = 1000;
digitalWrite(KIRMIZI_LED_PIN, LOW);
} else { // guncelDurum == UCUS_MODU
sure = 100;
digitalWrite(YESIL_LED_PIN, LOW);
}
unsigned long mevcutZaman = millis();
if (mevcutZaman - oncekiZaman >= sure) {
oncekiZaman = mevcutZaman;
if (guncelDurum == BEKLEME_MODU) {
digitalWrite(YESIL_LED_PIN, !digitalRead(YESIL_LED_PIN));
} else {
digitalWrite(KIRMIZI_LED_PIN, !digitalRead(KIRMIZI_LED_PIN));
}
}
}