глюк DHT11, как побороть?

Тема в разделе "Arduino & Shields", создана пользователем lorgus, 8 янв 2015.

  1. lorgus

    lorgus Нуб

    а может и не глюк.
    Собственно проблема:
    Выше 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);

    }
     
  2. ANV

    ANV Гуру

    Если температура меньше 10, то после цифры напечатайте пробел, у вас нолик от десятки остается
     
  3. Apofiz

    Apofiz Гик

    Когда тапикастер поймет что это не глюк DHT11 а проблема вывода на дисплей тогда ее и решит.
     
  4. lorgus

    lorgus Нуб

    странно, что нигде о таком глюке не упоминается....
     
  5. ANV

    ANV Гуру

    Это глюк не DHT11, а ваш.
    Вы печатаете число "10" - печатается два символа, а потом поверх цифру "9" - печатается один символ, а кто нолик затирать будет? :)
     
  6. lorgus

    lorgus Нуб

    не думаю, что я первый стыкую LCD с DTH11 , и чет ни у кого проблем не возникало...
    например тут
     
  7. geher

    geher Гуру

    Числа лучше выравнивать вправо, как мне кажется. А потому пробел надо выводить перед числом, если оно меньше 10.
    По данной ссылке они выводят по факту длинную строку подряд с пробелом на конце, который и "убивает" символ, остающийся при понижении температуры с двузначной величины до однозначной.
     
  8. ANV

    ANV Гуру

    Там знак "С" продублируется.
     
  9. geher

    geher Гуру

    Точно, пропустил позиционирование на новую строку после вывода температуры.

    Хотя, если рассчитано на домашнее применение, то температуры ниже 18 градусов выглядят как-то нехорошо, не говоря уже о температурах ниже 10. Наверное потому никто и не жалуется.
     
  10. GVitas

    GVitas Нуб

    добавь lcd.clear(); после опроса датчика, перед выводом на экран...
     
  11. lorgus

    lorgus Нуб

    да.... так и сделал.... тока вот проверить не получается... шнура до улицы не хватает. Выносил на улицу плату, морозил, заносил обратно, включал, вроде все ок