Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot:exp29 [2020/05/19 18:49] – [Схема эксперимента] labuser29 | products:laboratory_iot:exp29 [2025/11/28 13:02] (текущий) – [Эксперимент 29. Привет, Мир! LCD] labuser29 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ===== Эксперимент 29. Привет, | ===== Эксперимент 29. Привет, | ||
| + | В теоретической части (перед экспериментом) мы познакомились с интерфейсами, | ||
| + | |||
| + | Ранее мы использовали системные библиотеки, | ||
| + | Теперь мы впервые столкнемся с пользовательской библиотекой. Это библиотека функций, | ||
| + | |||
| + | Микроконтроллер на борту нашего конструктора имеет встроенную Flash память, | ||
| + | |||
| + | Сначала загрузи библиотеку для работы с дисплеем к себе на компьютер. | ||
| + | <WRAP center round download 60%> | ||
| + | {{ : | ||
| + | </ | ||
| + | |||
| + | В архиве ты обнаружишь файлы: | ||
| + | * lcd_api.py | ||
| + | * esp8266_i2c_lcd.py | ||
| + | |||
| + | и | ||
| + | * lcd_api.mpy | ||
| + | * esp8266_i2c_lcd.mpy | ||
| + | |||
| + | Это и есть файлы библиотеки для управления дисплеем LCD 1602. | ||
| + | Файлы .py это обычные файлы python. А файлы .mpy содержат предварительно скомпилированный в байт-код тех же файлов. В проектах лучше использовать файлы .mpy - это позволяет экономить ресурсы микроконтроллера. Ему уже не нужно компилировать их перед применением. А файлы .py нужны если ты захочешь изучить код библиотек, | ||
| + | |||
| + | Распакуй файлы из архива в какую либо папку на компьютере. Загрузи файлы | ||
| + | * lcd_api.mpy | ||
| + | * esp8266_i2c_lcd.mpy | ||
| + | в память микроконтроллера. Для этого нужно открыть файловый менеджер. Открывается с помощью пункта меню | ||
| + | <span menu> | ||
| + | <span menu-item> | ||
| + | <span menu-item> | ||
| + | </ | ||
| + | или кнопкой {{: | ||
| + | |||
| + | Откроется окно файлового менеджера: | ||
| + | {{ : | ||
| + | |||
| + | Здесь можно увидеть какие файлы уже загружены. Файл '' | ||
| + | |||
| + | Сюда же нужно загрузить файлы библиотеки. Для этого служит кнопка '' | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Не загружай все файлы из архива в микроконтроллер. Загрузи только файлы .mpy | ||
| + | </ | ||
| + | |||
| + | |||
| + | Когда файлы загружены, | ||
| ==== Схема эксперимента ==== | ==== Схема эксперимента ==== | ||
| - | {{ :wiki:exp7_mont.png? | + | Вся сборка заключается в подключении двух проводов: |
| + | |||
| + | {{ :products: | ||
| // | // | ||
| + | |||
| + | |||
| + | <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 раз в секунду | ||
| </ | </ | ||