Z jednym przerwaniem możesz zrobić to tak, że nieważne który przycisk wciśniesz to do pary podajesz sygnał na pin z przerwaniem, w tym przerwaniu sprawdzasz, który to faktycznie przycisk jest wciśnięty. Trzeba więc dorobić jakiś osprzęt przy pinach.
Możesz też zrobić cykliczny wybór efektu, przyciskiem zmieniasz zmienną w przerwaniu 1-20 i masz do wyboru 20 efektów. Dwoma przyciskami możesz zmieniać jej wartość w górę i w dół. Na dwa przerwania możesz też podłączyć enkoder obrotowy.
Nie musisz mieć różnych zmiennych do przerwania różnych animacji, zawsze gdy ktoś użyje przycisku + czy -przerywasz aktualną.
Możesz też zrobić cykliczny wybór efektu, przyciskiem zmieniasz zmienną w przerwaniu 1-20 i masz do wyboru 20 efektów. Dwoma przyciskami możesz zmieniać jej wartość w górę i w dół. Na dwa przerwania możesz też podłączyć enkoder obrotowy.
Kod:
volatile int8_t numerAnimacji=0;
volatile uint8_t przerwij=1;
void animation_0() {
przerwij=1;
numerAnimacji++;
if (numerAnimacji>20) numerAnimacji=0;
}
void animation_1() {
przerwij=1;
numerAnimacji--;
if (numerAnimacji<0) numerAnimacji=20;
}
Miło być decenianym https://buycoffee.to/kaczakat