Определенные значения не отображаются при использовании цифровой клавиатуры
Я подключил к Arduino Leonardo клавиатуру 3х4 в качестве метода ввода. Всякий раз, когда я нажимаю кнопки, большинство клавиш работают, а некоторые нет. Вот мой код, я настроил его на звуковой сигнал пьезозуммера при нажатии клавиши.
#include <Keypad.h>
int buzzerPin = 0;
const byte ROWS = 4; //четыре строки
const byte COLS = 3; //три столбца
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {12, 13, 8, 10}; //подключаемся к выводам строк клавиатуры
byte colPins[COLS] = {11, 7, 9}; //подключаемся к выводам колонки клавиатуры
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
pinMode(buzzerPin, OUTPUT); //Устанавливаем buzzerPin в качестве вывода
keypad.addEventListener(keypadEvent); //Добавляем прослушиватель событий для клавиатуры
}
void loop(){
char key = keypad.getKey();
}
void keypadEvent(KeypadEvent eKey) {
// Когда будет нажата клавиатура, результаты появятся на последовательном мониторе.
switch (keypad.getState()) {
case PRESSED:
Serial.print("Enter: ");
Serial.println(eKey);
beep(10);
delay(10);
break;
}
}
void beep(unsigned char delayms) { //создание функции
tone(buzzerPin, 2000); //Установка вывода на высокий уровень
delay(delayms); //Задержка
noTone(buzzerPin); //Устанавливаем вывод на НИЗКИЙ уровень
delay(delayms); //Задержка
}
Я построил свои строки/столбцы на основе этой распиновки: https:// www.jaycar.com.au/12-key-numeric-keypad/p/SP0770, но позже я узнал, что некоторые столбцы пришлось поменять местами :P
Вот схема того, что происходит:
Клавиши красного цвета не работают.
Я бы не стал публиковать это на Stack Exchange, но это выглядит как странно специфичный шаблон, и что бы я ни менял, это не сработало.
(И да, это именно та клавиатура, которую я купил у Jaycar)
Изменить: я забыл упомянуть, что использовал прототип экрана для подключения клавиатуры, но подтверждено, что все контакты работают над этим.
@Neonalig, 👍3
Обсуждение1 ответ
Лучший ответ:
Строка против строки не работает, или столбец против столбца.
Это значит, что этому есть логическое объяснение. Строка №2 заменена столбцом №2.
Кнопка 5 работает, потому что она все еще имеет строку напротив столбца (но наоборот).
- Невозможно использовать библиотеку клавиатуры с Arduino UNO даже после смены прошивки.
- TCCR1A и TCCR2A на Леонардо
- Не удается заставить клавиатуру использовать Keyboard.write на Arduino Uno
- Как использовать SPI на Arduino?
- Как получить исходные файлы для библиотек Arduino?
- Ошибка: "недопустимое использование нестатической функции-члена" при вызове функции из моего собственного класса-метода
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Существуют ли библиотеки сглаживания сигналов для Arduino?
Если используется либо строка №2, либо столбец №2, то это не работает, если не используются оба. Вы как-то поменяли местами/смешали строку №2 и столбец №2? В этом должна быть какая-то логика. Можете ли вы отключить клавиатуру и проверить каждую кнопку мультиметром? Пожалуйста, скажите, какие контакты arduino подключены к каким контактам клавиатуры., @Jot
Еще один вопрос: это дешевый клон платы? Потому что ряд № 2 подключен к выводу 13. Официальная arduino leonardo имеет дополнительную логическую микросхему, поэтому вывод 13 можно использовать как вход без проблем. Попробуйте использовать другой вывод для ряда № 2. Обновите свой вопрос, добавив дополнительную информацию., @Jot
Согласен с @Jot, строка № 2 поменяна местами со столбцом № 2. Попробуйте изменить код следующим образом: "byte rowPins[ROWS] = {12, 7, 8, 10}; //подключиться к выводам строки клавиатуры byte colPins[COLS] = {11, 13, 9}; //подключиться к выводам столбцов клавиатуры, чтобы посмотреть, может ли изменение кода устранить проблему., @st2000
вы уверены, что
5
действительно работает?, @jsotolaИтак, теперь я разобрался (спасибо вам, ребята), оказывается, что да, на самом деле строка 2 и столбец 2 были перепутаны местами. Я также забыл упомянуть, что это был прототип щита, в который я вставлял штырьки, но спасибо всем за быстрые и полезные ответы. Что касается того, чтобы отметить этот вопрос как отвеченный, я довольно новичок в этом... Мне просто процитировать одного из вас выше в моей кнопке ответа? Или мне нужен модератор или что-то в этом роде?, @Neonalig
Когда @Jot увидит это, он, скорее всего, опубликует свой ответ, и вы сможете выбрать его в качестве ответа., @linhartr22