Raspberry Pi с i2c smbus2Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Raspberry Pi с i2c smbus2

Сообщение Anonymous »

У меня вопрос относительно управления моим LCD1602 с помощью Raspberry Pi 5. Для этого я использую библиотеку smbus2. Вот мой код, который использует библиотеку smbus для управления системой i2c:

Код: Выделить всё

try:
import smbus2
LCD = smbus2.SMBus(1)
address = 0x27
IR = 0
DR = 1
ASCII_WORD = "HELLO"

LCD.write_byte_data(address, IR, 0x80, force=None) #set the cursor at the beginning of line 1

for char in ASCII_WORD:
LCD.write_byte_data(address, IR, 0x10, force=None) #set the cursor 1 column left
for bit in range(8):
LCD.write_byte_data(address, DR, ord(char) >> (7 - bit), force=None)#write ASCII character
except KeyboardInterrupt:
LCD.write_byte_data(address, IR, 0x01, force=None)#clear display
LCD.close()

Вот отличная ссылка, по которой я получил большую часть значений битов данных: https://www.electronicsforu.com/technol ... onics/16x2 -lcd-pinout-diagram
Вот что происходит в моем коде:
  • Set положение курсора.
  • Написать ASCII нужного символа.
Проблема:
Результат этот код был неожиданным, позиция курсора находилась в 5-м столбце второй строки, а во втором столбце первой строки был знак ≣. Вскоре я понял, что for bit in range(8): не нужен, поскольку библиотека smbus2 преобразует десятичные значения в двоичные и отправляет их побитно (Пожалуйста, поправьте меня, если я ошибаюсь)< /эм>. Этот дополнительный цикл, вероятно, приводит к дублированию кодов ASCII.
Отлаженный код:

Код: Выделить всё

try:
import time
import smbus2
LCD = smbus2.SMBus(1)
address = 0x27
IR = 0
DR = 1
ASCII_WORD = "HELLO"

LCD.write_byte_data(address, IR, 0x80, force=None) #set the cursor at the beginning of line 1
for char in ASCII_WORD:
LCD.write_byte_data(address, IR, 0x10, force=None) #set the cursor 1 column left
LCD.write_byte_data(address, DR, ord(char) >> (7 - bit), force=None)#write ASCII character
except KeyboardInterrupt:
LCD.write_byte_data(address, IR, 0x01, force=None)#clear display
LCD.close()
Новая проблема:
Этот код создает проблему, при которой выключается вся подсветка ЖК-дисплея. Возможно, весь ЖК-дисплей выключится, но индикатор питания останется включенным.
Отладка:
Я пробовал удалил блок исключений, поскольку я подумал, что, возможно, это просто очистка дисплея - подсветка все еще выключалась, когда я запускал код. Я также попытался изолировать каждый LCD.write_byte_data(), чтобы увидеть, не является ли один из них причиной проблемы - каждый изолированный из них вызывал отключение подсветки.
Кто-нибудь может помочь? мне, чтобы устранить эти проблемы, в частности, почему ЖК-дисплей выключается по второму коду, а не выключается по первому? Я был бы очень признателен за помощь. Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/791 ... i2c-smbus2
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Чтение блока данных из I²C на Raspberry Pi с использованием Python SMBus2 внезапно перестало работать. Что может быть не
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Чтение блока данных из I²C на Raspberry Pi с использованием Python SMBus2 внезапно перестало работать. Что может быть не
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Raspberry Pi с i2c smbus2
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Raspberry Pi с i2c smbus2
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Raspberry Pi с i2c smbus2
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»