Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| 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%> | ||
| + | * Создай свой символ, | ||
| + | * Отобрази его на второй строке по середине | ||
| + | </ | ||