ESPHOME_驱动OLED显示时间

开发环境

主控:ESP12-F
屏幕:0.96寸OLED,I2C接口
ESPHOME版本:v2023.6.4

参考资料

SSD1306 OLED Display

  1. ESPHOME ssd1306_i2c驱动支持SSD1306、SSD1305、SH1106主控的屏幕。
  2. 该组件必须使用普通I2C总线接口连接屏幕。
  3. 如果使用SPI接口连接屏幕,可参考Over SPI

编写配置文件

font:
  - file: # 创建一个字库
      type: gfonts
      family: Roboto
      weight: 900
    id: my_gfont
    size: 16
    
i2c:   # 配置I2C接口信息
  sda: GPIO2
  scl: GPIO14
  frequency: 400k
 
display:   # 配置屏幕
- platform: ssd1306_i2c
  model: "SSD1306 128x64"
  address: 0x3C
  lambda: |-
    it.print(0, 0, id(font), "Hello World!");

display 参数说明

  • platform: 显示器型号
    • SSD1306 128x32 - SSD1306 128列 32行
    • SSD1306 128x64
    • SSD1306 96x16
    • SSD1306 72x40
    • SSD1306 64x48
    • SH1106 128x32
    • SH1106 128x64
    • SH1106 96x16
    • SH1106 64x48
    • SH1107 128x64
    • SSD1305 128x32
    • SSD1305 128x64
  • reset_pin (可选参数): Reset引脚
  • address (可选参数, int): 屏幕I2C地址, 默认为0x3C
  • rotation (可选参数): 设置屏幕选转,默认为0°,可选:90°, 180°, 270°。
  • contrast (可选参数, %): 设置对比度,默认为100%。
  • brightness (可选参数, %): 设置显示亮度,默认100% ,仅SSD1305可用。
  • external_vcc (可选参数, boolean): 是否使用了外部电源, 如果是,设置为true,默认为false。
  • flip_x (可选参数, boolean): 翻转屏幕上的水平轴。默认为true。
  • flip_y (可选参数, boolean): 翻转屏幕上的垂直轴。默认为true。
  • offset_x (可选参数, int): 如果某个水平像素丢失,设置此选项。数字只允许在-32~32之间。默认为0。
  • offset_y (可选参数, int): 如果缺少一些垂直像素,请设置此选项。数字只允许在-32~32之间。默认为0。
  • invert (可选参数, boolean): 反转显示器上的所有像素状态。默认为false。
  • lambda (可选参数, lambda): 用于在显示器上呈现内容的lambda。有关更多信息,请参阅 Display Rendering Engine
  • update_interval (可选参数, Time): 重新绘制屏幕的间隔时间。默认为1秒。
  • pages (可选参数, list): 显示页面而不是单个lambda。参见Display Pages
  • id (可选参数, ID): 手动指定用于代码生成的ID。

为了加快显示更新过程,可以选择更高的I²C频率。

编写时间组件

时间组件相关说明请参考ESPHOME Time组件

time:
  - platform: sntp
    id: sntp_time
    timezone: Asia/Shanghai
    on_time:
      - seconds: "*"
        then:
          lambda: |-
            auto time = id(sntp_time).now();
            ESP_LOGW("time", "%d-%d-%d %d:%d:%d", time.year, time.month, time.day_of_month, time.hour, time.minute, time.second);       

全部配置代码

esphome:
  name: olcd-demo
  friendly_name: OLCD_demo

esp8266:
  board: esp12e

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "********************************"

ota:
  password: "*****************************"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Olcd-Demo Fallback Hotspot"
    password: "**********************"

captive_portal:


font:
  - file:
      type: gfonts
      family: Roboto
      weight: 900
    id: my_gfont
    size: 16

i2c:   # 配置I2C接口信息
  sda: GPIO2
  scl: GPIO14
  frequency: 400k

display:
  - platform: ssd1306_i2c
    id: my_oled
    model: "SSD1306 128x64"
    address: 0x3C
    lambda: |-
      if (id(sntp_time).now().is_valid()) {
        auto time = id(sntp_time).now();
        it.printf(0, 16, id(my_gfont), "%04d:%02d:%02d", time.year, time.month, time.day_of_month);
        it.printf(0, 32, id(my_gfont), "%02d:%02d:%02d", time.hour, time.minute, time.second);
      } else {
        it.print(0, 0, id(my_gfont), "NTP...");
      }

time:
  - platform: sntp
    id: sntp_time
    timezone: Asia/Shanghai
    on_time:
      - seconds: "*"
        then:
          lambda: |-
            auto time = id(sntp_time).now();
            ESP_LOGW("time", "%d-%d-%d %d:%d:%d", time.year, time.month, time.day_of_month, time.hour, time.minute, time.second);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新程序猿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值