Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp29 [2024/11/15 14:41] – [Эксперимент 29. Привет, Мир! LCD] labuser30products:laboratory_iot_c:exp29 [2024/11/15 16:55] (текущий) – [Программный код эксперимента] labuser30
Строка 5: Строка 5:
 Ранее мы использовали стандартную библиотеку не замечая этого, т.к. она подключена по умолчанию. В ней определены различные функции вроде pinMode(), digitalWright() и многие другие. Теперь мы впервые столкнемся с пользовательской библиотекой. Это библиотека функций, которую написал кто-то другой или, даже ты сам, и теперь желаешь использовать для своего эксперимента. Отличие заключается в том, что стандартная библиотека является частью языка программирования, а пользовательские библиотеки перед использованием нужно загрузить в Arduino IDE. Ранее мы использовали стандартную библиотеку не замечая этого, т.к. она подключена по умолчанию. В ней определены различные функции вроде pinMode(), digitalWright() и многие другие. Теперь мы впервые столкнемся с пользовательской библиотекой. Это библиотека функций, которую написал кто-то другой или, даже ты сам, и теперь желаешь использовать для своего эксперимента. Отличие заключается в том, что стандартная библиотека является частью языка программирования, а пользовательские библиотеки перед использованием нужно загрузить в Arduino IDE.
  
- +Открыть окно "Управление библиотекамиможно с помощью 
-Это и есть файлы библиотеки для управления дисплеем LCD 1602. Распакуй их из архива в какую либо папку на компьютере. Эти файлы необходимо загрузить в память микроконтроллера. Для этого нужно открыть файловый менеджер. От крывается с помощью пункта меню+
 <span menu> <span menu>
-<span menu-item>Device</span> +<span menu-item>Инструменты</span> 
-<span menu-item>Filemanager</span>+<span menu-item>Управление библиотеками..</span>
 </span> </span>
-или кнопкой {{:products:2020-05-04_15-35-38.png?nolink|}}+или кнопкой {{:products:laboratory_iot_c:arduino_ide_exp29_2.png?nolink|}}
  
-Откроется окно файловго менеджера: 
-{{ :products:esp-iot:2020-05-19_19-33-19.png?nolink |}} 
  
-Здесь можно увидеть какие файлы уже загружены. Файл ''boot.py'' — это системный файл, его код исполняется сразу после загрузки микроконтроллера. Файл ''init.py'' — содержит код функции ''_init()'', которую мы вызываем в каждом эксперименте.+{{ :products:laboratory_iot_c:arduino_ide_exp29_1.png?nolink |}}
  
-Сюда же нужно загрузить файлы библиотеки. Для этого служит кнопка ''Upload...''. После ее нажатия открывается стандартное диалоговое окно выбора файла. После выбора файла он загружается. Так выглядит файловый менеджер после загрузки файлов библиотеки:+В поле поиска введи название нужной библиотеки, в нашем случае "LiquidCrystal I2C Multilingual", ниже должно появиться название библиотеки, имя автора и номер версии. Нажми кнопку "Установить" и дождись установки библиотеки.
  
-{{ :products:esp-iot:2020-05-19_19-33-19_.png?nolink |}} +Когда библиотека установлена, можно приступить к сборке схемы и написанию программы.
- +
-Когда файлы загружены, можно приступить к сборке схемы и написанию программы.+
 ==== Схема эксперимента ==== ==== Схема эксперимента ====
 Вся сборка заключается в подключении двух проводов: Вся сборка заключается в подключении двух проводов:
Строка 36: Строка 31:
  
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
-<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%>