Клавиатура 4x3 не обеспечивает никакого вывода, а вывод, который она обеспечивает, неверен

Я пытаюсь понять, как использовать клавиатуру 4x3, и просто хочу получать номера клавиш, которые я выбираю на последовательном мониторе. Проблема, которую я получаю, заключается в том, что некоторые из клавиш, которые я набираю, не дают мне никакого вывода, а затем клавиши, которые обеспечивают вывод, не соответствуют их соответствующему номеру. Например, клавиша 1 не дает никакого выхода, тогда как клавиши 3 и 4 дают выход 4 и 9 соответственно. Я прикрепил изображения того, как клавиатура подключена схема подключения

Код, который я использую, приведен ниже:

#include <Keypad.h>
 
// Константы для размеров строк и столбцов
const byte ROWS = 4;
const byte COLS = 3;
 
// Массив для представления клавиш на клавиатуре
char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};
 
// Подключения к Ардуино
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3};
 
// Создаем объект клавиатуры
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);}
}

Мне просто нужна помощь, чтобы определить, где я ошибаюсь и как я могу решить проблему, с которой столкнулся. Спасибо.

, 👍-1

Обсуждение

Твои картинки для меня бесполезны, опубликуй настоящую схему того, как у тебя это подключено. Я знаю из первых рук, что клавиатуры будут работать, если их правильно подключить к хорошему UNO. Не забудьте показать клавиатуру на схеме и правильно пометить строки и столбцы., @Gil

Эти контакты припаяны к клавиатуре? Соединение выглядит немного изворотливым на фото., @Nick Gammon

Привет, Гил, я включил схему, однако я смог найти только клавиатуру 4x4, поэтому просто игнорируйте подключение к контакту 2. Привет, Ник, да, они припаяны к клавиатуре., @Campbell White


1 ответ


Лучший ответ:

2

Я определил, где ошибся. Клавиатура имеет другую разводку по сравнению с традиционным способом. Я нашел эту эту статью полезной. В код внесены следующие изменения:

byte rowPins[ROWS] = {8, 3, 4, 6};
byte colPins[COLS] = {7, 9, 5};

Как видно, контакты строк и столбцов необходимо изменить.

Диаграмма, показывающая, какие соединения предназначены для строк, а какие для столбцов

,