Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
products:laboratory_iot_c:exp29 [2024/11/15 15:18] – [Эксперимент 29. Привет, Мир! LCD] labuser30 | products:laboratory_iot_c:exp29 [2024/11/15 16:55] (текущий) – [Программный код эксперимента] labuser30 |
---|
{{ :products:laboratory_iot_c:arduino_ide_exp29_1.png?nolink |}} | {{ :products:laboratory_iot_c:arduino_ide_exp29_1.png?nolink |}} |
| |
Здесь можно увидеть какие файлы уже загружены. Файл ''boot.py'' — это системный файл, его код исполняется сразу после загрузки микроконтроллера. Файл ''init.py'' — содержит код функции ''_init()'', которую мы вызываем в каждом эксперименте. | В поле поиска введи название нужной библиотеки, в нашем случае "LiquidCrystal I2C Multilingual", ниже должно появиться название библиотеки, имя автора и номер версии. Нажми кнопку "Установить" и дождись установки библиотеки. |
| |
Сюда же нужно загрузить файлы библиотеки. Для этого служит кнопка ''Upload...''. После ее нажатия открывается стандартное диалоговое окно выбора файла. После выбора файла он загружается. Так выглядит файловый менеджер после загрузки файлов библиотеки: | Когда библиотека установлена, можно приступить к сборке схемы и написанию программы. |
| |
{{ :products:esp-iot:2020-05-19_19-33-19_.png?nolink |}} | |
| |
Когда файлы загружены, можно приступить к сборке схемы и написанию программы. | |
==== Схема эксперимента ==== | ==== Схема эксперимента ==== |
Вся сборка заключается в подключении двух проводов: | Вся сборка заключается в подключении двух проводов: |
| |
==== Программный код эксперимента ==== | ==== Программный код эксперимента ==== |
<file python Exp29.py[enable_line_numbers="2", start_line_numbers_at="1"]> | <file arduino Exp29.ino[enable_line_numbers="2", start_line_numbers_at="1"]> |
from machine import I2C, Pin | #include <LCDI2C_Multilingual.h> |
from esp8266_i2c_lcd import I2cLcd | |
_init() | |
| |
DEFAULT_I2C_ADDR = 0x3F # Или 0x27 в зависимости от твоей платы IoT | #define DEFAULT_I2C_ADDR 0x3F // Или 0x27 в зависимости от твоей платы IoT |
| |
| LCDI2C_Generic lcd(DEFAULT_I2C_ADDR, 16, 2); |
| |
i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000) | void setup() { |
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16) | lcd.init(); |
lcd.backlight_on() | lcd.setBacklight(0); |
lcd.putstr("Hello, World!\nSecond Line") | lcd.println("Hello, World!"); |
| lcd.println("Second Line"); |
| } |
| |
| void loop() { |
| } |
</file> | </file> |
| |
Сначала мы подключаем библиотеки, которые необходимы для работы программы. | Сначала мы с помощью директивы ''#inclue'' подключаем библиотеку установленную библиотеку. |
<code python[enable_line_numbers="2", start_line_numbers_at="1"]> | <code arduino[enable_line_numbers="2", start_line_numbers_at="1"]> |
from machine import I2C, Pin | #include <LCDI2C_Multilingual.h> |
from esp8266_i2c_lcd import I2cLcd | |
</code> | </code> |
| |
На шине I2C каждое ведомое устройство имеет адрес. Чтобы обратиться к устройству, необходимо знать его адрес. Наша микросхема, которая управляет дисплеем, имеет адрес ''0x3F'' или ''0x27''. Попробуй оба варианта, чтобы понять на каком адресе находится именно твоя микросхема I2C. | На шине 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"]> | <code python[enable_line_numbers="2", start_line_numbers_at="5"]> |
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16) | LCDI2C_Generic lcd(DEFAULT_I2C_ADDR, 16, 2); |
</code> | </code> |
Создаем объект дисплея и в качестве параметров передаем объект контроллера I2C, адрес устройства, количество строк дисплея и количество символов в строке, соответственно. | Создаем объект дисплея и в качестве параметров передаем адрес дисплея, количество строк дисплея и количество символов в строке, соответственно. |
| |
Теперь мы имеем объект дисплея, с которым можно работать. Начнем с включения подсветки. Для этого используем функцию ''backlight_on()'': | Теперь мы имеем объект дисплея, с которым можно работать. Сначала нам нужно его инициализировать с помощью функции ''init()''. После чего включим подсветку, для этого используем функцию ''setBacklight(0)'': |
<code python[enable_line_numbers="2", start_line_numbers_at="9"]> | <code arduino[enable_line_numbers="2", start_line_numbers_at="8"]> |
lcd.backlight_on() | lcd.init(); |
| lcd.setBacklight(0); |
</code> | </code> |
| |
Выведем текст на дисплей с помощью функции ''putstr()'' | Выведем текст на дисплей с помощью функции ''println()'' |
<code python[enable_line_numbers="2", start_line_numbers_at="9"]> | <code python[enable_line_numbers="2", start_line_numbers_at="10"]> |
lcd.putstr("Hello, World!\nSecond Line") | lcd.println("Hello, World!"); |
| lcd.println("Second Line"); |
</code> | </code> |
| |
В качестве параметра в функцию ''putstr()'' передается текст для вывода на дисплей. Можно заметить, что мы передаем одну строку, но на дисплее текст отображается в две строки. Дело в том, что переданная строка содержит специальный символ новой строки ''\n''. Этот символ сообщает дисплею, что необходимо перейти на новую строку. | В качестве параметра в функцию ''println()'' передается текст для вывода на дисплей. |
==== Дополнительное задание ==== | ==== Дополнительное задание ==== |
<WRAP center round tip 60%> | <WRAP center round tip 60%> |