• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
DHT11 - prawidłowy co drugi odczyt
#7
Zajrzyj do przykładu blinkWithoutDelay, tam jest zrobione miganie led co 1s możesz zamienić na 2000 i to co jest w tym if'ie do zmiany stanu led jest robione co 2s. To najprostszy sposób by nie blokować działania uC na 1-2s, bo w tym czasie jest ślepy i głuchy, np. na przyciski. W ten sam sposób robisz wyświetlanie na ekran LCD, czy drukowanie na serial. Na forum wrzucałem też przykład funkcji czas() wykorzystującej ten mechanizm z opisem jak działa. Używając jej można robić pomiar tylko w nowej parzystej sekundzie if(fsekundy &&(sekundy%2==0));.
Na forach czytałem że te DHT22 lubią się powiesić i pomaga im tylko odłączenie zasilania. Zasilić można go z pinu uC, podajesz mu napięcie tak samo jakbyś zaświecał led, można tu też dodać rezystor 100om. Pobór prądu na poziomie 1mA jest OK dla Atmegi. W ten sam sposób zasilam nawet mały ekran OLED.
Wystarczy w SETUP dodać jakiś delay przy starcie lub zadbać o to by pierwszy pomiar nie był szybciej niż 2s po podaniu zasilania - daj mu czas na naładowanie kondensatorów i prawidłowe rozpoczęcie pracy.
W programie dodaj obsługę WDT:
Kod:
#include <avr/wdt.h>

void setup() {
wdt_enable(WDTO_4S);

}

void loop() {
wdt_reset();

}

Jeśli DTH zawiesi komunikację i uC stanie to WDT po 4s go zresetuje, przy starcie odłącz DHT zasilanie, włącz za 2 sekundy (to go ewentualnie zresetuje) za kolejne 2s wróć do pomiarów.
Cały obieg pętli loop w powyższym ustawieniu WDT nie może trwać dłużej niż 4s (WDTO_4S można zmienić na mniejszy lub na max 8s), ale pętle dłuższe niż kilka ms to i tak porażka.  Dlatego tak ważne jest by nie używać delay, a zamiast tego z mills pomijać wykonywanie poleceń, na które jeszcze nie pora.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
DHT11 - prawidłowy co drugi odczyt - przez mrozilla - 10-06-2019, 22:37
RE: DHT11 - prawidłowy co drugi odczyt - przez kaczakat - 11-06-2019, 10:32

Skocz do:


Przeglądający: 1 gości