Плата расширения DFRobot Gravity LCD12864 Shield V1.0 для Arduino
Плата расширения DFRobot Gravity LCD12864 Shield V1.0 для Arduino
Плата расширения DFRobot Gravity LCD12864 Shield V1.0 для Arduino
Плата расширения DFRobot Gravity LCD12864 Shield V1.0 для Arduino
Плата расширения DFRobot Gravity LCD12864 Shield V1.0 для Arduino
Плата расширения DFRobot Gravity LCD12864 Shield V1.0 для Arduino

Плата расширения DFRobot Gravity LCD12864 Shield V1.0 для Arduino

Арт. 12788

3,450

менее 10 шт.

Описание

Технические характеристики

  • Модель: DFRobot Gravity LCD12864 Shield V1.0 (SKU: DFR0287)
  • Питание: 3.3В + 5В DC
  • ЖК-экран: COG монохромный 128 х 64 пикс., NHD C12864
  • Угол обзора: 6:00
  • Цвет подсветки: белый
  • Цвет шрифта: чёрный
  • Контроллер графики: ST7565
  • Микро-джойстик: 4 направления с функцией кнопки, SF303GJ26
  • Кнопка сброса Reset
  • Интерфейсы: GPIO, UART, ADC
  • Светодиодная индикация: питание
  • Шаг контактов: 2.54мм (0.1 дюйма)
  • Форм-фактор: UNO R3
  • Температура эксплуатации: -20°С ~ + 70°С
  • Размеры: 60 х 55 х 20мм
  • Вес: 25г

Любое интерактивное приложение с микропроцессорным управлением не может существовать без индивидуальных средств общения с внешним миром, представляющих разнообразные радиоэлектронные компоненты ввода-вывода информации. Даже такому простому и распространённому проекту, как домашняя метеостанция, с которого довольно часто начинается погружение в изучение основ программирования микроконтроллерных платформ, необходима демонстрация результатов измерения температуры и давления. Развитое приложение в составе с несколькими датчиками или сенсорами, выполняющими оценку состояния воздуха или нахождение уровня окружающего шума/освещения, может потребовать значимой, или даже всей области свободного пространства на цифровом экране для отображения имеющихся значений и параметров. Чтобы не столкнуться с условиями нехватки ресурсов экрана, опытные разработчики выбирают наиболее подходящее решение из нескольких вариантов - увеличение размеров/разрешения экрана (не всегда лучший путь), минимизация/урезание возможностей графического интерфейса, создание многостраничного меню, и так далее.

Модуль расширения DFRobot LCD12864 создан для задач программирования интерактивных приложений с чистого листа. Устанавливается модуль поверх соединительных разъёмов микроконтроллера. На плате представлены монохромный ЖК дисплей с драйвером ST7565 и управляемой светодиодной подстветкой, белым фоном и чёрным шрифтом, разрешением 128 х 64 графических точек (они же пикселы). Дисплей способен выводить абсолютно любые текстовые, символьные и графические данные, образованные алгоритмами приложения. Кроме 2.1-дюймового COG-экрана, в схему платы расширения интегрирован механический 5-позиционный микро-джойстик, поддерживающий 4 направления (влево, вправо, вверх, вниз) и нажатие по центру подобно обычной кнопке. Джойстик по праву считается удобнейшим инструментом навигации между графическими объектами на экране, включая перемещение по спискам с выделением элементов (например, строки или разделы графического меню приложения).

Занимая в форм-факторе UNO R3 все доступные операционные порты подключения периферии, модуль расширения DFRobot Gravity LCD12864 Shield использует для себя лишь часть из них. Задействованы линии D10, D11 и D13 интерфейса SPI, а также D7-D9 для управления драйвером и светодиодной подсветкой ЖК-экрана. Микро-джойстик подведён к аналоговому выводу А0. Остальные свободные цифровые и цифро-аналоговые вводы-выводы Arduino-совместимого микроконтроллера, в том числе шины последовательной передачи данных UART на выводах D0-D1 и I2C на вывода A4-A5, скомбинированы в 3-пиновые разъёмы с линиями питания 5В, и разведены на плате в две раздельные группы J5, J6 и J7, J8, J10. Штыри этих групп окрашены в зелёный и синий цвета соотвественно, порты пронумерованы шелкографией. Шаг между контактами 2.54 мм (или 0,1 дюйма) позволяет выполнять проводные соединения с другими совместимыми модулями на этапах прототипирования или отладки приложения.

Модулю расширения DFRobot Gravity LCD12864 Shield для работы требуется два источника постоянного напряжения с 3.3-вольтовым и 5-вольтовым потенциалом, присутствующие в схеме распределения электроэнергии у микроконтроллерных плат формата UNO R3. Встроенный индикатор питания и аналоговый джойстик модуля расширения LCD12864 Gravity Shield сопряжены с контуром 5В, а монохромный COG экран — с контуром 3.3В. Дополнительно на плате есть физическая кнопка Reset для сброса микроконтроллера

Компоненты и интерфейсы платы расширения DFRobot LCD12864

 

 

Пример программы управления джойстиком с подключением библиотеки U8g2 для вывода изображения на экран

// Подключение библиотеки
#include <Arduino.h>
#include <U8g2lib.h>

// Перемененные и определения
#define joystickPin 0
#define RIGHT 1
#define UP 2
#define LEFT 3
#define DOWN 4
#define PUSH 5
#define MID 0
bool joystickChange;

// Инициализация графического драйвера
U8G2_ST7565_NHD_C12864_F_4W_SW_SPI u8g2(U8G2_R2, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); 

// Процедура считывания состояния джойстика
int readJoystick(void) {
  int key_value = 0;
  int stickRaw = analogRead(joystickPin);
  delay(10);
  static int keyValueLast = 0;
  if(stickRaw < 100)
    key_value = 3;  // влево
  else if(100 <= stickRaw && stickRaw < 300)
    key_value = 5;  // нажатие
  else if(300 <= stickRaw && stickRaw < 500)
    key_value = 4;  // вниз
  else if(500 <= stickRaw && stickRaw < 700)
    key_value = 1;  // вправо
  else if(700 <= stickRaw && stickRaw < 900)
    key_value = 2;  // вверх
  else
    key_value = 0; // в центре
  if (keyValueLast != key_value){joystickChange = true;keyValueLast = key_value;}
  return key_value;
}

// Процедура оценки состояния джойстика
boolean joystickAvailable(void){ 
  readJoystick();
  delay(10);
  boolean temp=joystickChange;
  joystickChange=false;
  return temp;
}

// Процедура заполнения буфера
void draw(void) {
  u8g2.setFont(u8g2_font_ncenB08_tr); // Выбор подходящего шрифта
  u8g2.drawStr(0,20,"www.DFRobot.com"); // Запись во внутреннюю память
  u8g2.drawStr(0,40,"Joystick is: ");
  if (joystickAvailable()) {  
    switch (readJoystick()) {
      case RIGHT:
      u8g2.drawStr(70,40,"RIGHT");
      break;
      case LEFT:
      u8g2.drawStr(70,40,"LEFT");
      break;
      case UP:
      u8g2.drawStr(70,40,"UP");      
      break;
      case DOWN:
      u8g2.drawStr(70,40,"DOWN");      
      break;
      case PUSH:
      u8g2.drawStr(70,40,"PUSH");      
      break;
      case MID:
      u8g2.drawStr(70,40,"MID");      
      break;
    };
  }  
}

void setup(void) {
  u8g2.begin(); 
  u8g2.setContrast(50); // Настройка контрастности экрана 0-255
  pinMode(joystickPin, INPUT); // Аналоговый вход 0 в состояние приёма данных
}

void loop(void) {
  u8g2.clearBuffer();         // Очистка внутренней памяти
  draw();
  u8g2.sendBuffer();          // Вывод содержимого внутренней памяти на экран
  delay(500);  
}

 

Электрическая принципиальная схема Gravity LCD12864 Shield

 

 

Программное обеспечение

  1. Скетч с примером для DFRobot LCD12864 Shield (zip-архив)
  2. Среда разработки Arduino IDE
  3. Графическая библиотека U8glib с драйверами для экранных модулей (разработка более не ведётся)
  4. Графическая библиотека U8g2 с драйверами для экранных модулей
  5. Программа преобразования графических изображений LCD Assistent

Техническая документация

  1. Инструкция добавления загружаемой библиотеки в среду Arduino IDE