Обзор шилда RGB LCD KeyPad Shield

21.11.2017 12:43

jazon



Введение

        Всем доброго, в этой статье будет приведен краткий обзор одного из интересных модулей шилдов для платы Arduino Uno, это как вы уже поняли RGB LCD KeyPad Shield размерностью 16х02. Модуль шилд конечно интересен, но при этом нельзя сказать что он являет собой какую - то новинку на рынке бюджетной любительской электроники, скорее всего для многих этот девайс остаётся своего рода тёмной лошадкой. Что же, эта статья как раз для тех кто не знаком еще с этим устройством. Итак, начнем описание:


Описание

  • Шилд использует в качестве драйвера микросхему MCP23017.
  • 5 кнопок управления (Вверх, вниз, вправо, влево, выбор).
  • Пъезопищалка (Пин D3).
  • Подсветка LCD экрана (Пин D9).
  • Передача данных с кнопок управления и управление LCD экраном при помощи шины I2C.
  • Совместим с платами Arduino Uno, Mega.

Ниже, на картинке можно видеть визуальное описание:



Библиотека

Библиотеку используемую для работы с этим шилдом можно скачать здесь и здесь.

После того как библиотека будет установлена в среду Arduino IDE, можно попробовать загрузить тестовый скетч-пример, его можно найти в Arduino IDE (Файл -> Примеры -> Adafruit RGB LCD Shield Library -> Hello World), либо скопировать прямо из окна браузера, ниже приведён листинг скетча:


#include "Wire.h"
#include "Adafruit_RGBLCDShield.h"
#include "utility/Adafruit_MCP23017.h"


Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7

void setup() 

{

  Serial.begin(9600);
 
  lcd.begin(16, 2);

  int time = millis();
  lcd.print("Hello, world!");
  time = millis() - time;
  Serial.print("Took ");

  Serial.print(time); Serial.println(" ms");
  lcd.setBacklight(WHITE);
}

uint8_t i=0;
void loop() {
  lcd.setCursor(0, 1);
  lcd.print(millis()/1000);

  uint8_t buttons = lcd.readButtons();

  if (buttons) {
    lcd.clear();
    lcd.setCursor(0,0);
    if (buttons & BUTTON_UP) {
      lcd.print("UP ");
      lcd.setBacklight(RED);
    }
    if (buttons & BUTTON_DOWN) {
      lcd.print("DOWN ");
      lcd.setBacklight(YELLOW);
    }
    if (buttons & BUTTON_LEFT) {
      lcd.print("LEFT ");
      lcd.setBacklight(GREEN);
    }
    if (buttons & BUTTON_RIGHT) {
      lcd.print("RIGHT ");
      lcd.setBacklight(TEAL);
    }
    if (buttons & BUTTON_SELECT) {
      lcd.print("SELECT ");
      lcd.setBacklight(VIOLET);
    }
  }


Заключение

        О том как работает тестовая программа для этого шилда вы можете посмотреть видео ниже, ну и напоследок, посмотрев видео, можно сказать что библиотека немного "сырая", в ней пока что нереализована возможность плавного перехода цветов. Хотя, может быть эта функция и не поддерживается драйвером LCD экрана, если досконально поковыряться в библиотеке то это можно будет выяснить. Ну и на этом пожалуй всё, оставляйте свои комментарии и задавайте вопросы, возможно вместе мы сможем найти нужное решение.




Расскажи о нас

Сообщение

Если у Вас есть опыт в работе с Arduino и собственно есть время для творчества, мы приглашаем всех желающих стать авторами статей публикуемых на нашем портале. Это могут быть как уроки, так и рассказы о ваших экспериментах с Arduino. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.