You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CharLCD显示温湿度数据时遇构造函数无参数错误求助

解决RPLCD CharLCD构造函数参数错误问题

这个问题我之前在树莓派做温湿度显示项目时也踩过一模一样的坑!报错的核心原因是你用的RPLCD库版本和代码写法不匹配——新版RPLCD(v0.4.0及以后)重构了API,把硬件相关的实现从CharLCD抽象类里拆分出来了,直接实例化CharLCD自然会提示构造函数不接受参数。

具体修正步骤:

  1. 调整导入语句:
    原来的from RPLCD import CharLCD要替换成对应硬件连接方式的具体类,如果你用的是GPIO接线的LCD,就导入GPIOCharLCD:

    from RPLCD.gpio import GPIOCharLCD
    
  2. 替换实例化代码:
    把原来的CharLCD实例化改成GPIOCharLCD,你之前写的引脚、行列数参数完全可以保留:

    lcd = GPIOCharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23])
    

完整修正后的代码示例:

import sys
import Adafruit_DHT
from RPLCD.gpio import GPIOCharLCD

# 初始化LCD(用GPIOCharLCD替代原来的CharLCD)
lcd = GPIOCharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23])

while True:
    humidity, temperature = Adafruit_DHT.read_retry(11, 4)
    lcd.clear()  # 清屏准备刷新新数据
    if humidity is not None and temperature is not None:
        # 第一行显示温度
        lcd.write_string(f"Temp: {temperature:.1f}°C")
        # 切换到第二行开头位置
        lcd.cursor_pos = (1, 0)
        # 第二行显示湿度
        lcd.write_string(f"Humidity: {humidity:.1f}%")
    else:
        lcd.write_string("Sensor Read Fail!")

补充说明:

如果你的RPLCD是旧版本(v0.3.x及更早),原来的代码写法是有效的,但新版库为了支持更多硬件后端(比如I2C、SPI),将CharLCD改为抽象基类,必须使用对应后端的具体实现类(比如I2C连接的LCD要用I2CCharLCD)。

内容的提问来源于stack exchange,提问作者wonkyu lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:16:58