Обзор LCD модуля keypad (LCD1602, 2×16, 5V)
Сегодня расскажу об очень популярном модуле LCD keypad shield, разработанный для Arduino UNO, MEGA и другие аналогов. Модуль включает в себя LCD дисплей (16х2) и шесть кнопок. Для взаимодействия контроллера Arduino и модуля, используются цифровые вывода 4, 5, 6, 7, 8, 9, 10 а для чтения состоянии кнопок используется один аналоговый вывод. Также модуль позволяет регулировать контрастность LCD экран, с помощью подстрочного потенциометра RP1 (10кОм). Данный модель отлично подходит для отладки каких-нибудь проектов, мониторинга и так далее.
Технические параметры
Общие сведения
Большую часть модуля занимает ЖК дисплей, марки LCD 1602 с синей подсветкой, передача данных осуществляется по 4-битному режиму, подробнее в этой статье. На нижней части расположены шесть кнопок, пять из-за которых используются для навигации и одна кнопка дублирует reset. В верхнем левом углу установлен потенциометр, необходимый для регулировки контрастности ЖК дисплея. Так как LCD keypad shield устанавливается на плату Arduino свеху и фактически занимает разъемы, на модуле расположены дополнительные отверстия, для впаивания проводов или разъемов (на отдельную колодку. выведен интерфейс ICSP).
Из принципиальной схемы, можно увидеть, что база транзистора отвечающая за подсведку модуля подключена к выводу 10 платы Arduino, следовательно, можно отключать ее.
Принцип работы кнопок
Кнопки располагаются в удобном порядке — вверх, вниз, влево, вправо, и SELECT. Все кнопки подключены к одному аналоговому входу «A0» используя цепочку резисторов, которые выдают разное опорное напряжение для «А0» при нажатии любой кнопки. На рисунке показана часть принципиальной схема LCD keypad shield
Их принциписальной схемы видно, если кнопки не нажаты напряжение на «A0» через резистор R2 (2кОм) будет 5В. Другие резисторы не влияют на схему, а при чтении аналогового вывода «A0» будет параметр на верхнем приделе 1023 (или приблизительно). Теперь рассмотрим, что произойдет, если будет нажата кнопка «Вниз». На выводе «А0» будет напряжением, которое разделено между резистором R2 (2кОм) которое подтянуто к +5В и резисторами R3 (330ОМ) и R4 (620Ом) общий суммой 950Ом, которые пытаются тянуть его вниз к 0В. Напряжения на «A0» будет составлять порядка 1.61В, это означает, что если выполнить команду analogRead () на A0, будет возвращено значение около 306, что означает нажатие кнопки «Вниз»
Такой же принцип применим и для других кнопок, напряжением и значение analogRead (), можно посмотреть ниже:
Напряжением и значение analogRead
► RIGNT: 0.00В: 0 — 8 bit; 0 — 10 bit
► UP: 0.71В: 36 — 8 bit; 145 — 10 bit
► DOWN: 1.61В: 82 — 8 bit; 306 — 10 bit
► LEFT: 2.47В: 126 — 8 bit; 505 — 10 bit
► SELECT: 3.62В: 185 — 8 bit; 741 — 10 bit
Это позволяет сэкономить целый набор выводов и использовать их для более нужного использования. Принципиальная схема LCD keypad shield, показана на рисунке ниже.
Назначение выводов
► A0: Вывод кнопок
► D4: LCD — DB4
► D5: LCD — DB5
► D6: LCD — DB6
► D7: LCD — DB7
► D8: LCD – RS
► D9: LCD Enable
► D10: LCD – отключение подсветки дисплея
Подключение LCD keypad shield к Arduino
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► LCD модуль keypad (LCD1602, 2×16, 5V)
► Кабель USB 2.0 A-B x 1 шт.
Подключение
Установите модуль на плату Arduino UNO, подключите кабель и закрущите данный скетч.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
/* Тестирование производилось на Arduino IDE 1.6.12 Дата тестирования 06.12.2016г. */ #include <LiquidCrystal.h> // Подключяем библиотеку LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 ); // Указываем порты void setup() { lcd.begin(16, 2); // Инициализируем LCD 16x2 lcd.setCursor(0,0); // Установить курсор на первую строку lcd.print("LCD1602"); // Вывести текст lcd.setCursor(0,1); // Установить курсор на вторую строку lcd.print("www.robotchip.ru"); // Вывести текст Serial.begin(9600); // Включаем последовательный порт } void loop() { int x; // Создаем переменную x x = analogRead (0); // Задаем номер порта с которого производим считывание lcd.setCursor(10,1); // Установить курсор на вторую строку if (x < 100) { // Если x меньше 100 перейти на следующею строк lcd.print ("Right "); // Вывести текст Serial.print("Value A0 ‘Right’ is :"); // Вывести текст Serial.println(x,DEC); // Вывести значение переменной x } else if (x < 200) { // Если х меньше 200 перейти на следующию строку lcd.print ("Up "); // Вывести текст Serial.print("Value A0 ‘UP’ is :"); // Вывести текст Serial.println(x,DEC); // Вывести значение переменной x } else if (x < 400){ // Если х меньше 400 перейти на следующию строку lcd.print ("Down "); // Вывести текст Serial.print("Value A0 ‘Down’ is :"); // Вывести текст Serial.println(x,DEC); // Вывести значение переменной x } else if (x < 600){ // Если х меньше 600 перейти на следующию строку lcd.print ("Left "); // Вывести текст Serial.print("Value A0 ‘Left’ is :"); // Вывести текст Serial.println(x,DEC); // Вывести значение переменной x } else if (x < 800){ // Если х меньше 800 перейти на следующию строку lcd.print ("Select"); // Вывести текст Serial.print("Value A0 ‘Select’ is :");// Вывести текст Serial.println(x,DEC); // Вывести значение переменной x } } |
После загрузки прошивки, плата перегрузится и отобразится надпись, нажмите любую кнопку и информация о нажатой кнопке отобразится на дисплеи и в мониторинге порта.
Ссылки
Документация к LCD1602A
Документация к LCD ZYMC1602
Документация к HD44780U
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
LCD модуля keypad (LCD1602, 2×16, 5V)
Купить в Самаре и области
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
LCD модуля keypad (LCD1602, 2×16, 5V)
На схеме подключения дисплея перепутаны клемы подсветки. На катод подается положительный потенциал, а на анод через транзистор отрицательный. Если ошибся — извиняюсь.
R4 — 620 Om
Спасибо автор все работает,только хотелось бы сделать логический переход по мелким програмным обеспечениям
что бы я мог на нем решать простые арифметические решения а так же читать и смотреть календарь с помощью часов реального времени.