2

这是非常特定于 Adafruit CircuitPython 的,因此是唯一的 CircuitPython 标签

我正在玩 Metro Express M0 板,并试图让它在带有 CircuitPython 的Jansane 16x2 1602 LCD上显示。我正在尝试调整这些说明。我知道 Metro 正在查看该设备,至于

import board
import busio

i2c = busio.I2C(board.SCL, board.SDA)

while not i2c.try_lock():
    pass

while True:
    print("I2C addresses found:", [hex(device_address)
                                   for device_address in i2c.scan()])
    time.sleep(2)

我得到:

I2C addresses found: ['0x27']

这与 LCD 的默认地址一致。

但是,如果我尝试:

import adafruit_character_lcd.character_lcd_i2c as character_lcd

i2c = busio.I2C(board.SCL, board.SDA)
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2)

我得到:

...
File "adafruit_bus_device/i2c_device.py", line 171, in __probe_for_device
ValueError: No I2C device at address: 20

I2C 地址是否硬编码到 CircuitPython 中的库文件中?有什么方法可以设置地址 20 的 if 吗?

提前致谢!

4

2 回答 2

2

在这里查找类的定义

根据第 71 行,您似乎可以设置地址。如果要使用地址 0x27,请使用以下行:

lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2, address=0x27)
于 2020-05-19T04:53:55.630 回答
1

另请注意,https://github.com/adafruit/Adafruit_CircuitPython_CharLCD库支持 MCP23008 背包。MCP23008 芯片用于 Adafruit 背包。其他背包更有可能是该库不支持的 PCF8574 芯片。这个库:https ://github.com/dhalbert/CircuitPython_LCD支持 PCF8574,但是 API 不同。

于 2022-01-29T20:50:34.670 回答