Подключение матричной клавиатуры 4х4 и использование библиотеки Keypad
- Войдите на сайт для отправки комментариев
Втр, 05/02/2013 - 10:09
Подключил матричную клавиатуру вот эту
http://www.ebay.com.au/itm/2PCS-4x4-Matrix-16-Key-Membrane-Switch-Keypad...
Попробовал пример работы с клавиатурой вот этот(ссылка ниже) - работает. Схема собрана так же как на примере приведенном ниже.
http://arduino-ua.com/art3-Podkluchenie_matrichnoi_klaviatyri_k_Arduino
Но вот с примером из библиотеки Keypad (http://playground.arduino.cc//Code/Keypad) не получается, цифры не все показывает и не все кнопки нажимаются.
/* @file CustomKeypad.pde || @version 1.0 || @author Alexander Brevig || @contact alexanderbrevig@gmail.com || || @description || | Demonstrates changing the keypad size and key values. || # */ #include <Keypad.h> const byte ROWS = 4; //four rows const byte COLS = 4; //four columns //define the cymbols on the buttons of the keypads char hexaKeys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[ROWS] = {9,8,7,6}; //connect to the row pinouts of the keypad byte colPins[COLS] = {5,4,3,2}; //connect to the column pinouts of the keypad //initialize an instance of class NewKeypad Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600); } void loop(){ char customKey = customKeypad.getKey(); if (customKey){ Serial.println(customKey); } }
Может кто нибуди подключал удачно матричную клавиатуру с использованием библы keypad?
Схема собрана так же как на примере приведенном ниже.
http://arduino-ua.com/art3-Podkluchenie_matrichnoi_klaviatyri_k_Arduino
Собирал по схеме по нижней
Уберите вообще резисторы.
Спасибо заработало, а можете рассказать почему резисторы оказались не нужными?
Ну и если можно подскажите как в выше приведенном скече реализовать следующую логику:
например, если нажата кнопка "A", то делать то?
Примитивная логика обработки кнопок:
Резисторы не нужны потому, что используется принцип матрицы, т.е. первые 4 выхода выдают напряжение, а остальные 4 входа его снимают. Резисторы гасили напряжение на землю.
Резисторы не нужны потому, что используется принцип матрицы, т.е. первые 4 выхода выдают напряжение, а остальные 4 входа его снимают. Резисторы гасили напряжение на землю.
Если бы стояли подтягивающие резисторы к +5V ,как на первой схеме, то они бы не мешали.
Спасибо всем за помощь. Ну и последний вопросик (знаю что надо пытаться сделать все самому, а не спрашивать все на форуме, но не силен я в программировании, а желание разобраться и сделать законченное изделие огромное:) ). например: при нажатии кнопки "A" попадаем в меню подпрограммы, далее вводим с клавиатуры число 38,6 к примеру, и жмем кнопку "B" что бы сохранить это введеное значение в EEPROM и нажимаем кнопку выхода в основное тело программы. Далее введеное число будет сравниваться с числом от датчика, ну прям как в терморегуляторе. Если можно как то обрисоваь примерный код как это сделать?
Это конечно не мое дело...но не глубоко ли Вы в дебри полезли?
Я сам только учусь кодить для ардуинки, но не строю такие громоздкие условия.
Начините с маленького, и постепенно дальше, выше, быстре!)
Thanks. Знаю что залез в дебри где уже мало что соображаю но все же...
В выше приведенном коде число 38 записывается в память EEPROM, подскажите как это число и другое произвольное число вводить с клавиатуры, что бы оно запоминалось в EEPROM?
Хотя бы подскажите в какую сторону копать?
Подойдет для выше изложенного?
Нет не подойдет. Что вы хотите делать с этим числом(?) и какая его длинна?
Число будет вида например 22,5
Так на клавиатуре же нет запятой или точки. И еще раз, что вы с ним хотите делать?
Так на клавиатуре же нет запятой или точки. И еще раз, что вы с ним хотите делать?
Разве невозможно назначить на на клавишу к примеру # запятую? Введенное число с клавиатуры должно сохраняться в EEPROM и далее сравниваться с числом считываемым от датчика.
Библиотека keypad (http://playground.arduino.cc/code/Keypad) поддерживает одновременное нажатие двух и более кнопок, но вот пример приведенный ниже не работает, не определяется одновременное нажатие двух кнопок. Что не так?))
if
((customKey ==
'3'
)&&(customKey ==
'#'
))
в этой строке проблема переменнная customKey не может одновременно равнятья двум разным значениям.
условие всегда ложно
судя по документации по приведенной ссылке нажатые коды лежат в массиве
а не знаете как пин код сделать (типа 543*3290)??
очень надо !!
Я для ввода использовал цикл. Правда я всегда знал максимум сколько можно вводить чисел. У меня было 5 знаков. Но можно ввести и 00365. А запятую можно вообще опустить при вводе. Главное в программе учесть сколько знаков мы имеем после запятой. К примеру 36,5 записываемых как 00365.
Число будет вида например 22,5
разделите на две переменные до запятой и после. примите за "," # до нажатия принимайте 1 число, после 2
а не знаете как пин код сделать (типа 543*3290)??
очень надо !!
нажать последовательно цифры 543*3290 :-)
задавайте вопрос конкретней. где? из чего? для чего?
создайте масив
будет ли диблиотека работать с матрицей кнопок 4Х5
http://www.ebay.com.au/itm/2pcs-4x5-Matrix-Array-Membrane-Switch-Keypad-...
разобрался,подредактировал,работает
разобрался,подредактировал,работает
hi
не поделитесь решением?
добавляете ро... га и ко...пыта, увеличиваете массив, добавляете ногу.
Добрый вечер. У меня вот какой вопрос: могу ли я по схеме указанной выше(без резисторов) соединить одновременно дисплей(WH-1602, он занимает порты 5,4,3,2) и клавиатуру типа 4х4?
Смысл втом, что на по одной оси (вертикали или горизонтали) поочередно подается на одну из ног 1 или 0, на остальные соответственно инверсия первого. с других ног читаете.
подключать лучше с диодами. спасает от кз при нажатии двух кнопок одновременно. обсуждалось.
дисплей с кнопками на одних и тех-же ногах можно, но только на тех где чтение.
а лучше и2с поставьте для него,
меньше ног кушает мне больше понравилось, решен вопрос с резистором контраста и подсветка не требует еще ноги.
Уважаемые знатоки. Выручайте, прошу. Ситуация схожа с проблемой топикСтартера.
В выше приведенном коде число 38 записывается в память EEPROM, подскажите как это число и другое произвольное число вводить с клавиатуры, что бы оно запоминалось в EEPROM?
Помимо keypad подлючен также LCD по i2c. Никак не могу вывести нажимаемые символы с кейпада на экран, так чтобы они выводились по порядку и при этом не заполоняли весь экранчик.
вот так правильно:
Может кто нибуди подключал удачно матричную клавиатуру с использованием библы keypad?
[/quote]
У меня другая библиотека на этот счет. https://yadi.sk/d/WT0l3qE23AKXKx
лучше с этой-
http://playground.arduino.cc//Code/Keypad
На этой даже думать не надо. Повесил на кнопку функцию , что должна сделать и она при нажатии сделает и даже дребезг отработает.
ну и хорошо!
Приветствую всех, столкнулся с ситуацией когда необходимо набрать на клавиатуре допустим число 12345678 и путем нажатия ввод он бы его записал в EEPROM,ввод заменить кнопку (*) допустим
А есть такая же библиотека только для клавиатуры 1x4?
А есть такая же библиотека только для клавиатуры 1x4?
нету. О_О
А есть такая же библиотека только для клавиатуры 1x4?
А зачем? 4х-кнопочная подключается как отдельные 4 кнопки, без вских изысков с матрицей
А зачем? 4х-кнопочная подключается как отдельные 4 кнопки, без вских изысков с матрицей
во-первых: матрица 1х1 - это концептуально.
А можно ли подключать этими способами матричную клавиатуру к аналоговым пинам ардуины нано?
Можно. A1-A5 работают и как цифровые тоже.