标签:#<标签:0x00007fc4019b5740>#<标签:0x00007fc4019b5650>

在SSD1306显示器中显示我的坦克级别的错误。我很新的编码和我一直在研究这个话题。这是我有的:

HC-SR04传感器

传感器:

  • 平台:超声波
    trigger_pin:D6
    echo_pin:D7.
    名称:“级别传感器”
    ID:级别
    update_interval:250ms

  • 平台:模板
    传感器:
    Level_Sensor:
    entity_id:sensor.level_sensor.
    value_template:'{{100 - ((sensor.level_sensensor“)| int)/ 11 * 100)|int}}'
    Unit_of_measurement:'%full'
    friendly_name:坦克水平
    icon_template:'mdi:尺子'

字体:

  • 文件:“font.ttf”
    ID:FONT1.
    尺寸:15

  • 文件:“font.ttf”
    ID:FONT2.
    尺寸:28

#ssd1306展示
I2C:
SDA:D1
SCL:D2

展示:

  • 平台:SSD1306_I2C.
    型号:“SSD1306 128x64”
    reset_pin:d0.
    地址:0x3C.
    Lambda:| -
    它。打印(25,0,ID(FONT1),“水位”);
    if(id(级别).has_state()){
    它.Printf(100,20,ID(Font2),Textalign :: Top_right,ID(级别).state);
    }

请阅读如何帮助我们帮助您 - 或者如何提出一个好问题。虽然你应该阅读整件事,但点11点告诉你如何正确格式化代码。

你好
是你想知道Printf如何工作。

您需要告诉Printf打印出来。您需要一个带有标记的字符串,告诉您在哪里编写ID(级别).state。

它.printf(100,20,ID(Font2),Textalign :: Top_right,“%.1f”,ID(级别).state);这就是我为项目使用它的方式。它.printf(100,20,ID(FONT2),“%.1f”,ID(级别).state);

这应该用一个小数点打印出该值。我想要将其更改为2个小数或0个,对于NO小数。

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

我猜这个也可以给你一些指针。
https://www.cplusplus.com/reference/cstdio/printf/

我希望它能帮助你
/哑光

@Birchman.你完全正确,但我认为水平实际上是他想要打印的。他肯定想从模板传感器打印计算的值。

但是,该传感器似乎错误地配置了。很难看到代码,当建议正确地格式化时,没有拍摄,但是Entity_ID:似乎并不是ESPHOME中模板传感器的选项。事实上它看起来更像是一个比埃斯姆斯模板传感器的家庭助手模板19463331伟德国际传感器。