Дисплей GMG12864-06D ver 2.2

! Заготовка

Дисплей GMG12864-06D — это графический ЖК-дисплей с разрешением 128×64 пикселя, основан на контроллере ST7565R. Дисплей имеет хорошие углы обзора и подходит для использования в устройствах с низким энергопотреблением. Он работает от 3,3 В и использует SPI для взаимодействия.

НазваниеЖК-модуль
МодельGMG12864-06D
Разрешение 128×64
Размер корпуса61.8×45.8×6.8
Размер окна58×28
IC ДрайверST7565R
IC20L16S1Y упрощенный китайский
Температура-20° — +70°
Напряжение3.3В
ИнтерфейсSPI
Информация о модуле

Подключение

LCDESP8266
CSD8(CS)
RSE3.3v
RSD4
SCLD5(SCLK)
SID7(MOSI)
VDD3.3v
VSSGND
A3.3v или PWM D
KGND
Подключение модуля к микроконтроллеру

состояние пина RS где высокий уровень(лог. 1) означает передачу данных, а низкий(лог. 0) передачу команд.

A, K — управление подсветкой

Использование

#include <ESP8266WiFi.h>
#include <SPI.h>
#include <U8g2lib.h>
#include <time.h>

U8G2_ST7565_ERC12864_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/D8, /* dc=*/D4,
                                      /* reset=*/0);

const char* ssid = "ssid";
const char* password = "password";

char daysOfTheWeek[7][12] = {"Sunday",   "Monday", "Tuesday", "Wednesday",
                             "Thursday", "Friday", "Saturday"};

static unsigned char caticon[] U8X8_PROGMEM = {
    0x10, 0x00, 0x02, 0x30, 0x00, 0x03, 0xf0, 0xf1, 0x03, 0xf0, 0xff, 0x03,
    0xf0, 0xff, 0x03, 0xf8, 0xff, 0x07, 0x78, 0xdf, 0x07, 0xbc, 0xae, 0x0f,
    0x3c, 0x8e, 0x0f, 0xbc, 0xae, 0x0f, 0x7c, 0xdf, 0x0f, 0xfc, 0xfb, 0x0f,
    0xf8, 0xfb, 0x07, 0xf0, 0xf5, 0x03, 0xe0, 0xff, 0x01, 0x83, 0x7f, 0x00,
    0x06, 0x3f, 0x00, 0x0c, 0x3f, 0x00, 0xb8, 0x3f, 0x00, 0xf8, 0x3f, 0x00,
    0xe0, 0x3f, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x3b, 0x00};

void setup() {
  Serial.begin(9600);

  u8g2.begin();
  u8g2.enableUTF8Print();

  u8g2.setFlipMode(1);
  u8g2.setContrast(60);

  //  Вывести иконку пока будет идти загрузка остального
  u8g2.clearBuffer();
  u8g2.drawXBMP(54, 20, 20, 24, caticon);
  u8g2.sendBuffer();

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  configTime(3 * 3600, 0, "pool.ntp.org", "time.nist.gov");
  while (!time(nullptr)) {
    Serial.print("*");
    delay(1000);
  }
}

void loop() {
  drawPage_0();

  delay(1000);
}

void drawPage_0() {
  u8g2.clearBuffer();
  //
  time_t now = time(nullptr);
  struct tm* p_tm = localtime(&now);
  //
  String usec = (p_tm->tm_sec < 10) ? "0" + String(p_tm->tm_sec) : p_tm->tm_sec;
  String umin = (p_tm->tm_min < 10) ? "0" + String(p_tm->tm_min) : p_tm->tm_min;
  String uhour =
      (p_tm->tm_hour < 10) ? "0" + String(p_tm->tm_hour) : p_tm->tm_hour;
  String udotw = daysOfTheWeek[p_tm->tm_wday];

  String umon = (p_tm->tm_mon + 1 < 10) ? "0" + String(p_tm->tm_mon + 1)
                                        : p_tm->tm_mon + 1;
  String udate =
      String(p_tm->tm_mday) + "/" + umon + "/" + String(p_tm->tm_year + 1900);
  //
  u8g2.setFont(u8g2_font_inr16_mn);
  u8g2.setCursor(8, 27);
  u8g2.print(uhour + ":" + umin + ":" + usec);

  u8g2.setFont(u8g2_font_profont12_mr);
  u8g2.setCursor(64 - ((udotw.length() * 6) / 2), 42);
  u8g2.print(udotw);
  u8g2.setCursor(64 - ((udate.length() * 6) / 2), 57);
  u8g2.print(udate);
  //
  u8g2.sendBuffer();
}

Проекты