Есть кто сталкивался с такой задачей. Надо сделать контроль температуры и влажности на DHT11 и выводить данные на тв. У меня проблема возникает при подключении библиотеки DHT в цикл ТВ. если убрать ДХТ то изображение есть на экране. Как только ставлю его обратно так сразу исчезает сигнал.
Если сигнал генерируется программно, то просто так ничего не выйдет. Вешайте опрос датчика на отдельный МК и соединяйте их по SPI. А вообще неплохо бы такой вопрос начинать с приведения кода.
#include<DHT.h> #include <TVout.h> #include <fontALL.h> #define DHTPIN 2 // what pin we're connected to #define DHTTYPE DHT22 // DHT 22 (AM2302) int temp=13; int hum=11; int temp1=12; int temp2=10; DHT dht(DHTPIN, DHTTYPE); TVout TV; //#include <DHT.h> void setup() { TV.begin(NTSC,120,96); dht.begin(); pinMode(temp,OUTPUT); pinMode(hum,OUTPUT); pinMode(temp1,OUTPUT); pinMode(temp2,OUTPUT); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); int val = analogRead(0); int valh = analogRead(1); valh = constrain (valh, 0, 1000); val = constrain (val, 18, 1000); int templevel = map(val, 18, 1000, 95, 0); int humlevel = map(valh, 0, 1000, 100.0, 0.0); delay(1); if (t<templevel){ digitalWrite(temp,HIGH); } else digitalWrite(temp,LOW);//main relay if (t<templevel-5){ digitalWrite(temp1,HIGH); } else //secondary relay digitalWrite(temp1,LOW); if (t<templevel-8){ digitalWrite(temp2,HIGH); } else //aux relay digitalWrite(temp2,LOW); if (h<95){ digitalWrite(hum,HIGH);} else digitalWrite(hum,LOW); if (isnan(t) || isnan(h)) { TV.select_font(font6x8); TV.println("CHECK DHT"); } else { TV.select_font(font8x8); TV.println(" HUMIDITY %: "); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println(h); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println("Required H"); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println(humlevel); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); delay(5000); TV.clear_screen(); TV.println(" Temperture *C: "); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println( t); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println("Required T"); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println(templevel); delay(5000); TV.clear_screen(); } }
А можно ещё написать так Спойлер: Код Код (C++): #include<DHT.h> #include <TVout.h> #include <fontALL.h> #define DHTPIN 2 // what pin we're connected to #define DHTTYPE DHT22 // DHT 22 (AM2302) int temp=13; int hum=11; int temp1=12; int temp2=10; DHT dht(DHTPIN, DHTTYPE); TVout TV; //#include <DHT.h> void setup() { TV.begin(NTSC,120,96); dht.begin(); pinMode(temp,OUTPUT); pinMode(hum,OUTPUT); pinMode(temp1,OUTPUT); pinMode(temp2,OUTPUT); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); int val = analogRead(0); int valh = analogRead(1); valh = constrain (valh, 0, 1000); val = constrain (val, 18, 1000); int templevel = map(val, 18, 1000, 95, 0); int humlevel = map(valh, 0, 1000, 100.0, 0.0); delay(1); if (t<templevel){ digitalWrite(temp,HIGH); } else digitalWrite(temp,LOW);//main relay if (t<templevel-5){ digitalWrite(temp1,HIGH); } else //secondary relay digitalWrite(temp1,LOW); if (t<templevel-8){ digitalWrite(temp2,HIGH); } else //aux relay digitalWrite(temp2,LOW); if (h<95){ digitalWrite(hum,HIGH);} else digitalWrite(hum,LOW); if (isnan(t) || isnan(h)) { TV.select_font(font6x8); TV.println("CHECK DHT"); } else { TV.select_font(font8x8); TV.println(" HUMIDITY %: "); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println(h); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println("Required H"); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println(humlevel); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); delay(5000); TV.clear_screen(); TV.println(" Temperture *C: "); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println( t); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println("Required T"); TV.select_font(font4x6); TV.println( "\n"); TV.select_font(font8x8); TV.println(templevel); delay(5000); TV.clear_screen(); } } Согласитесь приятнее читать.