Python
В этой инструкции для управления дисплеем используем интерпретатор CircuitPython, который позволяет писать программы на упрощённом python.
Для работы с ЖК дисплеем нам поможет библиотека robotclass_character_lcd, которая имеется в наборе библиотек от RobotClass. Всё, что нам нужно сделать для её установки — это скопировать всю папку robotclass_character_lcd в папку lib на накопителе CIRCUITPY.
Также понадобится библиотека adafruit_character_lcd из стандартного набора CircuitPython:
Более подробно о работе с библиотеками CircuitPython мы писали в одной из наших инструкций:
Программа
Для составления программы используем среду разработки Mu.
Пусть, самая первая наша программа будет выводить текст «Hello, world!» в первой строек дисплея. Начнём с подключения всех необходимых библиотек. Помним, что в python это делается с помощью команды import.
Кроме robotclass_character_lcd и adafruit_character_lcd нам будут нужны еще три базовые библиотеки:
- time — предоставляет функцию sleep для организации паузы;
- board — хранит названия всех контактов платы контроллера и их синонимы;
- digitalio — в управляет контактами GPIO.
Подключаем все библиотеки при помощи команды import:
import time
import board
import digitalio
from robotclass_character_lcd.character_lcd import Character_LCD_Mono
Затем настраиваем все задействованные контакты.
lcd_rs = digitalio.DigitalInOut(board.D7)
lcd_en = digitalio.DigitalInOut(board.D8)
lcd_d7 = digitalio.DigitalInOut(board.D12)
lcd_d6 = digitalio.DigitalInOut(board.D11)
lcd_d5 = digitalio.DigitalInOut(board.D10)
lcd_d4 = digitalio.DigitalInOut(board.D9)
lcd_backlight = digitalio.DigitalInOut(board.D13)
Потом инициализируем дисплей.
lcd = characterlcd.Character_LCD_Mono(
lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight
)
Вывод текста на дисплей осуществляется простым присваиванием:
lcd.message = "Hello\nRobotClass"
При этом, символ перевода строки \n будет интерпретироваться именно как перевод строки и часть фразы будет выведена во второй строке дисплея.
Вся программа целиком.
import time
import board
import digitalio
from robotclass_character_lcd.character_lcd import Character_LCD_Mono
lcd_columns = 16
lcd_rows = 2
lcd_rs = digitalio.DigitalInOut(board.D7)
lcd_en = digitalio.DigitalInOut(board.D8)
lcd_d7 = digitalio.DigitalInOut(board.D12)
lcd_d6 = digitalio.DigitalInOut(board.D11)
lcd_d5 = digitalio.DigitalInOut(board.D10)
lcd_d4 = digitalio.DigitalInOut(board.D9)
lcd_backlight = digitalio.DigitalInOut(board.D13)
# инициализация
lcd = Character_LCD_Mono(
lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight
)
# включение подсветки
lcd.backlight = True
# вывод текста
lcd.message = "Hello\nRobotClass"
Загружаем программу на Графит=S3 и смотрим результат. Может быть три распространённые ситуации.
1) На дисплее отобразится надпись «Hello, world!». Значит мы все правильно подключили, и контраст каким-то чудесным образом оказался изначально правильно настроен. Радуемся, и переходим к следующей главе.
2) На дисплее отобразится целый ряд черных прямоугольников — требуется настройка контраста! Именно для этого мы добавили в цепь потенциометр с ручкой. Крутим его от одного края, до другого, до момента пока на дисплее не появится четкая надпись.
3) Два ряда черных прямоугольников. Скорее всего, вы что-то напутали при подключении. Проверьте трижды все провода. Если не найдете ошибку — попросите кота проверить!
Бегущая строка
Теперь когда дисплей точно работает, попробуем более сложную программу. Сделаем бегущую строку.
Для сдвига текста влево или вправо воспользуемся функциями move_left и move_right. Пусть сначала текст бежит влево, пока его последняя буква не скроется за границей дисплея. Затем текст бежит вправо, также, пока не скроется. Наконец, текст бежит влево в исходную позицию.
import time
import board
import digitalio
from robotclass_character_lcd.character_lcd import Character_LCD_Mono
lcd_columns = 16
lcd_rows = 2
lcd_rs = digitalio.DigitalInOut(board.D7)
lcd_en = digitalio.DigitalInOut(board.D8)
lcd_d7 = digitalio.DigitalInOut(board.D12)
lcd_d6 = digitalio.DigitalInOut(board.D11)
lcd_d5 = digitalio.DigitalInOut(board.D10)
lcd_d4 = digitalio.DigitalInOut(board.D9)
lcd_backlight = digitalio.DigitalInOut(board.D13)
# инициализация
lcd = Character_LCD_Mono(
lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight
)
# включение подсветки
lcd.backlight = True
#вывод текста
lcd.message = "Hello!"
while True:
i = 0
while i < len(lcd.message):
lcd.move_left()
time.sleep(0.2)
i+=1
i = 0
while i < (len(lcd.message) + lcd_columns):
lcd.move_right()
time.sleep(0.2)
i+=1
i = 0
while i < lcd_columns:
lcd.move_left()
time.sleep(0.2)
i+=1
time.sleep(1)
Загружаем программу на Графит-S3 и наблюдаем бегущую строку!
