Witam wszystkich bardzo serdecznie!
Piszę w sprawie programu do "sterownika" magic ledów, ws2812.
A więc tak, napisałem sobie program, który wyrzuca na ledy poszczególne efekty. Narazie jest to tylko możliwe poprzez wcześniejsze ustalenie kolejności wyrzucania efektów w programie. Chciałbym to zmienić, aby móc osobiście zmieniać efekty po naciśnięciu jednego przycisku. Wpadłem na pomysł, że użyję instrukcji switch, po naciśnięciu przycisku zmieni się zmienna , która przełączy efekt.
Niestety, moja niewiedza czy nieuwaga spowodowała, że nie działa to tak, jak sobie wymyśliłem. Podczas naciśnięcia przycisku zmienna się oczywiście dodaje, lecz nie przełącza się program z wiadomej przyczyny. Przełączy się dopiero po przejsciu efektu i sprawdzeniu ponownie instrukcji switch.
W programie używam _delay_ms, ale mam to zrobione tak, że wywołuję funkcję, która zawiera w sobie tylko jeden _delay_ms, który jest powtarzany tyle razy, jaki jest argument tejże funkcji.
Czy byłby ktoś tak dobry i powiedział mi, jak przerwać efekt i jednocześnie przenieść się na następny? Zrobić to instrukcją switch, czy może czymś innym?
Moja funkcja main prezentuje się następująco:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jak widać, w mk_delay jest wsadzone sprawdzenie przycisków. Według mojego zamysłu, podczas wcisniecia przycisku nastepuje calkowite przerwanie efektu i wywolanie nastepnego efektu. Efektow jest oczywiscie wiecej niz 2, wiec narazie to tylko prototyp, ktory zostanie dopracowany.