• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Вывод информации на LCD дисплей 16×2 или 20×4 в ESPHome

18 декабря, 2021

lcd 20×4: http://alii.pub/66ack3

lcd 16×2: http://alii.pub/66acln

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

Дисплеи LCD на 16×2 и 20×4 наверное самые популярные из дисплеев на Arduino. Мне кажется у каждого человека, кто увлекается платами arduino и esp, у каждого есть такой дисплей. И будет правильным показать как выводить информацию с датчиков на этот дисплей.

Вывод осуществляется очень просто. Сейчас постараюсь здесь его описать.

Давайте сделаем следующим образом, ниже я добавлю готовый код с датчиком BME280 и выводом информации (температуры, влажности и давления) с этого датчика на дисплей LCD20x4. И попробую описать каждую строчку для того чтоб было понятно, что и зачем.


i2c:
  sda: 21
  scl: 22
  scan: true

  
sensor:
  - platform: bme280
    temperature:
      name: "BME280 Temperature"
      id: temperature
    pressure:
      name: "BME280 Pressure"
      id: pressure
    humidity:
      name: "BME280 Humidity"
      id: humidity
    address: 0x76
    update_interval: 10s
    
display:
  - platform: lcd_pcf8574
    dimensions: 20x4
    address: 0x27
    lambda: |-
      it.printf(2, 0, "%.1f", id(temperature).state);
      it.printf(2, 1, "%.1f", id(humidity).state);
      it.printf(2, 2, "%.1f", id(pressure).state);
      it.print(0, 0, "T=");
      it.print(0, 1, "H=");
      it.print(0, 2, "P=");
      

Итак, первый блок, это блок i2c там, мы указываем на каких пинах esp32 значатся пины SCL и SDA шины i2c.

Далее у нас объявляется Sensor. В нашем случае это сенсор BME280 и объявляется у него 3 параметр (температура, влажность и далвение). i2c адрес этого датчика и update_interval – это интервал с которым будут сниматься показания с датчика. Все это я уже показывал как сделать в этой статье:

Подключение датчика температуры, влажности и давления bme280 в ESPHome и Home Assistant.

Но, к каждому блоку параметров (температура, влажность и давление) мы добавили еще id. И назвал я каждый id произвольно, но так, чтоб понимал какой id к какому блоку параметров датчика bme280 он относится. В общем получается , что я назвал их temperature,humidity,pressure.

Эти id какраз и нужны для того, чтоб описывать какую информацию выводить на дисплей.

Далее у нас идет блок Display. dimensions: 20x4 Тут мы описываем, что это дисплей lcd_pcf8574 так называется i2c преобразователь для LCD дисплеев строчных.

Далее указываем размер дисплея. В моем случае это 20×4, но если у Вас поменьше, указываете 16×2.

address: 0x27  Ну тут понятно, это i2c адрес дисплея.

Ну а далее идет lambda. Это какраз блок вывода информации. Вот строчка вывода температуры:

it.printf(2, 0, "%.1f", id(temperature).state);

Где 2  это столбец начала вывода информации. Отсчет начинается с цифры 0. Так как информация будет просто цифрами выводиться, а я хотел впереди еще поставить “T=” То по этому и поставил цифру 2. Отступив тем самым 2 первых места под символы.

0 – это строка на которой выводить информацию. Собственно у меня выводится на первой строке, по этому цифра 0. Так – же по аналогии постороены следующие 2 строчки кода, там меняется только номер строки.

Следующий параметр, это "%.1f". Это формат вывода информации. знак “%” это целые числа. 1f – это округление до 1 цифры после запятой. Следовательно если нам 2 цифры нужны после запятой, то пишем %.2f

Ну и последнее  это id(temperature).state Собственно тут меняется только то что в скобках. А именно это id температуры, который мы указывали в блоке сенсора. Если такого id не объявлено ни где в коде, то выдаст ошибку и не скомпилируется наш код.

Ну далее строчки

it.printf(2, 1, "%.1f", id(humidity).state);

it.printf(2, 2, "%.1f", id(pressure).state);

Они такие -же только для вывода информации давления и влажности.

Ну и последние 3 строчки – это

it.print(0, 0, "T=");

it.print(0, 1, "H=");

it.print(0, 2, "P=");

Собственно тут все так-же как я описал выше, только значения "T=" "H=" "P="  – это обычные обозначения произвольные которые я написал от себя, чтоб было понятно где температура, где значения влажности. а где давления. Вы тут можете и полностью написать "Temperature=" Но у дисплея не много букв помещается, по этому я пишу обычно по короче.

Ну и собственно вот как все это выглядит в итоге:

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·