当前位置:   article > 正文

ESPHOME_驱动OLED显示时间_esphome time

esphome time

开发环境

主控: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!");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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);       
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

全部配置代码

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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/451227
推荐阅读
相关标签
  

闽ICP备14008679号