21-11-2020, 12:22
(20-11-2020, 23:37)kaczakat napisał(a): Zamiast zmieniać stan led co 1000ms (czy drugiej co 333) możesz sprawdzać co 30ms czy przycisk jest wciśnięty i który, potem zmieniać wysterowanie led analogowo. Jeżeli będziesz miał osobne przyciski, 4 w sumie, to można wtedy nawet "jednocześnie" ściemniać jeden i rozjaśniać drugi (oczywiście nic nie jest jednoczśnie, ale ms i tym bardziej ns nie są zauważalne dla człowieka).Tak, po zmianie na digitalWrite() rezystor jest podciągnięty do masy żeby unikać pików o których piszesz.
Nie załączasz schematu, nie wiem czy masz podłączony rezystor podciągający, nic o nim nie piszesz, a jego brak przy przycisku jest błędem. Może go nie być, ale w kodzie powinno być podciągnięcie do VCC.
Zamiast wpisywać analogWrite(0), powinieneś dla 0 zmienić funkcję na digitalWrite(0); by uniknąć glitch'a dla PWM.
Nie eliminujesz drgań styków ani nie korzystasz z gotowej biblioteki do tego.
Takie rzeczy są podstawowe, może masz książki i je czytałeś, ale ich nie zrozumiałeś. Porób przykłady, przejdź kurs z linka, ostatni projekt drugiego etapu to projekt wielozadaniowy z millis(). Z załączonego kodu widać, że jesteś daleko od tego punktu. Każdy przykład który zrobiłeś z delay zrób na millis.
Bez zrozumienia podstaw nie zrobisz żadnej sensownej aplikacji, a wszelkie wskazówki uzyskane na forach i tak będą dla Ciebie niezrozumiałe.
Pierwsze kilkaset programów odtwarzałem bez głębszego zrozumienia całości, modyfikując kawałki i obserwując efekty, starając się zrozumieć.
Dzięki za wyjaśnienie