Помогите с выводом букв на дисплей через нажатие кнопки

Daniil1497
Offline
Зарегистрирован: 06.11.2016

Нужно написать скетч на клавиатуре 3х3. 7 кнопок для алфавита, 1 для ввода и одна "backspace". Пытался написать хотя бы для одной кнопки, но всплывает слишком мног

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Bounce.h>

 Bounce bouncer = Bounce(2, 40);
LiquidCrystal_I2C lcd(0x27,16,2);
unsigned long elapsedTime = 0;
unsigned int previousMillis = 0;
static int lastPressedKey = -1;
static int counter = 0;
String printedText();
int cursorPosition = 0;
void setup()
{
  lcd.init();                                      
  lcd.backlight();
 }
 void loop()
 {
  static int counter = 0;
  //static isSecondPress = false;
  unsigned long currentMillis = millis();
  if ((currentMillis - previousMillis) > 1500)
  {
    counter = 0;
  }
      if (bouncer.update()) 
      {
        if (bouncer.read()==0)
        {
          switch (counter)
          {
          case 0 : 
              lcd.print("A");
              break;
          case 1:
               lcd.clear();
              lcd.print("B");
              break;
          case 2:
              lcd.clear();
              lcd.print("C");
              break;
          case 3:
              //lcd.clear();
              counter = -1;  
              break;  
          }
          counter++;
          previousMillis = millis();
        }
      }
 }

о подводных камней. Помогите пожалуйста!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Daniil1497, во-первых  вы должны уяснить что обработка кнопки и обработка клавиатуры принципиально отличаются. Во-вторых должны определить какие события с клавиатуры надо снимать, а какие игнорировать. В третих как эти события будете обрабатывать. Ведь глупо создавать в обработчике клавиатуры анализатор событий и потом тупо его не испльзовать.

Ваша процедура (функция или как назовете) должна генерировать 0, если ни одна клавиша не нажата. 1,2,3,...,9 если клавишу только что нажали , а до этого была клавиша не нажата. Ну и наконец 10 (можете выбрать любое другое) код ошибки. Это если нажато больше 1 клавиши, если уже отправлялся код клавиши, но клавиша все еще нажата. Вот на основе этого и пишите свой код.