// Nastavenie pinov
const int blueLeds[] = {2, 3, 4, 5, 6};
const int redLeds[] = {7, 8, 9, 10, 11};
const int buzzer = 12;
const int button = 13;
int sirenMode = 0; // Režim sirény
int blinkMode = 0; // Režim blikania
bool buttonPressed = false;
void setup() {
for (int i = 0; i < 5; i++) {
pinMode(blueLeds[i], OUTPUT);
pinMode(redLeds[i], OUTPUT);
}
pinMode(buzzer, OUTPUT);
pinMode(button, INPUT_PULLUP); // Interný pull-up rezistor
randomSeed(analogRead(0)); // Inicializácia generátora náhodných čísel
}
void loop() {
// Kontrola tlačidla (debouncing)
if (digitalRead(button) == LOW && !buttonPressed) {
buttonPressed = true;
sirenMode = (sirenMode + 1) % 2; // Zmena režimu sirény
blinkMode = (blinkMode + 1) % 2; // Zmena režimu blikania
delay(300); // Debouncing
} else if (digitalRead(button) == HIGH) {
buttonPressed = false;
}
// Blikanie LED
if (blinkMode == 0) {
alternatingBlinkEqual(); // Striedavé blikanie s rovnakým intervalom
} else {
randomMultiBlink(); // Náhodné preblikovanie
}
// Siréna
playSiren();
}
// Funkcia na striedavé blikanie LED s rovnakým intervalom
void alternatingBlinkEqual() {
// Zapnutie všetkých modrých LED a vypnutie červených
for (int i = 0; i < 5; i++) {
digitalWrite(blueLeds[i], HIGH);
digitalWrite(redLeds[i], LOW);
}
delay(100); // Rovnaký interval
// Zapnutie všetkých červených LED a vypnutie modrých
for (int i = 0; i < 5; i++) {
digitalWrite(blueLeds[i], LOW);
digitalWrite(redLeds[i], HIGH);
}
delay(100); // Rovnaký interval
}
// Funkcia na náhodné preblikovanie s 2 LED na každej strane
void randomMultiBlink() {
int blueIndexes[5] = {0, 1, 2, 3, 4}; // Indexy modrých LED
int redIndexes[5] = {0, 1, 2, 3, 4}; // Indexy červených LED
// Vyber náhodné dve modré LED
int firstBlue = random(0, 5);
int secondBlue;
do {
secondBlue = random(0, 5);
} while (secondBlue == firstBlue);
// Vyber náhodné dve červené LED
int firstRed = random(0, 5);
int secondRed;
do {
secondRed = random(0, 5);
} while (secondRed == firstRed);
// Zapni náhodné modré LED a vypni ostatné
for (int i = 0; i < 5; i++) {
digitalWrite(blueLeds[i], (i == firstBlue || i == secondBlue) ? HIGH : LOW);
digitalWrite(redLeds[i], LOW);
}
delay(100); // Krátky interval
// Zapni náhodné červené LED a vypni ostatné
for (int i = 0; i < 5; i++) {
digitalWrite(redLeds[i], (i == firstRed || i == secondRed) ? HIGH : LOW);
digitalWrite(blueLeds[i], LOW);
}
delay(100); // Krátky interval
}
// Funkcia na prehrávanie sirény
void playSiren() {
if (sirenMode == 0) {
tone(buzzer, 600); // Vysoký tón
delay(200);
tone(buzzer, 400); // Nízky tón
delay(200);
} else {
tone(buzzer, 800); // Rýchlejší vysoký tón
delay(100);
tone(buzzer, 500); // Rýchlejší nízky tón
delay(100);
}
noTone(buzzer);
}