Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp29 [2020/05/19 19:32] – [Эксперимент 29. Привет, Мир! LCD] labuser29products:laboratory_iot:exp29 [2024/11/15 15:13] (текущий) – [Эксперимент 29. Привет, Мир! LCD] labuser30
Строка 17: Строка 17:
   * esp8266_i2c_lcd.py   * esp8266_i2c_lcd.py
  
-Это и есть файлы библиотеки для управления дисплеем LCD 1602. Эти файлы необходимо загрузить в память микроконтроллера. Для этого необходимо открыть файловый менеджер. От крывается с помощью пункта меню+Это и есть файлы библиотеки для управления дисплеем LCD 1602. Распакуй их из архива в какую либо папку на компьютере. Эти файлы необходимо загрузить в память микроконтроллера. Для этого нужно открыть файловый менеджер. Открывается с помощью пункта меню
 <span menu> <span menu>
 <span menu-item>Device</span> <span menu-item>Device</span>
Строка 23: Строка 23:
 </span> </span>
 или кнопкой {{: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 |}}
 +
 +Здесь можно увидеть какие файлы уже загружены. Файл ''boot.py'' — это системный файл, его код исполняется сразу после загрузки микроконтроллера. Файл ''init.py'' — содержит код функции ''_init()'', которую мы вызываем в каждом эксперименте.
 +
 +Сюда же нужно загрузить файлы библиотеки. Для этого служит кнопка ''Upload...''. После ее нажатия открывается стандартное диалоговое окно выбора файла. После выбора файла он загружается. Так выглядит файловый менеджер после загрузки файлов библиотеки:
 +
 +{{ :products:esp-iot:2020-05-19_19-33-19_.png?nolink |}}
 +
 +Когда файлы загружены, можно приступить к сборке схемы и написанию программы.
 ==== Схема эксперимента ==== ==== Схема эксперимента ====
 +Вся сборка заключается в подключении двух проводов:
 +
 {{ :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>
  
  
Строка 34: Строка 52:
 _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)
Строка 42: Строка 61:
 </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>