Подключил два LCD 1602 по I2C к Arduino Uno

Тема в разделе "Глядите, что я сделал", создана пользователем Desert Ops, 29 ноя 2015.

  1. Desert Ops

    Desert Ops Нерд

    Возникла задача подключить два и более LCD к Arduino - успешно решена. Возможно, кому-то нужно. Все просто - главный параметр I2C - адрес устройства.
     
  2. Desert Ops

    Desert Ops Нерд

    Код (C++):
    #include <Wire.h>                            // подключаем библиотеку
    #include <LiquidCrystal_I2C.h>       // подключаем библиотеку
    LiquidCrystal_I2C lcd0(0x23,16,2);  // устанавливаем адрес для LCD0 0x23, LCD1602 - 16 символов и 2 строки
    LiquidCrystal_I2C lcd1(0x27,16,2);  // устанавливаем адрес для LCD1 0x27, LCD1602 - 16 символов и 2 строки

    int interval = 0;                                  // переменная счетчика
    void setup()                                      // установки
    {
      lcd0.init();                                       // инициализация LCD0
      lcd1.init();                                       // инициализация LCD1
      lcd0.backlight();                              // включаем подсветку LCD0
      lcd1.backlight();                              // включаем подсветку LCD1
      lcd0.clear();                                    // очистка LCD0
      lcd1.clear();                                    // очистка LCD1
      lcd0.setCursor(4, 0);                      // устанавливаем курсор LCD0 на верхнюю строку, 5 знакоместо
      lcd1.setCursor(4, 0);                      // устанавливаем курсор LCD1 на верхнюю строку, 5 знакоместо
      lcd0.print("test 0");                         // вывод текста на LCD0
      lcd1.print("test 1");                         // вывод текста на LCD1
      lcd0.setCursor(1, 1);                      // устанавливаем курсор LCD0 на нижнюю строку, 2 знакоместо
      lcd1.setCursor(1, 1);                      // устанавливаем курсор LCD1 на нижнюю строку, 2 знакоместо
      lcd0.print("count:");                        // вывод текста на LCD0
      lcd1.print("count:");                        // вывод текста на LCD1
      lcd0.setCursor(8, 1);                      // устанавливаем курсор LCD0 на нижнюю строку, 9 знакоместо
      lcd1.setCursor(8, 1);                     // устанавливаем курсор LCD1 на нижнюю строку, 9 знакоместо
      lcd0.print(interval);                        // вывод значения переменной на LCD0
      lcd1.print(interval);                        // вывод значения переменной на LCD1
    }
    void loop()                                       // основной цикл
    {
      delay(500);                                   // задержка 0,5 секунды
      interval++;                                    // увеличиваем переменную на единицу
      lcd0.setCursor(8, 1);                    // устанавливаем курсор LCD0 на нижнюю строку, 9 знакоместо
      lcd1.setCursor(8, 1);                    // устанавливаем курсор LCD1 на нижнюю строку, 9 знакоместо
      lcd0.print(interval);                       // вывод значения переменной на LCD0
      lcd1.print(interval);                       // вывод значения переменной на LCD1
    }
     
    Последнее редактирование: 5 дек 2015
    vvr, alp69 и DrProg нравится это.
  3. Desert Ops

    Desert Ops Нерд

    [​IMG] [​IMG] Установка адреса устройства - механическая процедура. Я, запаяв А2 перемычку в модуле I2C, получил адрес второго LCD как 0х23. Проверил i2c scannerом. На макетке видно RTC, модуль подключен тоже по I2C, но не задействован в этой схеме, пусть вас не смущает.
     
    Последнее редактирование: 29 ноя 2015
  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    вставить код нормально и добавить фоточек - будет хорошо.
     
    9xA59kK нравится это.
  5. Desert Ops

    Desert Ops Нерд

    Tomasina, выполнено. Спасибо за совет.
     
  6. DrProg

    DrProg Вечный нерд

    Для подключения через I2C требуется три пина, правильно понимаю? То есть, если нужен 1 дисплей, то через регистр 595 прицепиться даже проще и дешевле. Если более 1, то вариант замечательный!
     
    ИгорьК нравится это.
  7. ИгорьК

    ИгорьК Гуру

    Нет. Четыре. Плюс минус данные и тактирование.
    Максим! Я ваш поклонник!
     
  8. DrProg

    DrProg Вечный нерд

    Что за желтый проводок с пина 3 идет?
     
    ИгорьК нравится это.
  9. ИгорьК

    ИгорьК Гуру

    Что бы проводок не значил - есть спецификация I2C. Там проводков лишних не предусмотрено. Ни единым больше.
     
  10. DrProg

    DrProg Вечный нерд

    Что за устройство стоит на макетке на втором фото?
     
  11. Desert Ops

    Desert Ops Нерд

    Минимум, если нет проблем с логическими уровнями: GND, SDA, SCL
     
  12. Desert Ops

    Desert Ops Нерд

    Это SQW на RTС DSC3231 для опытов с ней
     
  13. Desert Ops

    Desert Ops Нерд

    RTC 3231
     
  14. DrProg

    DrProg Вечный нерд

    Она и смутила. Ну то есть преимущество в 1 пин все же есть. И недостаток в цене. )
     
    ИгорьК нравится это.
  15. Desert Ops

    Desert Ops Нерд

    Прошу вас, объясните, как SQW RTC работает с I2C и какое преимущество в 1 пин появляется. Спасибо.
     
  16. DrProg

    DrProg Вечный нерд

    Я имел ввиду преимущество в 1 пин перед подключением дисплея через регистр 595, там их надо 3.
     
    ИгорьК нравится это.
  17. Desert Ops

    Desert Ops Нерд

    Режиссер Роберт Родригес и актер Джон Малкович сняли фильм, который можно будет увидеть только через 100 лет — 18 ноября 2115 года, сообщает Variety. Они поместили его в специальную капсулу и заперли в хранилище в доме Людовика XIII во Франции. Проект заказал коньячный бренд Louis XIII.
     
  18. ИгорьК

    ИгорьК Гуру

    вообще то I2C считается двухпроводным интерфейсом, 1wire - однопроводным. SPI - трехпроводным. Земля и питание не учитываются. При этом не имеет значения, что тот-же SPI может реализовываться и большим количеством вспомогательных сигналов.
     
  19. Desert Ops

    Desert Ops Нерд

    Кстати, LCD разных партий или поставок или фирм имеют разную яркость подсветки, это проверено. Даже, имеющимся на I2C адаптере подстроечным резистором, выровнять яркости обоих LCD не удаётся.
     
  20. vvr

    vvr Инженерище

    подстроечный резистор на адаптере регулирует контрастность а не яркость:)