а может и не глюк. Собственно проблема: Выше 10 градусов температуры все ок. Как только температура ниже, то например вместо 9 на экране 90, вместо 6 на экране 60 прога: Код (Text): // Пример использования датчика //влажности и температуры DHT11 // а так же часы DS1307. //Дисплей MT-20S4A-2FLA, производитель МЭЛТ #include <LiquidCrystal.h> #include <dht11.h> #include <DS1307.h> LiquidCrystal lcd(4, 5, 10, 11, 12, 13); dht11 sensor; #define DHT11PIN 8 DS1307 rtc(20, 21); void setup() { lcd.begin(24, 4); lcd.clear(); } void loop() { switch (sensor.read(DHT11PIN)) { case DHTLIB_OK: break; case DHTLIB_ERROR_CHECKSUM: lcd.print(«Checksum error»); delay(2000); return; case DHTLIB_ERROR_TIMEOUT: lcd.print(«Time out error»); delay(2000); return; default: lcd.print(«Unknown error»); delay(1000); return; } lcd.setCursor(1, 0); lcd.print(«t,C:»); lcd.print(sensor.temperature); lcd.setCursor(10, 0); lcd.print(«v,%:»); lcd.print(sensor.humidity); lcd.setCursor(0, 2); lcd.print(rtc.getTimeStr()); lcd.setCursor(0, 3); lcd.print(rtc.getDOWStr(FORMAT_SHORT)); lcd.setCursor(6, 3); lcd.print(rtc.getDateStr()); delay(1000); }
Это глюк не DHT11, а ваш. Вы печатаете число "10" - печатается два символа, а потом поверх цифру "9" - печатается один символ, а кто нолик затирать будет?
Числа лучше выравнивать вправо, как мне кажется. А потому пробел надо выводить перед числом, если оно меньше 10. По данной ссылке они выводят по факту длинную строку подряд с пробелом на конце, который и "убивает" символ, остающийся при понижении температуры с двузначной величины до однозначной.
Точно, пропустил позиционирование на новую строку после вывода температуры. Хотя, если рассчитано на домашнее применение, то температуры ниже 18 градусов выглядят как-то нехорошо, не говоря уже о температурах ниже 10. Наверное потому никто и не жалуется.
да.... так и сделал.... тока вот проверить не получается... шнура до улицы не хватает. Выносил на улицу плату, морозил, заносил обратно, включал, вроде все ок