Проблема с ЖК-дисплеем 1602, отображающим дополнительные десятичные точки при использовании датчика raspberry pi pico и DHT22 в качестве метеостанции

#temperature #lcd #micropython #raspberry-pi-pico

Вопрос:

Я все еще новичок в кодировании и смог собрать некоторый код из других источников для простой метеостанции, которую я построил. Кажется, все работает нормально, но у меня иногда возникают сбои, когда показания температуры на дисплее показывают дополнительные десятичные точки, превышающие 0,1-0,9. Я вставил команду округления до ближайшего десятичного знака, которая, как я думал, позаботится об этом, но это все равно происходит случайным образом. Нет никаких проблем при отображении показаний температуры через оболочку. Кажется, что он добавляет дополнительные десятичные точки при случайных показаниях температуры только на дисплее. Я включил фотографии и код. Определенно был бы признателен за любую помощь, которую я могу получить в решении этой проблемы. Спасибо.

 from machine import Pin
import utime as time
from pico_i2c_lcd import I2cLcd
from machine import I2C
from DHT22 import DHT22

i2c = I2C(id=1,scl=Pin(27),sda=Pin(26),freq=100000)
lcd = I2cLcd(i2c, 0x27, 2, 16)
dht_data = Pin(15,Pin.IN,Pin.PULL_UP)
dht_sensor=DHT22(dht_data,Pin(14,Pin.OUT),dht11=False)

while True:
     T,H = dht_sensor.read()
    #Converted to Fahrenheit (FT) for LCD display
    FT = T*1.8 32
    if T is None:
        print(" sensor error")
    else:
        print("{:3.1f}'C  {:3.1f}%".format(T,H))
    #DHT22 not responsive if delay too short
    time.sleep_ms(500)
    
    lcd.clear()
    lcd.move_to(0,0)
    lcd.putstr('Temp:')
    lcd.move_to(10,0)
    #If using Celsius, change (FT) to (T) and "F" to "C" on line below
    lcd.putstr(str(round(FT, 1)) "F")
    lcd.move_to(0,1)
    lcd.putstr('Humidity:')
    lcd.move_to(10,1)
    lcd.putstr(str(H) "%")`
 

как это обычно выглядит

икота, которая появляется случайным образом

Комментарии:

1. lcd.putstr('{5.1f} F'.format(FT))