Графический дисплей 128×64

Графический экран 128×64 пригодится для вывода показаний датчиков в виде диаграмм и прогресс-баров, сложных интерфейсов и электронных игр.

Видеообзор

Подключение и настройка

У экрана 20 контактов — для питания логики, взаимодействия с управляющей электроникой и управления подсветкой.

Вывод Обозначение Описание
1 VccНапряжение питания (3,3—5 В)
2 GNDОбщий вывод (земля)
3 VoВход питания ЖК панели
4—11 DB0—DB7Шина данных
12 CS1Выбор кристалла 1
13 CS2Выбор кристалла 2
14 RESСброс
15 R/WВыбор: Чтение / Запись
16 D/IВыбор: Команды / Данные
17 EСтробирование данных
18 VeeВыход DC-DC преобразователя
19 A+ питания подсветки
20 K– питания подсветки

Подключение дисплея к управляющей плате

Подключим дисплей к управляющей плате Arduino Uno. Для этого понадобятся Breadboard Half, потенциометр и соединительные провода «папа-папа».

Вывод Обозначение Пин Arduino Uno
1 Vcc 5V
2 GND GND
3 Vo
4 DB0 13
5 DB1 12
6 DB2 11
7 DB3 10
8 DB4 9
9 DB5 8
10 DB6 7
11 DB7 6
12 CS1 5
13 CS2 4
14 RES RESET
15 R/W GND
16 D/I 3
17 E 2
18 Vee
19 A 5V
20 K GND

Примеры работы для Arduino

Для упрощения работы с графическим LCD-дисплеем скачайте и установите библиотеку U8g2.

В ней вы найдёте десятки примеров кода с подробными комментариями. Из неё, например, мы взяли скетч простого осциллографа.

Библиотека подходит как для работы с контроллерами на AVR-платформе, так и с ARM-контроллерами.

Вывод текста

Для вывода первой программы приветствия, воспользуйтесь кодом вроде этого:

HelloWorld.ino
// библиотека для работы с графическими дисплеями
#include <U8g2lib.h>
 
/* пины дисплея:
  | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
  |+5В|Vdd|Vo |DB0|DB1|DB2|DB3|DB4|DB5| DB6| DB7| CS1| CS2| RST| R/W| D/I| E  | Vee| A  | K  |
 
  U8G2_KS0108_128X64_F u8g2(ROTATION, D0, D1, D2, D3, D2, D3, D4, D5, D6, D7,
                            EN, D/I, CS0, CS1, CS2, RESET);
  ROTATION:   угол поворота дисплея
    U8G2_R0:  0 градусов
    U8G2_R1:  90 градусов
    U8G2_R2:  180 градусов
    U8G2_R3:  270 градусов
  D0..D7: пины данных
  EN: стробирование данных
  D/I: команды / данные
  CS0-CS2: выбор кристала
  RESET: сброс
  R/W: чтение / запись (подключайте к земле)
*/
 
// создаём объект для работы с графическим дисплеем
U8G2_KS0108_128X64_F u8g2(U8G2_R0, 13, 12, 11, 10, 9, 8, 7, 6,
                          2, 3, 5, 4, U8X8_PIN_NONE, U8X8_PIN_NONE);
 
void setup(void) 
{
  // начало работы с дисплеем
  u8g2.begin();
  // очищаем память дисплея
  u8g2.clearBuffer();
  // выбираем шрифт
  u8g2.setFont(u8g2_font_ncenB08_tr);
  // выводим строку
  u8g2.drawStr(0,10,"Hello, World!");
  // отсылаем данные на дисплей
  u8g2.sendBuffer();
}
 
void loop(void)
{
}

Вывод кириллицы

Для вывода кириллицы используйте соответствующий шрифт.

HelloWorldRus.ino
// библиотека для работы с графическими дисплеями
#include <U8g2lib.h>
 
/* пины дисплея:
  | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
  |+5В|Vdd|Vo |DB0|DB1|DB2|DB3|DB4|DB5| DB6| DB7| CS1| CS2| RST| R/W| D/I| E  | Vee| A  | K  |
 
  создаём объект для работы с графическим дисплеем
  U8G2_KS0108_128X64_F u8g2(ROTATION, D0, D1, D2, D3, D2, D3, D4, D5, D6, D7,
                            EN, D/I, CS0, CS1, CS2, RESET);
  ROTATION:   угол поворота дисплея
    U8G2_R0:  0 градусов
    U8G2_R1:  90 градусов
    U8G2_R2:  180 градусов
    U8G2_R3:  270 градусов
  D0..D7: пины данных
  EN: стробирование данных
  D/I: команды / данные
  CS0-CS2: выбор кристала
  RESET: сброс
  R/W: чтение / запись (подключайте к земле)
*/
 
U8G2_KS0108_128X64_F u8g2(U8G2_R0, 13, 12, 11, 10, 9, 8, 7, 6,
                          2, 3, 5, 4, U8X8_PIN_NONE, U8X8_PIN_NONE);
 
void setup(void) 
{
  // начало работы с дисплеем
  u8g2.begin();
  // включаем поддержку UTF8
  u8g2.enableUTF8Print();
  // очищаем память дисплея
  u8g2.clearBuffer();
  // выбираем шрифт
  u8g2.setFont(u8g2_font_4x6_t_cyrillic);
  // указываем положение курсора
  u8g2.setCursor(0, 5);
  // выводим строку на дисплей
  u8g2.print("Графический дисплей!");
  // выбираем шрифт
  u8g2.setFont(u8g2_font_5x8_t_cyrillic);
  // указываем положение курсора
  u8g2.setCursor(0, 20);
  // выводим строку на дисплей
  u8g2.print("Разрешение: 128x64");
  // выбираем шрифт
  u8g2.setFont(u8g2_font_cu12_t_cyrillic);
  // указываем положение курсора
  u8g2.setCursor(0, 40);
  // выводим строку на дисплей
  u8g2.print("Русские шрифты");
  // выбираем шрифт
  u8g2.setFont(u8g2_font_10x20_t_cyrillic);
  // указываем положение курсора
  u8g2.setCursor(0, 60);
  // выводим строку на дисплей
  u8g2.print("Амперка DIY");
  // отсылаем данные на дисплей
  u8g2.sendBuffer();
}
 
void loop(void)
{
}

Вывод геометрических фигур

Методы библиотеки также позволяют выводить геометрические фигуры.

GeometricFigures.ino
// библиотека для работы с графическими дисплеями
#include <U8g2lib.h>
 
/* пины дисплея:
  | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
  |+5В|Vdd|Vo |DB0|DB1|DB2|DB3|DB4|DB5| DB6| DB7| CS1| CS2| RST| R/W| D/I| E  | Vee| A  | K  |
 
  создаём объект для работы с графическим дисплеем
  U8G2_KS0108_128X64_F u8g2(ROTATION, D0, D1, D2, D3, D2, D3, D4, D5, D6, D7,
                            EN, D/I, CS0, CS1, CS2, RESET);
  ROTATION:   угол поворота дисплея
    U8G2_R0:  0 градусов
    U8G2_R1:  90 градусов
    U8G2_R2:  180 градусов
    U8G2_R3:  270 градусов
  D0..D7: пины данных
  EN: стробирование данных
  D/I: команды / данные
  CS0-CS2: выбор кристала
  RESET: сброс
  R/W: чтение / запись (подключайте к земле)
*/
 
U8G2_KS0108_128X64_F u8g2(U8G2_R0, 13, 12, 11, 10, 9, 8, 7, 6,
                          2, 3, 5, 4, U8X8_PIN_NONE, U8X8_PIN_NONE);
 
void setup(void) 
{
  Serial.begin(9600);
  // начало работы с дисплеем
  u8g2.begin();
  // переменные для хранения высоты и ширины дисплея
  int width = u8g2.getBufferTileWidth() * 8;
  int height = u8g2.getBufferTileHeight() * 8;
  // рисуем две диаганали
  u8g2.drawLine(0, 0, width - 1, height - 1);
  u8g2.drawLine(0, height - 1, width - 1, 0);
  // рисуем окружность в центре дисплея и радиусом 30
  u8g2.drawCircle(width / 2, height / 2, 30, U8G2_DRAW_ALL);
  // рисуем диск (закрашенную окружность) в центре дисплея и радиусом 20
  u8g2.drawDisc(width / 2, height / 2, 20, U8G2_DRAW_ALL);
  // отсылаем данные на дисплей
  u8g2.sendBuffer();
}
 
void loop(void)
{
}

Вывод символов из кодировки Unicode

Графический экран позволяет выводить символы из кодировки Юникод

DrawUnicode.ino
// библиотека для работы с графическими дисплеями
#include <U8g2lib.h>
 
/* пины дисплея:
  | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
  |+5В|Vdd|Vo |DB0|DB1|DB2|DB3|DB4|DB5| DB6| DB7| CS1| CS2| RST| R/W| D/I| E  | Vee| A  | K  |
 
  создаём объект для работы с графическим дисплеем
  U8G2_KS0108_128X64_F u8g2(ROTATION, D0, D1, D2, D3, D2, D3, D4, D5, D6, D7,
                            EN, D/I, CS0, CS1, CS2, RESET);
  ROTATION:   угол поворота дисплея
    U8G2_R0:  0 градусов
    U8G2_R1:  90 градусов
    U8G2_R2:  180 градусов
    U8G2_R3:  270 градусов
  D0..D7: пины данных
  EN: стробирование данных
  D/I: команды / данные
  CS0-CS2: выбор кристала
  RESET: сброс
  R/W: чтение / запись (подключайте к земле)
*/
 
 
U8G2_KS0108_128X64_F u8g2(U8G2_R0, 13, 12, 11, 10, 9, 8, 7, 6,
                          2, 3, 5, 4, U8X8_PIN_NONE, U8X8_PIN_NONE);
 
// https://github.com/olikraus/u8g2/wiki/u8g2reference#drawutf8
 
void setup(void) 
{
  Serial.begin(9600);
  // начало работы с дисплеем
  u8g2.begin();
  // выбираем шрифт в кодировке Unicode
  u8g2.setFont(u8g2_font_unifont_t_symbols);
  // выводим символы из таблицы на дисплей
  u8g2.drawUTF8(20, 30, "☀ ☁ ☂ ☃ ☕");
  // отсылаем данные на дисплей
  u8g2.sendBuffer();
}
 
void loop(void)
{
}

Вывод изображений

Библиотека позволяет выводить на дисплей специально подготовленное растровое графическое изображение в формате .xbm. Для этого воспользуйтесь графическим редактором GIMP. В качестве параметров задаются координаты верхнего левого угла изображения, его размеры и имя массива, в котором хранится закодированное изображение.

DrawBitmap.ino
// библиотека для работы с графическими дисплеями
#include <U8g2lib.h>
 
/* пины дисплея:
  | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
  |+5В|Vdd|Vo |DB0|DB1|DB2|DB3|DB4|DB5| DB6| DB7| CS1| CS2| RST| R/W| D/I| E  | Vee| A  | K  |
 
  U8G2_KS0108_128X64_F u8g2(ROTATION, D0, D1, D2, D3, D2, D3, D4, D5, D6, D7,
                            EN, D/I, CS0, CS1, CS2, RESET);
  ROTATION:   угол поворота дисплея
    U8G2_R0:  0 градусов
    U8G2_R1:  90 градусов
    U8G2_R2:  180 градусов
    U8G2_R3:  270 градусов
  D0..D7: пины данных
  EN: стробирование данных
  D/I: команды / данные
  CS0-CS2: выбор кристала
  RESET: сброс
  R/W: чтение / запись (подключайте к земле)
*/
 
// размер ширины и высоты изображения
#define matryoshka_width 128
#define matryoshka_height 64
 
// массив изображения
static const unsigned char matryoshka_bits[] U8X8_PROGMEM = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x03, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xe0,
   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0xe7, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc3, 0x00, 0x0f, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0x01,
   0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0xc1, 0x03, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0x0f, 0x0e, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf9, 0x1f,
   0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0xff, 0x3f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x7f, 0x38, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x1f,
   0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xf0, 0x83, 0x0f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x02, 0x7f, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x80,
   0x7f, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xf8, 0x1f, 0xc0, 0x7f, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xc0, 0xff, 0x00, 0xc0, 0x03,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x82,
   0xff, 0x00, 0x60, 0x06, 0x07, 0xc7, 0x3f, 0x3c, 0xfc, 0x30, 0x0c, 0x1f,
   0x00, 0xfc, 0x0f, 0x87, 0xff, 0x00, 0x60, 0x06, 0x07, 0xc7, 0x3f, 0x7e,
   0xfc, 0x31, 0x86, 0x39, 0x00, 0xfc, 0xc7, 0x1f, 0xff, 0x00, 0x60, 0x06,
   0x8f, 0xc7, 0x30, 0x66, 0xcc, 0x33, 0x83, 0x30, 0x00, 0xfc, 0xe7, 0x3f,
   0xff, 0x00, 0x30, 0x0c, 0x8f, 0xc7, 0x30, 0xc3, 0x8c, 0x33, 0x03, 0x30,
   0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x30, 0x0c, 0x8b, 0xc6, 0x30, 0xc3,
   0x0c, 0xb3, 0x01, 0x30, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x30, 0x0c,
   0x8b, 0xc6, 0x30, 0xff, 0x0c, 0xf3, 0x81, 0x3f, 0x00, 0xfc, 0xff, 0xff,
   0xff, 0x00, 0xf0, 0x0f, 0xdb, 0xc6, 0x30, 0x03, 0x0c, 0xf3, 0xc1, 0x31,
   0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x38, 0x1c, 0xdb, 0xc6, 0x30, 0x03,
   0x0c, 0x33, 0xc3, 0x30, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x18, 0x18,
   0x73, 0xc6, 0x30, 0x07, 0x8c, 0x33, 0xc6, 0x30, 0x00, 0xfc, 0xff, 0xff,
   0xff, 0x00, 0x18, 0x18, 0x73, 0xc6, 0x30, 0xc6, 0xfc, 0x31, 0xc6, 0x31,
   0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x18, 0x18, 0x23, 0xc6, 0x30, 0xfc,
   0xfc, 0x30, 0x8c, 0x3f, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
   0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x0c, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00 };
 
// создаём объект для работы с графическим дисплеем
U8G2_KS0108_128X64_F u8g2(U8G2_R0, 13, 12, 11, 10, 9, 8, 7, 6,
                          2, 3, 5, 4, U8X8_PIN_NONE, U8X8_PIN_NONE);
 
// переменная для хранения цвета изображения
bool color = false;
 
void setup(void) 
{
  // начало работы с дисплеем
  u8g2.begin();
}
 
void loop(void)
{
  // очищаем память дисплея
  u8g2.clearBuffer();
  // устанавливаем цвет рисования
  u8g2.setDrawColor(color);
  // выводим изображение на дисплей
  u8g2.drawXBMP(0, 0, matryoshka_width, matryoshka_height, matryoshka_bits);
  // отсылаем данные на дисплей
  u8g2.sendBuffer();
  // ждём 3 секунды
  delay(3000);
  // инвертируем цвет
  color = !color;
}

Библиотека openGLCD

Для графического дисплея MT-12864J существует более старая библиотека openGLCD. В эту библиотеку входят примеры игры Rocket и Life, которые мы использовали в видеообзоре.

Характеристики

  • Напряжение питания: 3,3—5 В
  • Максимальный ток потребления: 4 мА
  • Потребляемый ток подсветки: 64 мА
  • Разрешения: 128×64
  • Габариты: 75×58×9 мм

Ресурсы