Это старая версия документа!
В теоретической части (перед экспериментом) мы познакомились с интерфейсами, в частности с шиной I2C. Кроме того, мы изучили способ подключения дисплея в нашем конструкторе. Разберемся с библиотекой для работы с дисплеем.
Ранее мы использовали системные библиотеки, такие как time
или machine
.
Теперь мы впервые столкнемся с пользовательской библиотекой. Это библиотека функций, которую написал кто-то другой или, даже ты сам, и теперь желаешь использовать для своего эксперимента. Отличие заключается в том, что системные библиотеки являются частью языка программирования, а пользовательские библиотеки перед использованием нужно загрузить.
Микроконтроллер на борту нашего конструктора имеет встроенную Flash память, куда можно загружать различные файлы, в том числе библиотеки.
Сначала загрузи библиотеку для работы с дисплеем к себе на компьютер.
В архиве ты обнаружишь два файла:
Это и есть файлы библиотеки для управления дисплеем LCD 1602. Распакуй их из архива в какую либо папку на компьютере. Эти файлы необходимо загрузить в память микроконтроллера. Для этого нужно открыть файловый менеджер. От крывается с помощью пункта меню
Откроется окно файловго менеджера:
Здесь можно увидеть какие файлы уже загружены. Файл boot.py
— это системный файл, его код исполняется сразу после загрузки микроконтроллера. Файл init.py
— содержит код функции _init()
, которую мы вызываем в каждом эксперименте.
Сюда же нужно загрузить файлы библиотеки. Для этого служит кнопка Upload…
. После ее нажатия открывается стандартное диалоговое окно выбора файла. После выбора файла он загружается. Так выглядит файловый менеджер после загрузки файлов библиотеки:
Когда файлы загружены, можно приступить к сборке схемы и написанию программы.
from machine import I2C, Pin from esp8266_i2c_lcd import I2cLcd _init() DEFAULT_I2C_ADDR = 0x3F i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000) lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16) lcd.backlight_on() lcd.putstr("Hello, World!\nSecond Line")
Сначала мы подключаем библиотеки, которые необходимы для работы программы.
from machine import I2C, Pin from esp8266_i2c_lcd import I2cLcd
На шине I2C каждое ведомое устройство имеет адрес. Чтобы обратиться к устройству, необходимо знать его адрес. Наша микросхема, которая управляет дисплеем, имеет адрес 0x3F
.
Настраиваем контроллер шины I2C:
i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000)
Здесь мы сообщили контроллеру, что для сигнала SCL нужно использовать вывод 5, а для SDA — 4. Задали частоту шины 400 кГц. Настроенный объект контроллера записали в переменную i2c
.
Теперь настраиваем дисплей.
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)
Создаем объект дисплея и в качестве параметров передаем объект контроллера I2C, адрес устройства, количество строк дисплея и количество символов в строке, соответственно.
Теперь мы имеем объект дисплея, с которым можно работать. Начнем с включения подсветки. Для этого используем функцию backlight_on()
:
lcd.backlight_on()
Выведем текст на дисплей с помощью функции putstr()
lcd.putstr("Hello, World!\nSecond Line")
В качестве параметра в функцию putstr()
передается текст для вывода на дисплей. Можно заметить, что мы передаем одну строку, но на дисплее текст отображается в две строки. Дело в том, что переданная строка содержит специальный символ новой строки \n
. Этот символ сообщает дисплею, что необходимо перейти на новую строку.