Я пытаюсь подключить PyBoard (я не уверен насчет аппаратной версии, но он работает с uPython 1.9.3) к светодиодному дисплею на основе SSD1306 через I2C.
Физическое соединение работает, и я могу установить соединение I2C, посмотреть устройство и убедиться, что оно доступно для чтения по соединению I2C.
Однако я не могу использовать модуль ssd1306
из uPython Github . Я могу нормально импортировать модуль, но класс SSD1306
не будет инициализирован. Код, который терпит неудачу, таков:
class SSD1306(framebuf.FrameBuffer):
def __init__(self, width, height, external_vcc):
self.width = width
self.height = height
self.external_vcc = external_vcc
self.pages = self.height // 8
self.buffer = bytearray(self.pages * self.width)
super().__init__(self.buffer, self.width, self.height, framebuf.MONO_VLSB)
self.init_display()
Сообщение об ошибке всегда
TypeError: function missing 1 required positional arguments
, что кажется ложным (я определенно передал необходимые width
, height
и external_vcc
. Я почти уверен, что проблема в вызове super()
- но это uPython, поэтому отладка печати внутри инициализатора не работает.
В нескольких местах я читал, что uPython имеет тенденцию выдавать плохие сообщения об ошибках о пропущенных параметрах при вызове замыкания, но это только смутно похоже на это. Я попытался добавить явное «я» к вызову super().__init__()
на всякий случай, но это тоже не сработало. Так что я немного застрял и хотел бы получить совет относительно правильного следующего шага отладки.