Могу ли я установить адрес 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)
Другие вопросы по тегам