проблемы с Liqid cristal I2C

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем antik65, 18 июл 2016.

  1. vvr

    vvr Инженерище

    для начала правильно опубликовать свой код
     
  2. yden

    yden Гик

    Setup:
    Код (C++):
    //дисплей
      lcd.init();
      lcd.backlight();// Включаем подсветку дисплея
      lcd.setCursor(0, 0);
      lcd.print("iHouse");
      lcd.setCursor(14, 0);
      lcd.print("p=");
      lcd.setCursor(8, 0);
      lcd.print("b=");

      lcd.setCursor(0, 1);
      lcd.print("out: t=");
      lcd.setCursor(10, 1);
      lcd.print("'C");
      lcd.setCursor(14, 1);
      lcd.print("h= ");
      lcd.setCursor(18, 1);
      lcd.print("%");

      lcd.setCursor(0, 2);
      lcd.print("kux: t=");
      lcd.setCursor(10, 2);
      lcd.print("'C");
      lcd.setCursor(14, 2);
      lcd.print("h= ");
      lcd.setCursor(18, 2);
      lcd.print("%");

      lcd.setCursor(0, 3);
      lcd.print("san: t=");
      lcd.setCursor(10, 3);
      lcd.print("'C");
      lcd.setCursor(14, 3);
      lcd.print("h= ");
      lcd.setCursor(18, 3);
      lcd.print("%");
    loop:
    Код (C++):
    //дисплей
      lcd.setCursor(10, 0);
      lcd.print(ceil(t_budka), 0);

      lcd.setCursor(16, 0);
      lcd.print(ceil(p_atm), 0);

      lcd.setCursor(8, 1);
      lcd.print(ceil(t_out), 0);

      lcd.setCursor(16, 1);
      lcd.print(ceil(h_out), 0);

      lcd.setCursor(8, 2);
      lcd.print(ceil(t_kux), 0);

      lcd.setCursor(16, 2);
      lcd.print(ceil(h_kux), 0);

      lcd.setCursor(8, 3);
      lcd.print(ceil(t_san), 0);

      lcd.setCursor(16, 3);
      lcd.print(ceil(h_san), 0);
     
  3. vvr

    vvr Инженерище

    и в каких строках беда ?
     
  4. Vetrinus

    Vetrinus Гик

    Нужно узнать, как кодируется пустой символ, и вставлять этот символ, в случае если переменная одноразрядна.
    Либо каждый раз выводить и стирать (lcd.clear()) всю информацию заново, вынеся код из сетапа.
     
  5. yden

    yden Гик

    в этих
     
    Последнее редактирование модератором: 23 авг 2016
  6. DIYMan

    DIYMan Гуру

    Не в этих, а в этих:
    Код (C++):
    lcd.setCursor(10, 0);
      lcd.print(ceil(t_budka), 0);

      lcd.setCursor(16, 0);
      lcd.print(ceil(p_atm), 0);

      lcd.setCursor(8, 1);
      lcd.print(ceil(t_out), 0);

      lcd.setCursor(16, 1);
      lcd.print(ceil(h_out), 0);

      lcd.setCursor(8, 2);
      lcd.print(ceil(t_kux), 0);

      lcd.setCursor(16, 2);
      lcd.print(ceil(h_kux), 0);

      lcd.setCursor(8, 3);
      lcd.print(ceil(t_san), 0);

      lcd.setCursor(16, 3);
      lcd.print(ceil(h_san), 0);
    Смотрите: если ранее на дисплее было написано 12 градусов, например, а потом пишем 9 градусов, то двойка останется там, где и была выведена, т.е. - не затрётся. Чтобы затиралось, надо немного подпилить код, навскидку как-то так:
    Код (C++):

    void rightPrint(int num)
    {
        if(num < 10)
            lcd.print(' ');
         
        lcd.print(num);
     
    }

      lcd.setCursor(10, 0);
      rightPrint(ceil(t_budka));

      lcd.setCursor(16, 0);
      rightPrint(ceil(p_atm));

      lcd.setCursor(8, 1);
      rightPrint(ceil(t_out));

      lcd.setCursor(16, 1);
      rightPrint(ceil(h_out));

      lcd.setCursor(8, 2);
      rightPrint(ceil(t_kux));

      lcd.setCursor(16, 2);
      rightPrint(ceil(h_kux));

      lcd.setCursor(8, 3);
      rightPrint(ceil(t_san));

      lcd.setCursor(16, 3);
      rightPrint(ceil(h_san));
     
     
  7. В общем на мой вопрос забили.. Повторюсь проблема так и не решена.. откат к старой версии не помогает.

     
  8. parovoZZ

    parovoZZ Гуру

    А у нас есть какие-то обязательства перед тобой?
    Нам от этого ни тепло ни холодно
    версии чего?
    С экраном нормальные программисты работают примерно так
    http://narodstream.ru/avr-urok-12-lcd-indikator-16x2-chast-1/
    и всё у них получается.
     
  9. Snewday

    Snewday Нуб

    Или по иному писать скетч или сделай проверку, что если температура меньше 10 , то в нужную ячейку отправь пустой символ " "!
     
  10. ratman

    ratman Нерд

    Господа, у вас сложности с выводом форматированного текста?
     
  11. kapuzin

    kapuzin Нуб

    Доброе всем. Наверное сложно обьяснять ламерам, но куда ещё обращаться? В общем всё та же проблема - высвечивается первый символ в каждой строке (текст роли не играет). Ну к примеру такой текст:
    Код (C++):
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27, 16, 2); // Для экрана 16х2 (двухстрочный)
    void setup()
    {
    lcd.begin();
    lcd.setCursor(0, 0); // 1 строка
    lcd.print("LCD I2C Test");
    lcd.setCursor(0, 1); // 2 строка
    lcd.print("0123456789987654");

    }
    void loop()
    {
    }
     
  12. kapuzin

    kapuzin Нуб

    В общем светится соответственно "L" в первой строке и "0" во второй :(. Где то как то было "lcd.init()". Почему в этом случае пишет ошибку - "class LiquidCrystal_I2C has no member named init". В общем он уже мне моск вынес. А, ну и подключение как в описании:
    • GND экрана подключаем к GND Arduino
    • VCC экрана подключаем к +5V Arduino
    • SDA экрана подключаем к 4 аналоговому пину Arduino Uno
    • SCL экрана подключаем к 5 аналоговому пину Arduino Uno
     
    Последнее редактирование: 26 фев 2019
  13. vvr

    vvr Инженерище

    библиотек куча.
    пробуйте разные, что то да подберёте.
     
  14. kapuzin

    kapuzin Нуб

    С "lcd begin" это никак не связано?
     
  15. parovoZZ

    parovoZZ Гуру

    выкинь нафик этот экран.
     
  16. kapuzin

    kapuzin Нуб

    Второй показывает то же самое, не в экране дело. Если же это радикальный метод решения проблемы - я скоро, похоже приду к нему самостоятельно. Не, ну серьёзно ….. никаких мыслей?
     
  17. parovoZZ

    parovoZZ Гуру

    реализуй свои методы работы с экраном. Информации в сети предостаточно для этого.
     
  18. kapuzin

    kapuzin Нуб

    Именно этим я и пытаюсь заняться, неужели не заметно?
     
  19. 9xA59kK

    9xA59kK Гик

    А какая версия IDE?? Когда я после IDE 1.6.2 перешел на новую 1.8.5.
    У меня было похожая проблема все было решено заменой библиотеки.
     
  20. parovoZZ

    parovoZZ Гуру

    по коду не видно.