Witajcie,
na początek uprzedzę, że jestem mocno początkującym w temacie arduino
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.
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.
na początek uprzedzę, że jestem mocno początkującym w temacie arduino
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.