Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp29 [2020/05/19 19:35] – [Эксперимент 29. Привет, Мир! LCD] labuser29products:laboratory_iot:exp29 [2025/11/28 13:02] (текущий) – [Эксперимент 29. Привет, Мир! LCD] labuser29
Строка 13: Строка 13:
 </WRAP> </WRAP>
  
-В архиве ты обнаружишь два файла:+В архиве ты обнаружишь файлы:
   * lcd_api.py   * lcd_api.py
   * esp8266_i2c_lcd.py   * esp8266_i2c_lcd.py
  
-Это и есть файлы библиотеки для управления дисплеем LCD 1602. Эти файлы необходимо загрузить в память микроконтроллера. Для этого необходимо открыть файловый менеджер. От крывается с помощью пункта меню+и  
 +  * lcd_api.mpy 
 +  * esp8266_i2c_lcd.mpy 
 + 
 +Это и есть файлы библиотеки для управления дисплеем LCD 1602.  
 +Файлы .py это обычные файлы python. А файлы .mpy содержат предварительно скомпилированный в байт-код тех же файлов. В проектах лучше использовать файлы .mpy - это позволяет экономить ресурсы микроконтроллера. Ему уже не нужно компилировать их перед применением. А файлы .py нужны если ты захочешь изучить код библиотек, понять как они устроены. Также ты можешь внести изменения в код файлов .py и после этого самостоятельно скомпилировать их в .mpy. Как это сделать [[theory:mpy_cross|описано здесь]]. 
 + 
 +Распакуй файлы из архива в какую либо папку на компьютере. Загрузи файлы  
 +  * lcd_api.mpy 
 +  * esp8266_i2c_lcd.mpy 
 +в память микроконтроллера. Для этого нужно открыть файловый менеджер. Открывается с помощью пункта меню
 <span menu> <span menu>
 <span menu-item>Device</span> <span menu-item>Device</span>
Строка 24: Строка 34:
 или кнопкой {{:products:2020-05-04_15-35-38.png?nolink|}} или кнопкой {{:products:2020-05-04_15-35-38.png?nolink|}}
  
-Откроется окно файловго менеджера:+Откроется окно файлового менеджера:
 {{ :products:esp-iot:2020-05-19_19-33-19.png?nolink |}} {{ :products:esp-iot:2020-05-19_19-33-19.png?nolink |}}
 +
 +Здесь можно увидеть какие файлы уже загружены. Файл ''boot.py'' — это системный файл, его код исполняется сразу после загрузки микроконтроллера. Файл ''init.py'' — содержит код функции ''_init()'', которую мы вызываем в каждом эксперименте.
 +
 +Сюда же нужно загрузить файлы библиотеки. Для этого служит кнопка ''Upload...''. После ее нажатия открывается стандартное диалоговое окно выбора файла. После выбора файла он загружается. Так выглядит файловый менеджер после загрузки файлов библиотеки:
 +
 +{{ :products:esp-iot:2020-05-19_19-33-19_.png?nolink |}}
 +
 +<WRAP center round important 60%>
 +Не загружай все файлы из архива в микроконтроллер. Загрузи только файлы .mpy
 +</WRAP>
 +
 +
 +Когда файлы загружены, можно приступить к сборке схемы и написанию программы.
 ==== Схема эксперимента ==== ==== Схема эксперимента ====
 +Вся сборка заключается в подключении двух проводов:
 +
 {{ :products:esp-iot:exp13_mont.png?direct&600 |}} {{ :products:esp-iot:exp13_mont.png?direct&600 |}}
 //Рисунок 1. Монтажная схема эксперимента// //Рисунок 1. Монтажная схема эксперимента//
 +
 +
 +<WRAP center round important 60%>
 +Внимание! В зависимости от модели микросхемы I2C, установленной в Лаборатории IoT, адрес на шине может быть 0x3F или 0x27. Запусти данный пример с указанием адреса 0x3F или 0x27, чтобы узнать какой вариант актуален для твоей платы.
 +</WRAP>
  
  
Строка 37: Строка 67:
 _init() _init()
  
-DEFAULT_I2C_ADDR = 0x3F+DEFAULT_I2C_ADDR = 0x3F # Или 0x27 в зависимости от твоей платы IoT 
  
 i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000) i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000)
Строка 45: Строка 76:
 </file> </file>
  
 +Сначала мы подключаем библиотеки, которые необходимы для работы программы.
 +<code python[enable_line_numbers="2", start_line_numbers_at="1"]>
 +from machine import I2C, Pin
 +from esp8266_i2c_lcd import I2cLcd
 +</code>
 +
 +На шине I2C каждое ведомое устройство имеет адрес. Чтобы обратиться к устройству, необходимо знать его адрес. Наша микросхема, которая управляет дисплеем, имеет адрес ''0x3F'' или ''0x27''. Попробуй оба варианта, чтобы понять на каком адресе находится именно твоя микросхема I2C.
 +
 +Настраиваем контроллер шины I2C:
 +<code python[enable_line_numbers="2", start_line_numbers_at="7"]>
 +i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000)
 +</code>
 +
 +Здесь мы сообщили контроллеру, что для сигнала SCL нужно использовать вывод 5, а для SDA — 4. Задали частоту шины 400 кГц. Настроенный объект контроллера записали в переменную ''i2c''.
 +
 +Теперь настраиваем дисплей.
 +<code python[enable_line_numbers="2", start_line_numbers_at="8"]>
 +lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)
 +</code>
 +Создаем объект дисплея и в качестве параметров передаем объект контроллера I2C, адрес устройства, количество строк дисплея и количество символов в строке, соответственно.
 +
 +Теперь мы имеем объект дисплея, с которым можно работать. Начнем с включения подсветки. Для этого используем функцию ''backlight_on()'':
 +<code python[enable_line_numbers="2", start_line_numbers_at="9"]>
 +lcd.backlight_on()
 +</code>
 +
 +Выведем текст на дисплей с помощью функции ''putstr()''
 +<code python[enable_line_numbers="2", start_line_numbers_at="9"]>
 +lcd.putstr("Hello, World!\nSecond Line")
 +</code>
 +
 +В качестве параметра в функцию ''putstr()'' передается текст для вывода на дисплей. Можно заметить, что мы передаем одну строку, но на дисплее текст отображается в две строки. Дело в том, что переданная строка содержит специальный символ новой строки ''\n''. Этот символ сообщает дисплею, что необходимо перейти на новую строку.
  
 ==== Дополнительное задание ==== ==== Дополнительное задание ====
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-  * Попробуй +  * Попробуй выводить на дисплей различные текстовые данные 
 +  * Мигать подсветкой дисплея 1 раз в секунду
 </WRAP> </WRAP>