Могу ли я установить адрес i2c LCD в CircuitPython на значение, отличное от 20?
Это довольно специфичный для Adafruit CircuitPython, поэтому единственный тег CircuitPython
Я играю с платой Metro Express M0 и пытаюсь отобразить ее на ЖК-дисплее Jansane 16x2 1602 с помощью CircuitPython. Я пытаюсь адаптировать эти инструкции. Я знаю, что метро видит устройство, что касается
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']
что соответствует адресу ЖК-дисплея по умолчанию.
Однако, если я попробую:
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?
Заранее спасибо!
2 ответа
Также обратите внимание, что библиотека https://github.com/adafruit/Adafruit_CircuitPython_CharLCD поддерживает рюкзаки MCP23008. Чипы MCP23008 используются в рюкзаках Adafruit. Другие рюкзаки, скорее всего, будут чипами PCF8574, которые не поддерживаются этой библиотекой. Эта библиотека: https://github.com/dhalbert/CircuitPython_LCD поддерживает PCF8574, но отличается API.
Я посмотрел здесь, чтобы найти определение класса.
Судя по строке 71, кажется, что вы можете установить адрес. Если вы хотите использовать адрес 0x27, используйте эту строку:
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2, address=0x27)