23-06-2020, 00:25
(23-06-2020, 00:17)kaczakat napisał(a): Ta kropka nad i to był oczywisty błąd, a reszta kodu jest po prostu bez sensu. Jak ktoś znajduje błąd to analizowanie zwykle w tym miejscu się kończy. Nauczyłeś się odmierzać czas z millis, a do środka wrzucasz delay. Zanim zrealizują się warunki z millis z tym delay pętla będzie wykonywać się tysiące razy na sekundę (pusta teoretycznie 16mln x, ale sprawdzenie millis też parę us trwa), zmienna od przycisku będzie w tym rytmie zmieniać się od 0 do 32 tysięcy przekręcać i przyjmować losowe wartości, gdyby była long po prostu urośnie i przestanie się zmieniać w tym tempie, potem znowu.
Wybij sobie millisem rytm pracy, np. sprawdzanie przycisku co 100ms, albo zmiana nastawy serwa co 10ms, czy nawet odczyt co 1ms stanu przycisku i analizuj czy jest wciśnięty przez co najmniej 30ms, po czym puszczony przez co najmniej 30ms, zalicz wciśnięcie i zmień zmienną dokładnie o tyle ile chcesz (drgania styków).
No chyba że to jakaś maszyna losująca.
Człowiek raczej nie wciśnie przycisku częściej niż z 10Hz, uC działa na 16mln Hz, 16MHz, zmiana ruchu serwa też ma sens w określonej częstotliwości. Musisz sobie to spokojnie poukładać, poczytać kod z jakiś przykładów, kursu, gotowych projektów.
Nikomu tu nie zależy na złośliwości, naprawdę warto przeczytać jaką darmową książkę w PDF lub przejść kurs online, niby nie potrzebujesz IRda czy komunikacji UART, ale są w takie "niepotrzebne" lekcje wplecione różne elementy programowania, bez których odbijasz się od ściany.
OK Tylko ja nie potrzebuje nauczyć się programowania...