Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp29 [2020/05/19 19:41] – [Схема эксперимента] 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 |}}
  
Строка 32: Строка 42:
  
 {{ :products:esp-iot:2020-05-19_19-33-19_.png?nolink |}} {{ :products:esp-iot:2020-05-19_19-33-19_.png?nolink |}}
 +
 +<WRAP center round important 60%>
 +Не загружай все файлы из архива в микроконтроллер. Загрузи только файлы .mpy
 +</WRAP>
 +
  
 Когда файлы загружены, можно приступить к сборке схемы и написанию программы. Когда файлы загружены, можно приступить к сборке схемы и написанию программы.
Строка 39: Строка 54:
 {{ :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>
  
  
Строка 47: Строка 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)
Строка 55: Строка 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>