Графический дисплей WG12864B-TML-T (G12864B REV.J) представляет собой ЖК-матрицу с разрешением в 128 на 64 точек, предназначен для вывода графической и текстовой информации. Контроллер дисплея ks0108, который имеет восьми битовый интерфейс.
Вывод | Обозначение | Назначение |
1 | Vcc | Напряжение питания (5V)) |
2 | GND | Общий вывод (0V |
3 | V0 | Вход питания ЖК панели |
4 | DB0 | Шина данных (младший бит) |
5 | DB1 | Шина данных 1-й разряд |
6 | DB2 | Шина данных 2-й разряд |
7 | DB3 | Шина данных 3-й разряд |
8 | DB4 | Шина данных 4-й разряд |
9 | DB5 | Шина данных 5-й разряд |
10 | DB6 | Шина данных 6-й разряд |
11 | DB7 | Шина данных (старший бит) |
12 | E1 | Выбор первого кристалла |
13 | E2 | Выбор второго кристалла |
14 | RES | Сигнал начальной установки |
15 | R/W | Чтение / Запись |
16 | A0 | Выбор: Команды/ Данные |
17 | E | Стробирование данных |
18 | VEE | Выход DC-DC преобразователя |
19 | A | + Питание подсветки |
20 | K | — Питание подсветки |
Основное напряжение питания +5 В, дополнительное 3,3 В используется для подсветки дисплея. Вход регулятора контрастности Vo должен быть подключен к выходу источника отрицательного напряжения Vee через подстроечный резистор номиналом 10 кОм.
При работе с дисплее можно использовать библиотеку U8glib , в папке библиотеки много различных примеров скетчей.
#include <U8glib.h> // http://rcl-radio.ru/wp-content/uploads/2020/07/1482331381-5722.zip #include "rus6x10.h" // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=717&download=1 U8GLIB_KS0108_128 u8g(12, 11, 10, 9, 8, 7, 6, 5, 14, 3, 4, 13, 2); //D0, D1, D2, D3, D4, D5, D6, D7, E, CS1,CS2, DI, RW void draw() { u8g.setRot180(); u8g.setFont(u8g_font_unifont); u8g.drawStr(15, 12, "RCL-RADIO.RU"); u8g.drawLine(0, 15, 128, 15); u8g.setFont(u8g_font_6x12); u8g.drawStr(35, 25, "MT-12864J"); //u8g.setPrintPos( 0, 50); u8g.print("MT-12864J"); u8g.setColorIndex(1); u8g.drawBox(0, 35, 128, 20); u8g.setFont(u8g_font_unifont); u8g.setColorIndex(0); u8g.drawStr(35, 50, "ARDUINO"); u8g.setColorIndex(1); u8g.setFont(rus6x10); u8g.drawStr(45, 64, "ПРИВЕТ"); } void setup() { } void loop() { u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); }
Для поддержки русского шрифта скачайте архив шрифта и распакуйте его в папку со скетчем.
Ниже показан пример создания простых часов, время и дата выводятся на дисплей WG12864B-TML-T, дополнительно используется модуль часов реального времени DS3231. Время устанавливается по времени компиляции.
#include <U8glib.h> // http://rcl-radio.ru/wp-content/uploads/2020/07/1482331381-5722.zip #include "rus6x10.h" // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=717&download=1 #include "digits32.h" // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=718&download=1 #include <Wire.h> #include <DS3231.h>//https://github.com/jarzebski/Arduino-DS3231/archive/master.zip // DS3231.zip DS3231 clock;RTCDateTime DateTime; U8GLIB_KS0108_128 u8g(12, 11, 10, 9, 8, 7, 6, 5, 14, 3, 4, 13, 2); //D0, D1, D2, D3, D4, D5, D6, D7, E, CS1,CS2, DI, RW char * mes[12]{"ЯНВАРЯ","ФЕВРАЛЯ","МАРТА","АПРЕЛЯ","МАЯ","ИЮНЯ","ИЮЛЯ","АВГУСТА","СЕНТЯБРЯ","ОКТЯБРЯ","НОЯБРЯ","ДЕКАБРЯ"}; char * den[7]{"ВОСКРЕСЕНЬЕ","ПОНЕДЕЛЬНИК","ВТОРНИК","СРЕДА","ЧЕТВЕРГ","ПЯТНИЦА","СУББОТА"}; void draw() { u8g.setRot180(); u8g.setFont(rus6x10); u8g.setPrintPos( 10, 10); u8g.print(DateTime.day); u8g.drawStr(26, 10, mes[DateTime.month-1]); u8g.drawStr(75, 10, den[DateTime.dayOfWeek]); u8g.setFont(digits32); if(DateTime.hour/10==1){u8g.setPrintPos( 15, 47); u8g.print(DateTime.hour / 10);}else{u8g.setPrintPos( 1, 47); u8g.print(DateTime.hour / 10);} if(DateTime.hour%10==1){u8g.setPrintPos( 34, 47); u8g.print(DateTime.hour % 10);}else{u8g.setPrintPos( 20, 47); u8g.print(DateTime.hour % 10);} u8g.setPrintPos( 39, 47); u8g.print(":"); if(DateTime.minute/10==1){u8g.setPrintPos( 59, 47); u8g.print(DateTime.minute / 10);}else{u8g.setPrintPos( 45, 47); u8g.print(DateTime.minute / 10);} if(DateTime.minute%10==1){u8g.setPrintPos( 78, 47); u8g.print(DateTime.minute % 10);}else{u8g.setPrintPos( 64, 47); u8g.print(DateTime.minute % 10);} u8g.setPrintPos( 83, 47); u8g.print(":"); if(DateTime.second/10==1){u8g.setPrintPos( 103, 47); u8g.print(DateTime.second / 10);}else{u8g.setPrintPos( 89, 47); u8g.print(DateTime.second / 10);} if(DateTime.second%10==1){u8g.setPrintPos( 122, 47); u8g.print(DateTime.second % 10);}else{u8g.setPrintPos( 108, 47); u8g.print(DateTime.second % 10);} // u8g.drawLine(0, 15, 128, 15); u8g.setFont(u8g_font_unifont); u8g.drawStr(20, 60, "TEMP"); u8g.setPrintPos( 60, 60); u8g.print(clock.readTemperature(),1); u8g.drawStr(100, 60, "C"); } void setup() { Wire.begin(); clock.begin(); // clock.setDateTime(__DATE__, __TIME__); // установка времени по времени компиляции } void loop() { DateTime=clock.getDateTime(); u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); }
Добрый день. Я новичок в ардуино. можете выложить скетч без ошибок чтобы загрузить и все в порядке. у меня ошибка no matching function for call to ‘DS3231::DS3231()’ Спасибо!
Установите все библиотеки с источников указанных в скетче.
файлы rus6x10.h и digits32.h разместить в папке скетча
не помогло Arduino: 1.8.12 (Windows 10), Плата:»Arduino Uno»
_____12864:6:9: error: no matching function for call to ‘DS3231::DS3231()’
In file included from D:\ардурино\New Folder\_____12864\_____12864.ino:5:0:
D:\��������\New Folder\libraries\DS3231/DS3231.h:80:3: note: candidate: DS3231::DS3231(uint8_t, uint8_t)
DS3231(uint8_t data_pin, uint8_t sclk_pin);
^~~~~~
D:\��������\New Folder\libraries\DS3231/DS3231.h:80:3: note: candidate expects 2 arguments, 0 provided
D:\��������\New Folder\libraries\DS3231/DS3231.h:77:7: note: candidate: constexpr DS3231::DS3231(const DS3231&)
class DS3231
^~~~~~
D:\��������\New Folder\libraries\DS3231/DS3231.h:77:7: note: candidate expects 1 argument, 0 provided
D:\��������\New Folder\libraries\DS3231/DS3231.h:77:7: note: candidate: constexpr DS3231::DS3231(DS3231&&)
D:\��������\New Folder\libraries\DS3231/DS3231.h:77:7: note: candidate expects 1 argument, 0 provided
_____12864:6:15: error: ‘RTCDateTime’ does not name a type
D:\ардурино\New Folder\_____12864\_____12864.ino: In function ‘void draw()’:
_____12864:15:40: error: ‘DateTime’ was not declared in this scope
D:\ардурино\New Folder\_____12864\_____12864.ino:15:40: note: suggested alternative: ‘Time’
_____12864:30:46: error: ‘class DS3231’ has no member named ‘readTemperature’
D:\ардурино\New Folder\_____12864\_____12864.ino: In function ‘void loop()’:
_____12864:42:4: error: ‘DateTime’ was not declared in this scope
D:\ардурино\New Folder\_____12864\_____12864.ino:42:4: note: suggested alternative: ‘Time’
_____12864:42:19: error: ‘class DS3231’ has no member named ‘getDateTime’; did you mean ‘getTime’?
Несколько библиотек найдено для «DS3231.h»
Используется: D:\ардурино\New Folder\libraries\DS3231
Не используется: D:\ардурино\New Folder\libraries\Arduino-DS3231-master
exit status 1
no matching function for call to ‘DS3231::DS3231()’
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»
Удалите эту библиотеку — D:\ардурино\New Folder\libraries\DS3231
Должна остаться — Arduino-DS3231-master
УРА! ВСЕ ПОЛУЧИЛОСЬ! БОЛЬШОЕ СПАСИБО!!!
Добрый день! Благодаря этой теме «поднял», лежавший 4 года экран WM-G1206A, старший брат 12864. Есть вопрос. Пример из из «шапки» выводит изображение как положено, а изображения из библиотеки перевернуты на 180 градусов. Какой параметр в программе отвечает за вращение(ориентацию) изображения.
u8g.setRot180();
Спасибо!