Skip to main content

Блог инженера

Блог о минимализме, инжинерии и программировании.



Экран для micro:bit

  | #DIY#microbit

В самодельных проектах может потребоваться вывод информации на экран. Моя цель - сделать самодельный измеритель концентрации CO2 в воздухе. Он должен сигналить о повышенной концентрации углекислого газа в воздухе и показывать текущую концентрацию углекислого газа в воздухе. Я не стал ограничивать себя в применяемом оборудовании и, для начала, захотел сделать устройство на контроллере micro:bit. Теперь я вижу, что это была не лучшая идея. Самая большая проблема в том, что датчик концентрации углекислого газа S8 имеет рабочее напряжение 5 В, а рабочее напряжение micro:bit - 3,3 В. Значит нужно использовать преобразователь логических уровней, что усложняет схему. Но начал я именно с micro:bit. Я нашёл недорогой экран на 1.8 дюйма производства компании Waveshare и опробовал его.

Экран достаточно большой и яркий. Управлять им легко. Драйвер экрана имеет собственную видеопамять, поэтому не требуется тратить память micro:bit для вывода на этот экран. Он работает с рабочим напряжением micro:bit - 3.3 В и не требует внешнего источника тока. Это всё плюсы. Минусы перевешивают. Основной минус в том, что экран занимает большую часть пинов micro:bit. Для общения с внешним миром остаются выводы питания VCC/GND и три пина для SPI интерфейса. Кроме того, код для работы с экраном есть только на JavaScript. Чтобы писать программу на python, например, потребуется сперва написать собственный драйвер этого дисплея. Думаю, нет смысла заморачиваться.

Писать программы с выводом на экран довольно просто. Переходим по адресу проекта. Выбираем нужный язык программирования, Blocks или JavaScript. Программа ниже приведена именно на JavaScript. Подключаем модуль для работы с экраном: Advanced --> Add package. В появившееся окно вставляем адрес драйвера экрана. В среде разработки появится новый блок LCD1IN8. Все команды для работы с экраном можно перетаскивать оттуда. Приведу минимальную программу для работы с экраном. Она ничего не делает, только демонстрирует возможности видеовывода.

LCD1IN8.LCD_Init()
LCD1IN8.LCD_Clear()
LCD1IN8.LCD_SetBL(123)
LCD1IN8.DrawPoint(24, 28, LCD1IN8.Get_Color(LCD_COLOR.GREEN), DOT_PIXEL.DOT_PIXEL_2)
LCD1IN8.DrawLine(0, 0, 51, 32, LCD1IN8.Get_Color(LCD_COLOR.RED), DOT_PIXEL.DOT_PIXEL_1, LINE_STYLE.LINE_SOLID)
LCD1IN8.DisString(60, 60, "Hello world", LCD1IN8.Get_Color(LCD_COLOR.BLUE))
LCD1IN8.LCD_Display()
basic.forever(() => {

})

Вывод. Я купил экран спонтанно, не прочитав его характеристик. Этот экран оставляет слишком мало пинов для использования в реальных проектах.

About Mikhail Kiselev

Photo of Mikhail Kiselev

Приветствую в моём блоге! 😄 Меня зовут Михаил. Я инженер и программист. Живу в Израиле. Но мой блог связан с работой в Сибири и на Сахалине, путешествую где придётся. Я предпочитаю пост в блог посту в твиттер. Описание полезной технологии или гаджета предпочитаю описанию заката или посиделок в кафе.