#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel neo(20, 8, NEO_GRB + NEO_KHZ800); // 20 LED na pine č. 8
byte cisloEfektu = 1;
void setup() {
neo.begin();
pinMode(0, INPUT_PULLUP); // Tlačidlo pripojené na pin 0
attachInterrupt(digitalPinToInterrupt(0), zmenaEfektu, FALLING); // Nastav interrupt pre tlačidlo
}
void loop() {
switch(cisloEfektu) {
case 1: efekt1(); break; // Efekt 1
case 2: efekt2(); break; // Efekt 2
case 3: efekt3(); break; // Efekt 3
default:
// error handling
break;
}
}
void zmenaEfektu() {
cisloEfektu++; // Prepneme na ďalší efekt
if (cisloEfektu == 4)
cisloEfektu = 1; // Ak dosiahne 4, prejde späť na efekt 1
}
void efekt1() {
// Efekt 1: Striedanie červenej a modrej farby
for (int i = 0; i < 20; i++) {
if (i % 2 == 0) {
neo.setPixelColor(i, neo.Color(255, 0, 0)); // Červená
} else {
neo.setPixelColor(i, neo.Color(0, 0, 0)); // Vypni LED
}
}
neo.show();
delay(500);
for (int i = 0; i < 20; i++) {
if (i % 2 == 0) {
neo.setPixelColor(i, neo.Color(0, 0, 0)); // Vypni LED
} else {
neo.setPixelColor(i, neo.Color(0, 0, 255)); // Modrá
}
}
neo.show();
delay(500);
}
void efekt2() {
// Efekt 2: Náhodné farby (červená, zelená, modrá)
neo.clear(); // Vymaž všetky LED
for (int i = 0; i < 20; i++) {
int r = random(3); // Vyber náhodnú farbu
if (r == 0) {
neo.setPixelColor(i, neo.Color(255, 0, 0)); // Červená
} else if (r == 1) {
neo.setPixelColor(i, neo.Color(0, 255, 0)); // Zelená
} else {
neo.setPixelColor(i, neo.Color(0, 0, 255)); // Modrá
}
neo.show();
delay(50); // Krátka oneskorenie
}
// Vypnutie LED po náhodnej sekvencii
for (int i = 19; i >= 0; i--) {
neo.setPixelColor(i, neo.Color(0, 0, 0)); // Vypni LED
neo.show();
delay(50); // Krátka oneskorenie
}
}
void efekt3() {
// Efekt 3: Vlny (postupne zapínanie bielej farby)
for (int i = 0; i < 20; i++) {
neo.clear(); // Vymaž všetky LED
neo.setPixelColor(i, neo.Color(255, 255, 255)); // Biela farba
neo.show();
delay(50); // Oneskanie pre efekt "vlny"
}
}