标签:# <标签:0 x00007fc40d129c78 > # <标签:0 x00007fc40d129b10 >

在我的ssd1306显示器上显示我的油箱液位时出现错误。我对编码很陌生,我一直在研究这个话题。以下是我所拥有的:

HC-SR04传感器

传感器:

  • 平台:超声
    trigger_pin: D6
    echo_pin: D7
    名称:“水平传感器”
    id:水平
    update_interval: 250毫秒

  • 平台:模板
    传感器:
    level_sensor:
    entity_id: sensor.level_sensor
    {{100-((states(" sensor.level_sensor ") | int) / 11 * 100) | int}} '
    unit_of_measurement:“%完整”
    friendly_name:坦克级别
    icon_template:“mdi:统治者”

字体:

  • 文件:“font.ttf”
    id: font1
    尺寸:15

  • 文件:“font.ttf”
    id: font2
    大小:28

# SSD1306显示
i2c:
sda: D1
sci: D2

显示:

  • 平台:ssd1306_i2c
    模型:“SSD1306 128 x64”
    reset_pin: D0
    地址:0 x3c
    λ:| -
    它。print(25, 0, id(font1), "水位");
    如果(id(水平).has_state ()) {
    它。printf(100,20, id(font2), TextAlign::TOP_RIGHT, id(level).state);

请阅读如何帮助我们帮助你——或者如何问一个好问题.虽然你应该阅读全部内容,第11点告诉你如何正确格式化你的代码。


你是想知道打印机是怎么工作的吗。

你需要告诉printf要打印什么。您需要一个带有标记的字符串,该标记告诉您将id(level).state写在哪里。

它。printf(100,20, id(font2), TextAlign::TOP_RIGHT, "%. "1 f id(水平).state);这是我在一个项目中使用它的方式。它。Printf (100, 20, id(font2), "%。1 f id(水平).state);

这应该打印出带有一个小数的值。如果你想要更多的话就把两个小数换成2,没有小数换成0。

它描述了https://esphome.io/components/display/index.html
在格式化的文本。

我想这个也能给你一些启示。
https://www.cplusplus.com/reference/cstdio/printf/

我希望它能帮助你
/这张

@birchman你是完全正确的,但是我不认为水平是他想要发表的。他肯定想打印模板传感器的计算值。

然而,这个传感器似乎配置错误。如果没有采纳正确格式化的建议,就很难看到代码,但是entity_id:似乎不是一个选项的模板传感器在esphome。事实上,它看起来更像一个家庭助理模板传感器,而不是一个es19463331伟德国际phome模板传感器。