Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
products:laboratory_iot:exp29 [2020/05/19 19:10] – [Схема эксперимента] labuser29 | products:laboratory_iot:exp29 [2024/11/15 15:13] (текущий) – [Эксперимент 29. Привет, Мир! LCD] labuser30 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== Эксперимент 29. Привет, | ===== Эксперимент 29. Привет, | ||
+ | В теоретической части (перед экспериментом) мы познакомились с интерфейсами, | ||
+ | |||
+ | Ранее мы использовали системные библиотеки, | ||
+ | Теперь мы впервые столкнемся с пользовательской библиотекой. Это библиотека функций, | ||
+ | |||
+ | Микроконтроллер на борту нашего конструктора имеет встроенную Flash память, | ||
+ | |||
+ | Сначала загрузи библиотеку для работы с дисплеем к себе на компьютер. | ||
+ | <WRAP center round download 60%> | ||
+ | {{ : | ||
+ | </ | ||
+ | |||
+ | В архиве ты обнаружишь два файла: | ||
+ | * lcd_api.py | ||
+ | * esp8266_i2c_lcd.py | ||
+ | |||
+ | Это и есть файлы библиотеки для управления дисплеем LCD 1602. Распакуй их из архива в какую либо папку на компьютере. Эти файлы необходимо загрузить в память микроконтроллера. Для этого нужно открыть файловый менеджер. Открывается с помощью пункта меню | ||
+ | <span menu> | ||
+ | <span menu-item> | ||
+ | <span menu-item> | ||
+ | </ | ||
+ | или кнопкой {{: | ||
+ | |||
+ | Откроется окно файлового менеджера: | ||
+ | {{ : | ||
+ | |||
+ | Здесь можно увидеть какие файлы уже загружены. Файл '' | ||
+ | |||
+ | Сюда же нужно загрузить файлы библиотеки. Для этого служит кнопка '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Когда файлы загружены, | ||
==== Схема эксперимента ==== | ==== Схема эксперимента ==== | ||
+ | Вся сборка заключается в подключении двух проводов: | ||
+ | |||
{{ : | {{ : | ||
// | // | ||
+ | |||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Внимание! В зависимости от модели микросхемы I2C, установленной в Лаборатории IoT, адрес на шине может быть 0x3F или 0x27. Запусти данный пример с указанием адреса 0x3F или 0x27, чтобы узнать какой вариант актуален для твоей платы. | ||
+ | </ | ||
==== Программный код эксперимента ==== | ==== Программный код эксперимента ==== | ||
- | <file python | + | <file python |
- | from machine import | + | from machine import |
- | import | + | from esp8266_i2c_lcd |
_init() | _init() | ||
- | tempo = 2 | + | DEFAULT_I2C_ADDR |
- | tones = { | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | } | ||
- | speaker | + | i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000) |
+ | lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, | ||
+ | lcd.backlight_on() | ||
+ | lcd.putstr(" | ||
+ | </ | ||
- | melody = ' | + | Сначала мы подключаем библиотеки, |
- | rhythm | + | <code python[enable_line_numbers=" |
- | 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, 2] | + | from machine import I2C, Pin |
+ | from esp8266_i2c_lcd import I2cLcd | ||
+ | </ | ||
- | for tone, length in zip(melody, rhythm): | + | На шине I2C каждое ведомое устройство имеет адрес. Чтобы обратиться к устройству, необходимо знать его адрес. Наша микросхема, |
- | | + | |
- | | + | Настраиваем контроллер шины I2C: |
- | time.sleep(tempo/ | + | <code python[enable_line_numbers=" |
- | | + | i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000) |
- | time.sleep(tempo/ | + | </ |
- | </file> | + | |
+ | Здесь мы сообщили контроллеру, | ||
+ | |||
+ | Теперь настраиваем дисплей. | ||
+ | <code python[enable_line_numbers=" | ||
+ | lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, | ||
+ | </ | ||
+ | Создаем объект дисплея и в качестве параметров передаем объект контроллера I2C, адрес устройства, | ||
+ | |||
+ | Теперь мы имеем объект дисплея, | ||
+ | <code python[enable_line_numbers=" | ||
+ | lcd.backlight_on() | ||
+ | </ | ||
+ | |||
+ | Выведем текст на дисплей с помощью функции '' | ||
+ | <code python[enable_line_numbers=" | ||
+ | lcd.putstr(" | ||
+ | </code> | ||
+ | В качестве параметра в функцию '' | ||
==== Дополнительное задание ==== | ==== Дополнительное задание ==== | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
- | * Попробуй | + | * Попробуй |
+ | * Мигать подсветкой дисплея 1 раз в секунду | ||
</ | </ | ||