02-11-2020, 03:29
Bez zmiany myślenia, że program jest zbiorem instrukcji wykonywanych jedna po drugiej (lub nie) z lub bez pauz w postaci delay() nie zrobisz kroku dalej.
Musisz do tego dodać stałe odmierzanie czasu jako jedną ze składowych programu i również w oparciu o to odmierzanie wykonywać lub nie jakieś czynności. Niektóre czynności trzeba wykonać w każdym obiegu loop, niektóre co 10, 20, 50, 100, 500, 1000, itd, ms.
Loop() od początku do końca powinien trwać tak krótko jak to możliwe, przy takim zabawkowym zastosowaniu jak w Arduino usekundy to super, kilkanaście ms jest wg mnie OK, czasami z wykorzystaniem gotowych funkcji wręcz nie do przeskoczenia. Ale dokładanie do tego jeszcze jakiś delay po 50ms, czy sekund, to już zaczyna być mocno kulawo.
Umiesz migać led z delay, naucz się bez, z przyciskiem, z wieloma led.
Ten problem pojawia się za każdym razem, gdy ktoś liźnie jakiś kurs dla początkujących i próbuje zrobić program użytkowy. Ciężko pisać tutorial każdemu, kto tu się pochwali swoim pierwszym większym programem.
Poczytaj forum, wrzucałem wiele przykładów jak to robić z millis - poszukaj funkcja czas(). Warto też wrócić do kursu C/C++/Arduino i sprawdzić, czy na pewno go skończyłeś.
Musisz do tego dodać stałe odmierzanie czasu jako jedną ze składowych programu i również w oparciu o to odmierzanie wykonywać lub nie jakieś czynności. Niektóre czynności trzeba wykonać w każdym obiegu loop, niektóre co 10, 20, 50, 100, 500, 1000, itd, ms.
Loop() od początku do końca powinien trwać tak krótko jak to możliwe, przy takim zabawkowym zastosowaniu jak w Arduino usekundy to super, kilkanaście ms jest wg mnie OK, czasami z wykorzystaniem gotowych funkcji wręcz nie do przeskoczenia. Ale dokładanie do tego jeszcze jakiś delay po 50ms, czy sekund, to już zaczyna być mocno kulawo.
Umiesz migać led z delay, naucz się bez, z przyciskiem, z wieloma led.
Ten problem pojawia się za każdym razem, gdy ktoś liźnie jakiś kurs dla początkujących i próbuje zrobić program użytkowy. Ciężko pisać tutorial każdemu, kto tu się pochwali swoim pierwszym większym programem.
Poczytaj forum, wrzucałem wiele przykładów jak to robić z millis - poszukaj funkcja czas(). Warto też wrócić do kursu C/C++/Arduino i sprawdzić, czy na pewno go skończyłeś.
Miło być decenianym https://buycoffee.to/kaczakat