Сегодня я решил описать процесс подключения к контроллеру Arduino платы LCD Keypad Shield и пример работы с ним.
Сам LCD Keypad Shield представляет собой плату с двухстрочным экраном и 6-ю кнопками. Его очень удобно использовать в проектах, так как не надо разводить провода на макетной плате - тут все уже сделали за вас.
Разработчики этого шилда очень грамотно поступили, подключив все кнопки через резисторы разного сопротивления к аналоговому пину. Это позволило сэкономить 5 дискретных пинов для других нужд.
Схема LCD Keypad Shield
Используемые пины
A0 - кнопки (Select, Up, Right, Down, Left)
D4-D10 - подключение экрана
Проверочный скетч для LCD Keypad Shield
// include the library code:
#include <LiquidCrystal.h>// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.setCursor(0,0);
lcd.print("LCD Key Shield");
lcd.setCursor(0,1);
lcd.print("Press Key:");
}void loop() {
int x;
x = analogRead (0);
lcd.setCursor(10,1);
if (x < 60) {
lcd.print ("Right ");
}
else if (x < 200) {
lcd.print ("Up ");
}
else if (x < 400){
lcd.print ("Down ");
}
else if (x < 600){
lcd.print ("Left ");
}
else if (x < 800){
lcd.print ("Select");
}
}
В данном скетче реализовано отображение названий нажатых клавиш.
Демонстрация:
Ничего не нажато
Нажата кнопка Select
Нажата кнопка Left
Нажата кнопка Up
Нажата кнопка Down
Нажата кнопка Right
Спасибо, реально заработал шилд, до этого никак не мог разобраться с назначением кнопок, DOWN постоянно показывал LEFT
Пришлось подменить значение на 300 у (down) else if (x < 300){
lcd.print ("Down "); тогда заработало все коректною
Ни хера не запустилось, мой шилд проклят китайцами?!!
Работает, очень глупая ошибка была, не выставил arduino uno до этого leonardo тестил.
Спасибо! Все работает!
Спасибо . всё работает// побольше разных примеров бы
Такой вопрос: экраном заняты пины D4-D10. Но D10 используется для шины SPI, и я не могу, в частности, подключить датчик GY-BMP280-3.3. Можно ли переназначить пины, занимаемые дисплеем? Например, кинуть перемычку на D3, обрезав пин D10, идущий от экрана к ардуине. Но я не нашел в скетче место, где упоминается D10. Ведь изменения нужно внести и в скетч. Или придется искать другой экран?
из верхней части скетча
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
10 пин задействован под регулировку яркости
Совсем ку-ку? яркость регулируется подстроечным резистором
10 пин используется для шим регулировки яркости подсветки, а подстроечный резистор нужен для регулировки контрастности экрана. Контрастность и яркость разные вещи.
Спасибо!
Оказалось, что нужно было контрастность отрегулировать.
Все работает!
Хоть пост и давно написан, но спасибо!! )))
Спасибо. Все работает, но при использовании ацп на соседнем А1 функция analogread(a0) вешала АЦП... После долгих мучений пришол к выводу, что с этим шилдом лучше делать опрос церез АЦП с прерыванием.
Спасибо! Всё заработало!
Вы что спецом над начинающими издеваетесь? Где в скетче это? #include
#include
#include Wire.h
Ардуино лентяй
cvavr тема
А как насчет дребезга контактов ?
Видимо, в шилде уже развязка специальная стоит)
Отличная статья. Скетч работает! Спасибо
Подскажите пож., а как подключить к Arduino Nano? В целом всё понятно, но не хочется ошибиться.
Можно через плату согласования
Спасибо конечно, но я хотел бы ответ типа:
D4 | D4
D5 | D5
D6 | D6
D7 | D7
D8 | RS
D9 | E
A0 | A0
LiquidCrystall lcd(8,9,4,5,6,7);
И подключить +5в и GND
Надеюсь это правильно.
Но вполне возможно это не всё!!! Нужно ли подключать пины TX и RX и т.п.?
Ну а подключать ВСЕ контакты LCD Keypad Shield тоже не хочется, многие из них явно не задействованы.
На правые 2 модуля не обращайте внимания
Вот это КЛАСС! Спасибо!
Добрый день. Возможно ли подключить шилд через I2C контроллер?