Будем подключать LCD Keypad Shield к Arduino UNO R3. На шилде имеются кнопки, вот и попробуем с помощью них манипулировать нашей Ардуиной и результат выводить на дисплей.
Характеристики шилда
- Дисплей синего цвета с белыми буквами. Регулировка яркости подсветки
- Тип дисплея: Символьный
- Разрешение:16x2
- 6 кнопок
- Питание дисплея: 5 Вольт
- Работа дисплея: в 4 битном режиме
Подключение
Как и любой другой шилд подключается элементарно, просто втыкаем туда куда втыкается, ошибиться весьма трудно. При соединении с Arduino UNO R3 обе платы окажутся ровно одна под другой. Шилд совместим с Arduino (Diecimila, Duemilanove, UNO, Mega, Mega2560, Mega ADK).
В состав платы входит LCD дисплей и 6 кнопок. Пины 4, 5, 6, 7, 8, 9 и 10 задействованы для управления LCD. На аналоговый пин 0 считываются сигналы с кнопок. Дисплей в данной сборке работает в четырех битном режиме.
Скетч
В данном примере на дисплей будут выводиться направления (вверх, вниз, влево, вправо) и кнопка выбора, соответствующие нажатым кнопкам. Для работы потребуется библиотека LiquidCrystal.
#include <Wire.h> // добавляем необходимые библиотеки #include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 4, 5, 6, 7 ); // Нажатые кнопки int button; const int BUTTON_NONE = 0; const int BUTTON_RIGHT = 1; const int BUTTON_UP = 2; const int BUTTON_DOWN = 3; const int BUTTON_LEFT = 4; const int BUTTON_SELECT = 5; int getPressedButton() { int buttonValue = analogRead(0); // считываем значения с аналогового входа(A0) if (buttonValue < 100) { return BUTTON_RIGHT; } else if (buttonValue < 200) { return BUTTON_UP; } else if (buttonValue < 400) { return BUTTON_DOWN; } else if (buttonValue < 600) { return BUTTON_LEFT; } else if (buttonValue < 800) { return BUTTON_SELECT; } return BUTTON_NONE; } void setup() { lcd.begin(16, 2); lcd.print("www.2150692.ru"); } void loop() { button = getPressedButton(); switch (button) { case BUTTON_RIGHT: // при нажатии кнопки выводим следующий текст lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 0); lcd.print("BUTTON: RIGHT"); break; case BUTTON_LEFT: lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 0); lcd.print("BUTTON: LEFT"); break; case BUTTON_UP: lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 0); lcd.print("BUTTON: UP"); break; case BUTTON_DOWN: lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 0); lcd.print("BUTTON: DOWN"); break; case BUTTON_SELECT: lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 0); lcd.print("BUTTON: SELECT"); break; } }
100 200 400 800 - значения с аналогового входа.
Такая же история. Вроде горит, в компорт нажатия выводит. По часовой стрелке крутить пока не появится текст. Но не перекрутить, тогда задний фон начинает выделяться.