// Traffic Light Arduino Uno Code with Toggle Button
const int redPin = 13; // Κοκκινο LED φαναρι στο pin 13
const int greenPin = 12; // πράσινο LED φαναρι στο pin 12
const int orangePin = 11; // Πορτοκαλί LED φαναρι στο pin 11
const int toggleButtonPin = 10; // Μπουτον ενεργοποιησης στο pin 10
int buttonState = 0;
int lastButtonState = 0;
bool trafficLightRunning = false;
int cycleCount = 0;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(orangePin, OUTPUT);
pinMode(toggleButtonPin, INPUT);
}
void loop() {
buttonState = digitalRead(toggleButtonPin);
if (buttonState == HIGH && lastButtonState == LOW) {
trafficLightRunning = !trafficLightRunning; // Εναλλαγή της κατάστασης του φαναριού με το πάτημα του κουμπιού
delay(50); // χρονοκαθυστέρηση
}
lastButtonState = buttonState;
if (trafficLightRunning) {
// κοκκινο φαναρι για 4 seconds
digitalWrite(redPin, HIGH);
delay(4000); // 4 seconds
digitalWrite(redPin, LOW);
delay(1000);
// πορτοκαλί για 1 second
digitalWrite(orangePin, HIGH);
delay(1000); // 1 second
digitalWrite(orangePin, LOW);
delay(1000);
digitalWrite(orangePin, HIGH);
delay(1000); // 1 second
digitalWrite(orangePin, LOW);
delay(1000);
// Πράσινο και κόκκινο φανάρια μαζί για 5 δευτερόλεπτα
digitalWrite(greenPin, HIGH);
delay(5000); // 5 seconds
digitalWrite(greenPin, LOW);
delay(1000);
// Orange light for 1 second
digitalWrite(orangePin, HIGH);
delay(1000); // 1 second
digitalWrite(orangePin, LOW);
delay(1000);
digitalWrite(orangePin, HIGH);
delay(1000); // 1 second
digitalWrite(orangePin, LOW);
delay(1000);
// Πράσινα και κόκκινα φώτα μαζί για 4 δευτερόλεπτα
digitalWrite(greenPin, HIGH);
digitalWrite(redPin, HIGH);
delay(4000); // 4 seconds
digitalWrite(greenPin, LOW);
digitalWrite(redPin, LOW);
delay(1000);
cycleCount++;
if (cycleCount >= 3) {
trafficLightRunning = false; // Σταματήστε μετά από 3 κύκλους
cycleCount = 0; // Επαναφορά αριθμό κύκλων για την επόμενη ενεργοποίηση
}
}
}