11-08-2019, 03:16
Niestety tak to nie zadziała, nawet jak Ci się będzie wydawało, że działa, to tylko tak sobie. Minimum to użycie funkcji millis() do odmierzania czasu. Możesz użyć funkcji z C sprinf do formatowania ciągu znaków tak by wyrzucać na ekran całą linię tekstu:
Znajdź sobie w historii postów funkcję czas(), wrzuciłem tam przykład jak odliczać czas z millis().
Jak już będziesz chciała bardziej dokładnie to trzeba użyć swojego timera i przerwań.
Użycie delay() powoduje, że każde dodanie/odjęcie polecenia w loop zmieni sposób zliczania czasu.
Użycie millis() do odmierzenia 10ms też może być niedokładne, czasami coś może umknąć gdy pętla będzie dłuższa niż kilka ms. Lepiej byłoby zarejestrować stan początkowy z millis, końcowy i z tego obliczyć czas zmierzony stoperem, a te pośrednie wyliczenia ms pokazywane w czasie mierzenia traktować tylko orientacyjnie (i tak cyferki szybko przelatują).
Kod:
char napis[17];
sprintf(napis,"%02d:%02d:%02d:%02d",godziny,minuty,sekundy,dziesiatkims); //to wrzuca zmienne spoza napisu do napisu, a calosc jest wrzucana do tablicy char napis.
lcd.print(napis);
Znajdź sobie w historii postów funkcję czas(), wrzuciłem tam przykład jak odliczać czas z millis().
Jak już będziesz chciała bardziej dokładnie to trzeba użyć swojego timera i przerwań.
Użycie delay() powoduje, że każde dodanie/odjęcie polecenia w loop zmieni sposób zliczania czasu.
Użycie millis() do odmierzenia 10ms też może być niedokładne, czasami coś może umknąć gdy pętla będzie dłuższa niż kilka ms. Lepiej byłoby zarejestrować stan początkowy z millis, końcowy i z tego obliczyć czas zmierzony stoperem, a te pośrednie wyliczenia ms pokazywane w czasie mierzenia traktować tylko orientacyjnie (i tak cyferki szybko przelatują).
Miło być decenianym https://buycoffee.to/kaczakat