// Piny pre LED diódy (D1 až D9)
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
// Pin pre tlačidlo
const int buttonPin = 11;
// Premenné
int mode = 0; // Aktuálny režim
int lastButtonState = HIGH;
unsigned long lastChangeTime = 0;
const int debounceDelay = 200; // Anti-bouncing tlačidla
void setup() {
// Nastavenie LED pinov ako výstupy
for (int i = 0; i < 9; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Nastavenie tlačidla ako vstup s pull-up rezistorom
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// Čítanie stavu tlačidla
int buttonState = digitalRead(buttonPin);
// Kontrola na stlačenie tlačidla (s debouncingom)
if (buttonState == LOW && lastButtonState == HIGH && millis() - lastChangeTime > debounceDelay) {
mode = (mode + 1) % 4; // Prepnúť na ďalší režim (cyklicky medzi 0-3)
lastChangeTime = millis();
}
lastButtonState = buttonState;
// Spustenie režimu blikania podľa aktuálneho režimu
switch (mode) {
case 0: blinkTopToBottomRepeat(); break; // Režim 0: Zhora nadol
case 1: blinkRandom(); break; // Režim 1: Náhodne
case 2: blinkLeftToRight(); break; // Režim 2: Zľava doprava
case 3: blinkCircular(); break; // Režim 3: Dookola
}
}
// Režim 0: Blikanie zhora nadol opakovane
void blinkTopToBottomRepeat() {
for (int i = 0; i < 9; i++) {
digitalWrite(ledPins[i], HIGH); // Rozsvietiť aktuálnu LED
delay(100);
digitalWrite(ledPins[i], LOW); // Zhasnúť aktuálnu LED
}
}
// Režim 1: Blikanie náhodne
void blinkRandom() {
int randomLED = random(0, 9); // Náhodné číslo od 0 do 8
digitalWrite(ledPins[randomLED], HIGH);
delay(100);
digitalWrite(ledPins[randomLED], LOW);
}
// Režim 2: Blikanie zľava doprava (3 riadky)
void blinkLeftToRight() {
int rows[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; // LED v riadkoch
for (int row = 0; row < 3; row++) {
for (int i = 0; i < 3; i++) {
digitalWrite(ledPins[rows[row][i]], HIGH);
delay(100);
digitalWrite(ledPins[rows[row][i]], LOW);
}
}
}
// Režim 3: Blikanie dookola
void blinkCircular() {
int sequence[] = {0, 1, 2, 5, 8, 7, 6, 3}; // Poradie diód pre "kruh"
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[sequence[i]], HIGH);
delay(100);
digitalWrite(ledPins[sequence[i]], LOW);
}
}