Arduino Polska Forum

Pełna wersja: Przełącznik efektów
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam, proszę o podpowiedź w następującej kwestii.
Chciałem zrobić oświetlenie z wykorzystaniem funkcji ze strony https://www.tweaking4all.com/hardware/ar...p-effects/
Zaimportowałem kod dwóch efektów:
1. LEDStrip Effect – Rainbow Cycle
2. LEDStrip Effect – Snow Sparkle


Chciałbym sterować efektami tak, że kolejne naciśnięcie przycisku będzie włączało następny efekt

Kod:
void loop()
{
if (digitalRead(7) == LOW) { //Jeśli przycisk wciśnięty

   stan++;}

switch(stan) {
   case 1:
   rainbowCycle(20); //wywolanie pierwszego efektu
   break;
   
   case 2:
   SnowSparkle(0x10, 0x10, 0x10, 40, random(1,100)); //wywolanie drugiego efektu
   break;
   
  }

Czy to powinno działać? Obecnie mam taką sytuację, że przy pierwszym wciśnięciu przycisku na pinie 7 włącza się pierwszy efekt, ale kolejnego już nie mogę załączyć?
Może jest jakiś inny sposób realizacji tego zadania. Proszę o pomoc.

Pewnie źle sformułowałem pytanie. Proszę tylko o informacje czy jest to możliwe wówczas będę szukał.
Chciałbym, aby funkcja w pierwszym case wykonywała się do czasu gdy case nie zmieni się na 2. Funkcja w case 1 wykonuje się ciągle i nie wiem jak ją zatrzymać.
Chodzi o prosty przełącznik
zmienna = 1 wykonuje się efekt 1
zmienna = 2 koniec efektu 1 i rozpoczyna się efekt 2
itd.
To jest możliwe, musisz pilnować by zmienna stan miała wartość tylko 1 lub 2, pamiętaj że liczymy od 0, możesz też dodać case default do wyboru.
Wciśnięcie przycisku powoduje zliczenie go nawet kilka tysięcy razy na sekundę. No tu pewnie nie, bo blokujesz program przechodząc do wykonania efektu, ale jak ma wartość 3 to już go zlicza pierdylion razy bo żaden efekt się nie wykona i tylko zwiększa tą zmienną 'stan'. Powinieneś mieć jakoś obsłużone drganie styków, może być biblioteka debounce2.