LCD 1602 keypad shield – экран с клавишами для Arduino

В процессе поиска компонентов для проекта «Бани на Ардуино» наткнулся на модуль LCD 1602 keypad shield. На борту модуля имеется 5 кнопок и экран 1602. Кнопки + дисплей — это отличное сочетание. Можно организовать многоуровневое меню и с помощью кнопок реализовать перемещение в нем. Модуль отлично подойдет для быстрой отладки приложений, работающих с дисплеем 1602.

Пример программы для работы Ардуино с модулем LCD 1602 keypad shield

Представленный ниже алгоритм, выводит на экран модуля 1602 LCD keypad shield Arduino две строки. В первой строке отображается надпись Temp.: C – место для вывода показаний с датчика температуры. Во второй строке отображается таймер, считающий время после запуска программы. Алгоритм в будущем отлично подойдет для проекта «Ардуино и баня».

#include "Time.h" //библиотека для работы со временем
#include "LiquidCrystal.h" //библиотека для работы с дисплеем LCD 1602. Некоторые люди ищут в сети русификатор библиотеки LCD 1602 keypad shield, не понимаю зачем, но с уверенностью могу сказать, что его нет)))
 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //выводы необходимые для работы дисплея. 
//При работе с модулем 1602 LCD keypad shield Arduino эти выводы заняты всегда и их не поменять, 
//в противном случае возникнут проблемы с отладкой
 
void setup()
{
 
//настройки дисплея
pinMode(9, OUTPUT);
analogWrite(9,100);
lcd.begin(16,2);
 
//настройки времени
setTime(0,0,0,1,10,2015);
}
 
void loop()
{
//вывод данных на дисплей
lcd.clear();
lcd.print("Temp.: ");
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Time: ");
lcd.print( hour() );
lcd.print( ":" );
lcd.print( minute() );
lcd.print( ":" );
lcd.print( second() );
 
delay(1000); //без задержки дисплей будет мерцать, 
//поэтому лучше использовать ее кратную времени таймера
}

Для тех, кому не терпится проверить, как работают кнопки модуля LCD 1602 keypad shield, привожу рабочий демонстрационный скетч для Ардуино. Код был найден в сети, мною добавлены исчерпывающие комментарии и исправлены ошибки.

#include "Wire.h" // библиотека для работы с протоколом I2C
#include "LiquidCrystal.h" //библиотека для работы с дисплеем
 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7 ); //как обычно, пины необходимые для работы LCD 1602 keypad shield
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("arduinomania.ru");
}
 
//в основном цикле также нет ничего сложного, переменной button передается информация о нажатой кнопке
//и с помощью оператора выбора на экран выводится информация сигнализирующая какая кнопка была нажата
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;
}
}

Примеры проектов на 1602 LCD keypad shield Arduino поражают. В сети можно найти алгоритмы программ от часов до игр!

Метки: Метки