如何将多个变量写入单个LCD显示行?

时间:2015-12-06 11:20:27

标签: python sensor lcd

我是Python中的菜鸟,所以请耐心等待。 以下代码用于湿度和温度传感器读取通过I2C接口连接的LCD屏幕20x4。 该计划运作良好!但是我想在同一行中包括摄氏度和华氏温度的读数,我怎样才能显示价值' f'或者' f1' (在Celsius测量之后)(代表华氏温度转换),它看起来像:

Temp_Entry:20.4C / 68F ........

谢谢!

#!/usr/bin/env python3
import lcddriver 
import time
import Adafruit_DHT as dht

lcd = lcddriver.lcd()

while (True):

#Read values from AM2302 Sensors in Pin 4 & 24
    h,t = dht.read_retry(dht.AM2302, 4)
    h1,t1 = dht.read_retry(dht.AM2302, 24)
#Humidity calibration compensation
    h1 += 5
    h -= 9 
#Celcius to Fahrenheit conversion
    f = t * 9 / 5 + 32
    f1 = t1 * 9 / 5 + 32
# Print temp and humidity values
    lcd.cursor_pos = (0,0)
    lcd.lcd_display_string ('Temp_Entry:{0:0.1f}C'.format(t1), 1)
    lcd.lcd_display_string ('Hum_Entry :{1:0.1f}%'.format(t1, h1), 2)
    lcd.lcd_display_string ('Temp_Back :{0:0.1f}C'.format(t), 3)
    lcd.lcd_display_string ('Hum_Back  :{1:0.1f}%'.format(t, h), 4)

    time.sleep(10)

最终代码(纠正/清理后):

#!/usr/bin/env python3
import lcddriver
import time
import Adafruit_DHT as dht

lcd = lcddriver.lcd()

while (True):

#Read values from AM2302 Sensors in Pin 4 & 24
    h,t = dht.read_retry(dht.AM2302, 4)
    h1,t1 = dht.read_retry(dht.AM2302, 24)
#Humidity calibration compensation
    h1 += 5
    h -= 9 
#Celcius to Fahrenheit conversion
    f = t * 9 / 5 + 32
    f1 = t1 * 9 / 5 + 32
# Print temp and humidity values
    lcd.cursor_pos = (0,0)
    lcd.lcd_display_string ('Temp_Ent:{0:0.1f}C/{1:0.1f}F'.format(t1, f1), 1)
    lcd.lcd_display_string ('Hum_Ent :{0:0.1f}%'.format(h1), 2)
    lcd.lcd_display_string ('Temp_Bak:{0:0.1f}C/{1:0.1f}F'.format(t, f), 3)
    lcd.lcd_display_string ('Hum_Bak :{0:0.1f}%'.format(h), 4)

    time.sleep(10)

1 个答案:

答案 0 :(得分:1)

您可以像这样继续字符串:

lib_4_0_level_9_1

事实上,当你每次只调用一个参数时,我不明白为什么你给.format两个参数中的每一行。 这是它的工作原理:

'Temp_Back :{0:0.1f}C/{1:0.1f}F'.format(t, f)

将导致:

  

Hello World

护腕中的参数只会调用__th位置的参数,这就是为什么(t,f)会让你同时调用celcius和farenheit中的温度。