Библиотека клавиатуры не работает или я где-то ошибаюсь

Я использую PICSimLab для моделирования клавиатуры. Конфигурация клавиатуры показана на рисунке:

и код:

#include <LiquidCrystal.h>
#include <Key.h>
#include <Keypad.h>

const byte rows = 4; // 4 строки
const byte columns = 3; // 3 столбца
char keys[rows][columns] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
}; // раскладка клавиатуры

byte rowPins[rows] = {3, 2, 1, 0};
byte columnPins[columns] = {6, 5, 4}; // настройка контактов подключения

Keypad kp = Keypad(makeKeymap(keys), rowPins, columnPins, rows, columns); // настройка клавиатуры

const int d4 = 7, d5 = 8, d6 = 9, d7 = 10, en = 11, rs = 12; // настройка контактов ЖК-дисплея
LiquidCrystal myLcd(rs, en, d4, d5, d6, d7); // настройка ЖК-дисплея

void setup() {
  myLcd.begin(16,2);
  myLcd.print("Last name:Smith");
  myLcd.clear();
  myLcd.print("AM:1396");
  myLcd.setCursor(0,1);
  myLcd.print("ENTER VOL:");
}

void insertVol() {
  int i = 0;
  while (i < 4) {
    char key = kp.getKey();
    while(key) {
      myLcd.setCursor(i+11,1);
      myLcd.print(key);
    }
    i++;
  }
}

void loop() {
}

Цель состоит в том, чтобы отобразить несколько строк на ЖК-дисплее, затем ввести 4-значный пароль и отобразить каждую цифру пароля на кристалле ЖК-дисплея.

Я вижу эту картинку, и она правильная:

Но когда я нажимаю любую кнопку на клавиатуре, она не отображается на экране. Хочу прокомментировать еще кое-что: длина строки "ENTER VOL" составляет 10 символов, поэтому при распечатке пароля мы начинаем с позиции 11,1 на ЖК-экране.

Я пробовал подключать L1 -> 0 , L2 -> 1 , L3 -> 2 , L3 -> 3 и C1 -> 4 , C2 -> 5 , C3 -> 6 на случай, если это имеет значение, но все равно ничего. Библиотека сломана или я ошибаюсь? Я пробовал использовать Keypad до этого проекта и столкнулся с теми же проблемами. Помощь признательна.

, 👍0

Обсуждение

как вы решали эту проблему раньше?, @jsotola

На самом деле, это препятствие, которое я не могу преодолеть, поэтому я спрашиваю, знает ли кто-нибудь об этом., @ElectronicsBeginner


1 ответ


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

1

Ваша функция loop() пуста. Добавьте к ней эти две строки:

insertVol();
delay(500);

чтобы вызвать функцию insertVol()

,