Python

В этой инструкции для управления дисплеем используем интерпретатор CircuitPython, который позволяет писать программы на упрощённом python.

Для работы с ЖК дисплеем нам помогут две библиотеки robotclass_character_lcd и robotclass_pca9534, которые имеются в наборе библиотек от RobotClass. Всё, что нам нужно сделать для их установки — это скопировать всю папку robotclass_character_lcd и файл robotclass_pca9534.mpy в папку lib на накопителе CIRCUITPY.

Также понадобятся библиотеки adafruit_character_lcd и adafruit_bus_device из стандартного набора CircuitPython:

Более подробно о работе с библиотеками CircuitPython мы писали в одной из наших инструкций:

Программа

Для составления программы используем среду разработки Mu.

Пусть, самая первая наша программа будет выводить текст «Hello, world!» в первой строке дисплея. Начнём с подключения всех необходимых библиотек. Помним, что в python это делается с помощью команды import.

Кроме вышеуказанных библиотек нам будут нужны еще две базовые библиотеки:

  • time — предоставляет функцию sleep для организации паузы;
  • board — хранит названия всех контактов платы контроллера и их синонимы.

Подключаем все библиотеки при помощи команды import:

import time
import board

from adafruit_bus_device import i2c_device
from robotclass_character_lcd.character_lcd_i2c import Character_LCD_I2C

Дисплей инициализируется командой:

i2c = board.I2C()
lcd = Character_LCD_I2C(i2c, 16, 2)

Здесь 16 и 2 — количество символов и строк в дисплее.

Вся программа целиком:

import board
import time

from adafruit_bus_device import i2c_device
from robotclass_character_lcd.character_lcd_i2c import Character_LCD_I2C

i2c = board.I2C()
lcd = Character_LCD_I2C(i2c, 16, 2)

# включение подсветки
lcd.backlight = True

# вывод текста
lcd.message = "Hello, world!"

Загружаем её на Графит-S3, и смотрим что творится на дисплее. Может быть две распространённые ситуации.

1) На дисплее отобразится надпись «Hello, world!». Значит мы все правильно подключили, и контраст каким-то чудесным образом оказался изначально правильно настроен.

2) На дисплее отобразится целый ряд черных прямоугольников — требуется настройка контраста! Именно для этого на модуле LCD-I2C есть небольшой потенциометр с ручкой. Крутим его от одного края, до другого, до момента пока на дисплее не появится четкая надпись.

Нестандартные контакты I2C и адрес.

Как известно, на Графит-S3 для I2C можно выбрать любые GPIO контакты. Также у модуля LCD-I2C может быть адрес, отличный от 0x3F. В такой ситуации инициализация дисплея будет выглядеть следующим образом.

import busio

i2c = busio.I2C(9, 10)
lcd = Character_LCD_I2C(i2c, 16, 2, 0x38)

Изменено: