Мы не выдаем Китай за Италию. Платы от российского производителя по сниженным ценам.

Новинки: Freeduino Mini, FTDI Board, модули USB Host, Ethernet, Buffer, Relay, Freeduino 2013.

Описание LCD Keypad Shield

LCD Keypad Shield – оригинальный дополнительный модуль, организующий работу с ЖК индикаторами, совместимыми с HD44780 интерфейсом, и пятикнопочной клавиатурой по шине SPI или I2C.

Модуль основан на микросхеме MCP23S17 или MCP23017 (16-разрядный расширитель портов ввода/вывода с SPI или I2C интерфейсом, соответственно).

Комплектация

Модуль LCD Keypad Shield поставляется либо в собраном виде (в вариантах для шин SPI или I2C), либо без монтажа штыревых компонентов (также в вариантах для шин SPI или I2C). К модулю прилагается вилка PLS-16.

ЖК-дисплей в комплект поставки не входит!

LCD Keypad Shield SPI 1000 р. 750 р. В корзину

LCD Keypad Shield на шину SPI (с микросхемой MCP23S17).

LCD Keypad Shield I2C 1000 р. 750 р. В корзину

LCD Keypad Shield на шину I2C (с микросхемой MCP23017).

LCD Keypad Shield SPI DIY 950 р. 720 р. В корзину

LCD Keypad Shield DIY (без монтажа штыревых компонентов) на шину SPI (с микросхемами MCP23S17).

LCD Keypad Shield I2C DIY 950 р. 720 р. В корзину

LCD Keypad Shield DIY (без монтажа штыревых компонентов) на шину I2C (с микросхемами MCP23S17).

ЖК индикатор WH1602B-YYK-CTK PLS 550 р. 400 р. В корзину

ЖК индикатор 16x2 WH1602B-YYK-CTK c запаянными "низкими" (4мм) штыревыми разъемами - специально для LCD Keypad Shield.

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

Основные технические характеристики LCD Keypad Shield:

  • интерфейс с ЖК индикатором: HD44780 совместимый, 4-битный, 16-pin;
  • доступные программно выводы интерфейса HD44780: RS, RW, E, DB4-DB7, подсветка;
  • интерфейс с платой Arduino: SPI или I2C (в зависимости от выбранной модификации модуля);
  • 5 кнопок, опрашиваемых программно по шине SPI или I2C, кнопка сброса;
  • разъемы для ЖК индикатора и внешних кнопок позволяют разнести плату Arduino и ЖК индикатор с кнопками;
  • модулю задается трехбитный адрес на шине (с помощью перемычек), что позволяет размещать на одной шине до 8 устройств с аналогичными микросхемами;
  • возможность выбора с помощью перемычки номера соответствующего выхода микроконтроллера Arduino (digital pin 8, 9 или 10) для сигнала CS шины SPI;
  • в модуле применены "проходные" разъемы, позволяющие состыковывать несколько модулей без сдвига относительно платы Arduino;

Перед началом работы с дополнительным модулем Expander Shield рекомендуем ознакомиться с его принципиальной электрической схемой.

принципиальная схема по лицензии Creative Commons Attribution-ShareAlike 2.5

Подготовка модуля к работе

На выводы модуля могут быть одеты транспортировочные фиксаторы, которые необходимо снять перед началом работы.

Выбор адреса модуля на шине

Модуль основан на микросхеме MCP23S17/MCP23017, для которой необходимо выбрать младшие три бита адреса на шине SPI/I2C. Биты выбираются с помощью перемычек на разъеме Address притягиванием битов 0, 1, 2 к "земле" (Gnd) или +5В (5V).

Адрес каждой микросхемы должен быть уникальным, и на одной шине можно разместить до 8 микросхем.

Таким образом, возможно, к примеру, подключение к плате Arduino восьми модулей LCD Keypad Shield, или четырех модулей LCD Keypad Shield и двух Expander Shield. Если применять I2C версии модулей, то вся конструкция будет задействовать всего 2 вывода платы Arduino!

При подключении нескольких модулей LCD Keypad Shield сами ЖК-дисплеи могут подключаються, например, с помощью шлейфов от дисковода, и угловых вилок PLS-16R.

При подключении нескольких модулей следует обратить внимание на то, что подсветка потребляет довольно большой ток - порядка 100-150 мА.

Управление подтяжкой шины I2C

Для I2C модификации модуля с помощью перемычек в левой части разъема XS включаются или отключаются резисторы, подтягивающие шину к +5В. Как правило, подтягивающие резисторы должны быть подключены если на шине I2C только одно устройство. Если устройств несколько, то резисторы подключаются только у одного из устройств.

Ниже представлено состояние перемычек при включенных подтягивающих резисторах и при отключенных . Также, для отключения подтягивающих резисторов можно просто снять перемычки.

Выбор номера вывода для управления сигналом CS шины SPI

Для SPI модификации модуля необходимо выбрать вывод микроконтроллера Freeduino/Arduino, используемый в качестве сигнала CS. Обычно используется вывод 10, что соответствует крайнему левому положению перемычки на разъеме CS. Переставляя перемычку на одно из двух других положений, возможен выбор 9 и 8 вывода соответственно.

Настройка контрастности дисплея

Для настройки контрастности дисплея используется подстроечный резистор R3. При неправильно настроенной контрастности на дисплее может быть совсем не видно символов, или видно очень плохо.

Библиотека MCP23xxx

Для упрощения работы с этим, и рядом других модулей, разработана библиотека MCP23xxx, предоставляющая простой интерфейс к функционалу микросхем серии MCP23xxx. Библиотека доступна для свободного скачивания: http://www.freeduino.ru/arduino/files/MCP23xxx.zip Библиотека совместима с ПО Arduino версии 1.0.5 (также предполагается совместимость и с более поздними версиями).

Фактически, это набор из двух библиотек: MCP23xxx и LiquidCrystal_MCP23x17.

Более подробно установка библиотек описана в разделе подключение библиотек. Структура каталогов папки libraries после установки должна стать такой:

/libraries/LiquidCrystal_MCP23x17
/libraries/MCP23xxx

В библиотеке MCP23xxx реализованы шаблоны классов, организующие работу с расширителями портов MCP23017, MCP23S17, MCP23008 и MCP23S08. Библиотека LiquidCrystal_MCP23x17 - это модифицированная стандартная библиотека LiquidCrystal, поддерживающая русский язык, и работающая через расширитель портов.

К библиотеке прилагаются примеры, поясняющие работу с ней. Также доступна для скачивания предыдущая версия библиотеки: http://www.freeduino.ru/arduino/files/MCP23x17.zip

Рассмотрим пример "Hello World" для I2C модификации модуля. В нем показано не только как инициализировать модуль и выводить на него данные, но и приведен пример опроса одной из кнопок.

////Для SPI версии подключаем SPI.h:
//#include <SPI.h>
//Для I2C версии подключаем Wire.h:
#include <Wire.h>
//подключаем библиотеку
#include <MCP23xxx.h>
#include <LiquidCrystal_MCP23x17.h>

////Для SPI версии создаем объект класса CMCP23S17:
//CMCP23S17 MCP;
//Для I2C версии создаем объект класса CMCP23017:
CMCP23017 MCP;

//Объект для ЖК
LiquidCrystal_MCP23x17 lcd;

void setup() {
//  //Для SPI версии конфигурируем шину SPI и объект MCP номером линии CS (10) и адресом (0)
//  SPI.begin();
//  MCP.init(10, 0);
  //Для I2C версии конфигурируем шину I2C и объект MCP адресом (0)
  Wire.begin();      //TWBR = 12;  // <- так можно сделать 400kHz I2C
  MCP.init(0);
 
  //настраиваем объект LCD для работы через указанный объект MCP
  lcd.init(MCP);
  //...и включаем подсветку
  lcd.Backlight(1);

  //...остальной код одинаков и для оригинальной LiquidCrystal и для LiquidCrystal_MCP23x17
 
  // настраиваем число столбцов и строк:
  lcd.begin(16, 2);
  // выводим сообщение.
  lcd.print("hello, world!");
  // кнопка Enter подключена к 12 выводу микросхемы MCP
  MCP.pinMode(12, INPUT);
}

void loop() {
  // устанавливем курсор
  lcd.setCursor(0, 1);
  // выводим время в секундах, начиная со старта:
  lcd.print(millis()/1000);
  // если нажата кнопка Enter, выводим сообщение
  if (MCP.digitalRead(12)==0)
    lcd.print(" Enter pressed");
  // иначе, выводим пробелы, чтобы стереть сообщение
  else
    lcd.print("              ");
}