int greenauto = 3; // Pin pre zelenú LED pre autá
int orangeauto = 4; // Pin pre oranžovú LED pre autá
int redauto = 5; // Pin pre červenú LED pre autá
int greenchodec = 6; // Pin pre zelenú LED pre chodcov
int redchodec = 7; // Pin pre červenú LED pre chodcov
int button = 2; // Pin pre tlačidlo pre chodcov (prerušenie)
int tlacitko = 0; // Premenná zdieľaná medzi prerušením a hlavnou slučkou
void setup() {
pinMode(greenauto, OUTPUT); // Zelená LED pre autá ako výstup
pinMode(orangeauto, OUTPUT); // Oranžová LED pre autá ako výstup
pinMode(redauto, OUTPUT); // Červená LED pre autá ako výstup
pinMode(greenchodec, OUTPUT); // Zelená LED pre chodcov ako výstup
pinMode(redchodec, OUTPUT); // Červená LED pre chodcov ako výstup
pinMode(button, INPUT_PULLUP); // Tlačidlo s interným pull-up rezistorom
pinMode(13, OUTPUT); // LED na pine 13 na signalizáciu prerušenia
attachInterrupt(0, zmena, FALLING); // Spustí funkciu zmena pri stlačení tlačidla (prechod z HIGH na LOW)
}
void loop() {
// Normálny režim - autá majú zelenú, chodci červenú
digitalWrite(greenauto, HIGH); // Zapnúť zelenú LED pre autá
digitalWrite(redchodec, HIGH); // Zapnúť červenú LED pre chodcov
if (tlacitko == 1) { // Ak bol button stlačeny
digitalWrite(greenauto, LOW); // Vypnúť zelenú LED pre autá
digitalWrite(orangeauto, HIGH); // Zapnúť oranžovú LED pre autá
delay(2000); // Oranžová svieti 2 sekundy
digitalWrite(orangeauto, LOW); // Vypnúť oranžovú LED pre autá
digitalWrite(redauto, HIGH); // Zapnúť červenú LED pre autá
digitalWrite(redchodec, LOW); // Vypnúť červenú LED pre chodcov
digitalWrite(greenchodec, HIGH); // Zapnúť zelenú LED pre chodcov
delay(6000); // Chodci majú zelenú 4 sekundy
// Návrat do normálneho stavu
digitalWrite(greenchodec, LOW); // Vypnúť zelenú LED pre chodcov
digitalWrite(redchodec, HIGH); // Zapnúť červenú LED pre chodcov
digitalWrite(redauto, LOW); // Vypnúť červenú LED pre autá
digitalWrite(orangeauto, HIGH); // Zapnúť oranžovú LED pre autá
delay(2000); // Oranžová svieti 2 sekundy
digitalWrite(orangeauto, LOW); // Vypnúť oranžovú LED pre autá
digitalWrite(greenauto, HIGH); // Zapnúť zelenú LED pre autá
digitalWrite(13, LOW); // Vypnúť LED
tlacitko = 0; // Resetovat
}
}
void zmena() {
// Funkcia prerušenia
tlacitko = 1; // Nastaviť príznak prerušenia
digitalWrite(13, HIGH); // Zapnúť LED
}