Графические lcd дисплеи очень популярны, используются во многих проектах на микроконтроллерах. У них есть много плюсов: на них можно выводить графическую и текстовую информацию. Здесь я вам расскажу, как подключить подобный дисплей к Arduino. Я остановился на GLCD разрешением 128×64 и с контроллерами ks0108(на дисплеи их два, каждый берет на себя по половине).
Таблица подключения:
Arduino 168 | Arduino Mega | GLCD |
5v | 5v | +5v |
GND | GND | GND |
Внешнее | Внешнее | Contrast in |
8-pin | 22-pin | D0 |
9-pin | 24-pin | D1 |
10-pin | 26-pin | D2 |
11-pin | 28-pin | D3 |
4-pin | 30-pin | D4 |
5-pin | 32-pin | D5 |
6-pin | 34-pin | D6 |
7-pin | 36-pin | D7 |
Analog 0-pin | 38-pin | CSEL1 |
Analog 1-pin | 40-pin | CSEL2 |
Reset | 42-pin | Reset |
Analog 2-pin | 44-pin | R_W |
Analog 2-pin | 46-pin | D_I |
Analog 4-pin | 48-pin | EN |
Внешнее | Внешнее | Contrast out |
Внешнее | Внешнее | Подсветка +5v |
GND | GND | Подсветка GND |
Контакты конкретного дисплея нужно смотреть в его datasheet. Как подключить контрастность, так же нужно смотреть в datasheet, есть некоторые нюансы. Например у моего дисплея AGM1264K-FL-GBH, схема подключения контрастности была такой:
Самая подходящая библиотека: GLCDV3. Как вы можете заметить, мой способ подключение немного отличается от официального. Я изменил конфигурацию портов Arduino Mega, так как подключать стандартным способом было очень не удобно; теперь используется один ряд разъема Arduino Mega. При желании вы можете легко изменить конфигурацию портов, файлы находятся в директории: \libraries\glcd\config. 💡 Вариант библиотеки этой статьи вы можете загрузить здесь.
Теперь загрузим тестовые скетчи:
1. Выводящий на экран текст:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <glcd.h> #include "fonts/SystemFont5x7.h" void setup(){ GLCD.Init(); //Инициализируем библиотеку GLCD.ClearScreen(); //Очищаем Дисплей GLCD.SelectFont(System5x7); //Выбираем шрифт GLCD.GotoXY(10,10); //Идем на 10.10 GLCD.print("Hello World!"); } void loop() { } |
К сожалению, в библиотеке нет русского шрифта.
2. Рисующий bmp изображение:
1 2 3 4 5 6 7 8 9 10 11 12 | #include <glcd.h> #include "bitmaps/ArduinoIcon64x64.h" void setup(){ GLCD.Init(); //Инициализируем библиотеку GLCD.ClearScreen(); //Очищаем Дисплей GLCD.DrawBitmap(ArduinoIcon64x64, 32, BLACK); //Рисуем изображение } void loop() { } |
Чтобы создать bmp изображение для дисплея, нужно:
1 — Взять рисунок в котором как можно меньше цветов или уменьшить в редакторе до двух.
2 — Уменьшить его размер до 128×64 (максимум).
3 — Запустить программу, находящуюся в директории библиотеки: \libraries\glcd\bitmaps\utils\Java или \libraries\glcd\bitmaps\utils\glcdMakeBitmap.
4 — Переместить изображение в окно программы.
5 — Идем сюда \libraries\glcd\bitmaps. И видим наш файл. Например: image.h.
6 — В программе микроконтроллера изображение будет доступно так #include «bitmaps/(Название изображения).h
Кроме этих примеров также можно воспользоваться тестовыми программами GLCDdemo, GLCDdials, Life, Clockface.
Вот и все!
Error compiling!
In file included from C:\arduino-1.0\libraries\glcd/include/gText.h:30,
from C:\arduino-1.0\libraries\glcd/glcd.h:40,
from sketch_dec08a.cpp:1:
C:\arduino-1.0\libraries\glcd/include/Streaming.h:24:22: error: WProgram.h: No such file or directory
In file included from C:\arduino-1.0\libraries\glcd/include/gText.h:30,
from C:\arduino-1.0\libraries\glcd/glcd.h:40,
from sketch_dec08a.cpp:1:
C:\arduino-1.0\libraries\glcd/include/Streaming.h:30: error: expected initializer before ‘&’ token
C:\arduino-1.0\libraries\glcd/include/Streaming.h:63: error: expected initializer before ‘&’ token
C:\arduino-1.0\libraries\glcd/include/Streaming.h:67: error: expected initializer before ‘&’ token
C:\arduino-1.0\libraries\glcd/include/Streaming.h:78: error: expected initializer before ‘&’ token
In file included from C:\arduino-1.0\libraries\glcd/include/gText.h:31,
from C:\arduino-1.0\libraries\glcd/glcd.h:40,
from sketch_dec08a.cpp:1:
C:\arduino-1.0\libraries\glcd/include/glcd_Device.h:85: error: conflicting return type specified for ‘virtual void glcd_Device::write(uint8_t)’
C:\arduino-1.0\hardware\arduino\cores\arduino/Print.h:48: error: overriding ‘virtual size_t Print::write(uint8_t)’
Что это может быть??? ❓
Честно говоря, даже не знаю в чем проблема. Попробуйте поставить библиотеку на предыдущую «чистую» версию arduino IDE. Возможно библиотека не работает с новой версией arduino IDE. Либо конфликт с другими библиотеками.