Использование ЖК-экранчика от Nokia 5110 в Arduino
22 марта 2017
Ранее в этом блоге было рассмотрено несколько ЖК-дисплеев / индикаторов и их использование из Arduino. Существенным их недостатком является довольно большой размер, а также вес. Зачастую это не является проблемой. Например, если вы собираете DIY паяльную станцию в самодельном корпусе, там как-то без разницы, какого размера дисплей. С другой стороны, если вам нужен дисплей, скажем, на квадрокоптере, тут вес и размер становятся критически важными. Поэтому сегодня мы научимся работать с очень маленьким и легким экранчиком от телефона Nokia 5110.
Примечание: Другие посты по теме экранчиков — Научился выводить текст на ЖК-индикатор из Arduino, Об использовании экранчиков 1602 с I2C-адаптером, Работаем с LCD на базе HD44780 без библиотек, и Цифровой термометр из ЖК-матрицы, TMP36 и Arduino.
Не беспокойтесь, покупать эффективно не существующий нынче телефон Nokia 5110, выковыривать из него экранчик и выбрасывать все остальные детали не придется. Экранчик от Nokia 5110 являются очень распространенным самостоятельным модулем для радиолюбителей и стоит где-то от 2 до 5$, в зависимости от магазина. В России модуль можно купить, например, на tpai.ru, arduino-kit.ru, amperkot.ru, compacttool.ru, chipster.ru или electromicro.ru. Ну и, конечно же, по самой низкой цене экранчики продаются на AliExpress, но придется подождать месяц или два, пока они придут из Китая.
Как это часто бывает в мире Arduino, для модуля уже существуют готовые библиотеки, и не одна. Мне понравилась библиотека LCD5110, выложенная на сайте rinkydinkelectronics.com. У этой библиотеки есть две версии. Первая называется LCD5110_Basic. Она попроще и способна выводить только текст шрифтами разного размера. Есть возможность создания собственных шрифтов. Вторая версия называется LCD5110_Graph. Она имеет все возможности первой библиотеки и в дополнение к ним умеет рисовать отрезки, прямоугольники, круги и так далее.
В рамках этого поста будет использована LCD5110_Basic. Обе библиотеки прекрасно документированы и имеют множество примеров использования, так что при необходимости в LCD5110_Graph вы без труда разберетесь самостоятельно. Стоит однако отметить, что чтобы LCD5110_Basic компилировалась без warning’ов, мне пришлось внести пару небольших правок в ее код.
Итак, пример использования библиотеки:
extern uint8_t BigNumbers[];
extern uint8_t MediumNumbers[];
extern uint8_t SmallFont[];
/* SCK / CLK, MOSI / DIN, DC, RST, CS */
LCD5110 lcd(2, 3, 4, 6, 5);
void setup()
{
lcd.InitLCD();
}
int ctr = 0;
void loop()
{
lcd.clrScr();
lcd.setFont(BigNumbers);
lcd.printNumI(ctr, RIGHT, 0);
lcd.setFont(MediumNumbers);
lcd.printNumF(12.34, 2, RIGHT, 24);
lcd.setFont(SmallFont);
lcd.print("Line 1", 0, 8*0);
lcd.print("Line 2", 0, 8*1);
lcd.print("Line 3", 0, 8*2);
lcd.print("L 4", 0, 8*3);
lcd.print("L 5", 0, 8*4);
lcd.print("0123456789ABCD", 0, 8*5);
ctr += 5;
if(ctr >= 1000)
ctr = 0;
delay(500);
}
Как это выглядит в действии:
Надеюсь, что код разжевывать не требуется. Заметьте, что модуль питается от 3.3 В, но команды от Arduino при этом понимает нормально безо всяких преобразователей логических уровней. Соответственно, пины VCC (питание) и BL (подсветка) подключаем к 3.3 В, GND подключаем к земле, остальные пять пинов подключаем к цифровым пинам Arduino. Номера пинов передаем конструктору класса LCD5110 в соответствии с комментариями в приведенном коде.
Просто, не правда ли? Полную версию исходников к этой заметке вы найдете в этом репозитории на GitHub. Дополнения и вопросы, как всегда, всячески приветствуются.
Дополнение: Автор библиотеки для работы с экранчиком от Nokia 5110 также является автором библиотеки OLED_I2C, предназначенной для работы с не менее популярными OLED-экранчиками с I2C-интерфейсом. Пример использования OLED_I2C вы найдете в посте Используем джойстик от Sega Genesis в проектах на Arduino. Как можно было ожидать, эти две библиотеки имеют похожий интерфейс.
Метки: AVR, Электроника.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.