• 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
DHT22 zawiesza program
#1
Witajcie, 
na początek uprzedzę, że jestem mocno początkującym w temacie arduino Wink 
Podczas pisania programu, obsługującego zegar czasu rzeczywistego DS1307 oraz pomiar temperatury i wilgotności realizowany za pomocą DHT22, napotkałem problem z którym nie mogę sobie poradzić i nie udało mi się znaleźć rozwiązania. 
Problem polega na tym, że program po chwili działania zupełnie się zawiesza. Nie reaguje nawet na przerwania. 

Arduino to model UNO.
Czujnik podpięty, przez rezystor podciągający (5,1k) do zasilania, do pinu 12.
Zegar DS1307 SDA - A4, SCL - A5.  

Kod:
#include <Wire.h>
#include <DHT.h>
#include <DS1307.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);
#define DHTPIN 12
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int z = 0;
float te = 0 ;
float hu = 0;
DS1307 clock;
RTCDateTime dt;

void setup()
{
 dht.begin();
 attachInterrupt(0, przerwanie, RISING);
 lcd.begin(16, 2);
 lcd.clear();
 clock.begin();

 if (!clock.isReady())
 {
   clock.setDateTime(__DATE__, __TIME__);
 }

}

void przerwanie()
{
 z = z + 1;
 if ( z == 7 )
 {
   z = 0;
 }
}


void loop()
{
 if (z != 0 )
 {
   lcd.clear();
 }

 if ( z == 0 )
 {
   te = dht.readTemperature();
   hu = dht.readHumidity();
   dt = clock.getDateTime();

   if ( (dt.second) < 10 )
   {
     lcd.setCursor(6, 0);
     lcd.print("0");
     lcd.setCursor(7, 0);
     lcd.print(dt.second);
   }

   if ( (dt.minute) < 10 )
   {
     lcd.setCursor(3, 0);
     lcd.print("0");
     lcd.setCursor(4, 0);
     lcd.print(dt.minute);
   }

   if ((dt.hour) < 10 )
   {
     lcd.setCursor(0, 0);
     lcd.print("0");
     lcd.setCursor(1, 0);
     lcd.print(dt.hour);
   }



   if ((dt.hour) > 9 )
   {
     lcd.setCursor(0, 0);
     lcd.print(dt.hour);
   }

   lcd.setCursor(2, 0);
   lcd.print(":");

   if ( (dt.minute) > 9 )
   {
     lcd.setCursor(3, 0);
     lcd.print(dt.minute);
   }

   if ( (dt.second) > 9 )
   {
     lcd.setCursor(6, 0);
     lcd.print(dt.second);
   }

   lcd.setCursor(5, 0);
   lcd.print(":");

   lcd.setCursor(0, 1);
   lcd.print("H:");
   lcd.setCursor(2, 1);
   lcd.print(hu);
   lcd.setCursor(7, 1);
   lcd.print("%");
   lcd.setCursor(9, 1);
   lcd.print("T:");
   lcd.setCursor(11, 1);
   lcd.print(te);
 }


}


Bez czujnika DHT program działa bezproblemowo. 
Czy ktoś z Was mógłby mi pomóc lub naprowadzić gdzie jest błąd ? 
Z góry dziękuję za pomoc.
 
Odpowiedź
  


Wiadomości w tym wątku
DHT22 zawiesza program - przez Piter1401 - 18-12-2016, 13:50
RE: DHT22 zawiesza program - przez namok - 18-12-2016, 15:34
RE: DHT22 zawiesza program - przez Smaczek - 18-12-2016, 16:11
RE: DHT22 zawiesza program - przez Piter1401 - 18-12-2016, 16:24
RE: DHT22 zawiesza program - przez namok - 18-12-2016, 16:37
RE: DHT22 zawiesza program - przez Piter1401 - 18-12-2016, 16:53
RE: DHT22 zawiesza program - przez namok - 18-12-2016, 17:32
RE: DHT22 zawiesza program - przez Piter1401 - 18-12-2016, 18:02
RE: DHT22 zawiesza program - przez namok - 18-12-2016, 18:57
RE: DHT22 zawiesza program - przez Piter1401 - 18-12-2016, 19:57
RE: DHT22 zawiesza program - przez Piter1401 - 18-12-2016, 20:06
RE: DHT22 zawiesza program - przez namok - 18-12-2016, 20:37
RE: DHT22 zawiesza program - przez Piter1401 - 18-12-2016, 21:23
RE: DHT22 zawiesza program - przez namok - 18-12-2016, 21:39
RE: DHT22 zawiesza program - przez Piter1401 - 19-12-2016, 18:10
RE: DHT22 zawiesza program - przez mundak.pc - 19-12-2016, 12:20
RE: DHT22 zawiesza program - przez Piter1401 - 19-12-2016, 18:15
RE: DHT22 zawiesza program - przez namok - 19-12-2016, 19:37
RE: DHT22 zawiesza program - przez Piter1401 - 19-12-2016, 20:31
RE: DHT22 zawiesza program - przez Piter1401 - 19-12-2016, 21:48

Skocz do:


Przeglądający: 1 gości