Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
products:laboratory_iot:exp30 [2020/05/20 17:36] – создано labuser29 | products:laboratory_iot:exp30 [2024/11/14 17:45] (текущий) – [Программный код эксперимента] labuser29 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== Эксперимент 30. Пользовательские символы LCD ===== | ===== Эксперимент 30. Пользовательские символы LCD ===== | ||
- | Иногда на дисплее требуется отобразить символы, | + | Иногда на дисплее требуется отобразить символы, |
+ | {{ : | ||
+ | Смайлик и буква Ж. На символе смайлика мы подписали цифры 0 и 1. 0 соответствует выключеному пикселю, | ||
+ | ==== Схема эксперимента ==== | ||
+ | {{ : | ||
+ | // | ||
+ | |||
+ | ==== Программный код эксперимента ==== | ||
+ | <file python Exp30.py[enable_line_numbers=" | ||
+ | from machine import I2C, Pin | ||
+ | from esp8266_i2c_lcd import I2cLcd | ||
+ | _init() | ||
+ | |||
+ | DEFAULT_I2C_ADDR = 0x3F # Или 0x27 в зависимости от модели микросхемы на плате | ||
+ | |||
+ | i2c = I2C(scl=Pin(5), | ||
+ | lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, | ||
+ | lcd.backlight_on() | ||
+ | |||
+ | char1 = [ | ||
+ | 0b00000, | ||
+ | 0b00000, | ||
+ | 0b01010, | ||
+ | 0b01010, | ||
+ | 0b00000, | ||
+ | 0b10001, | ||
+ | 0b01110, | ||
+ | 0b00000 | ||
+ | ] | ||
+ | |||
+ | char2 = [ | ||
+ | 0b10101, | ||
+ | 0b10101, | ||
+ | 0b10101, | ||
+ | 0b01110, | ||
+ | 0b10101, | ||
+ | 0b10101, | ||
+ | 0b10101, | ||
+ | 0b00000 | ||
+ | ] | ||
+ | |||
+ | lcd.custom_char(0, | ||
+ | lcd.custom_char(1, | ||
+ | |||
+ | lcd.move_to(0, | ||
+ | |||
+ | lcd.putchar(chr(0)) | ||
+ | lcd.putchar(chr(1)) | ||
+ | </ | ||
+ | |||
+ | В программе мы как обычно подключили библиотеки, | ||
+ | |||
+ | <code python[enable_line_numbers=" | ||
+ | char1 = [ | ||
+ | 0b00000, | ||
+ | 0b00000, | ||
+ | 0b01010, | ||
+ | 0b01010, | ||
+ | 0b00000, | ||
+ | 0b10001, | ||
+ | 0b01110, | ||
+ | 0b00000 | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | Массив состоит из чисел, записанных в двоичной системе счисления. В этой форме очень удобно записывать, | ||
+ | |||
+ | Таким же образом мы создаем второй символ. Теперь, | ||
+ | <code python[enable_line_numbers=" | ||
+ | lcd.custom_char(0, | ||
+ | lcd.custom_char(1, | ||
+ | </ | ||
+ | |||
+ | Символ из переменной '' | ||
+ | |||
+ | Ставим курсор в левый верхний угол, на место первого символа. Это нулевое место нулевой строки так как нумерация мест и строк ведется от нуля: | ||
+ | <code python[enable_line_numbers=" | ||
+ | lcd.move_to(0, | ||
+ | </ | ||
+ | |||
+ | Печатаем на дисплее символы. Они выводятся туда, куда мы поставили курсор: | ||
+ | <code python[enable_line_numbers=" | ||
+ | lcd.putchar(chr(0)) | ||
+ | lcd.putchar(chr(1)) | ||
+ | </ | ||
+ | |||
+ | Первый символ появился на первой строке в первом знакоместе, | ||
+ | |||
+ | ==== Дополнительное задание ==== | ||
+ | <WRAP center round tip 60%> | ||
+ | * Создай свой символ, | ||
+ | * Отобрази его на второй строке по середине | ||
+ | </ |