Проблема в работе кода

Stepanov_ALEX
Offline
Зарегистрирован: 08.02.2020

Всем привет! Есть код, но он как то некорректно работает. Помогите плиз.

void keypada() {
  customKeypad.tick();
  if (customKeypad.available()) {
    keypadEvent e = customKeypad.read();
    if (e.bit.EVENT == KEY_JUST_PRESSED) {
      if (codent > 3) {
      } else {
        code[codent] = e.bit.KEY;
        codent++;
        Serial.print((char)code[0]);
        Serial.print((char)code[1]);
        Serial.print((char)code[2]);
        Serial.println((char)code[3]);
        if (codent == 4) {
          if (code[0] == '1') {
            if (code[1] == '2') {
              if (code[2] == '3') {
                if (code[3] == '4') {
                  Serial.println(F("Welcome, You have pass"));
                  Serial.println(F("---------------------------"));
                  granted();
                } else {
                  Serial.println(F("You don't have pass"));
                  Serial.println(F("---------------------------"));
                  denied();
                }
              } else {
                Serial.println(F("You don't have pass"));
                Serial.println(F("---------------------------"));
                denied();
              }
            } else {
              Serial.println(F("You don't have pass"));
              Serial.println(F("---------------------------"));
              denied();
            }
          } else {
            Serial.println(F("You don't have pass"));
            Serial.println(F("---------------------------"));
            denied();
          }
          codent = 0;
          code[0] = ' ';
          code[1] = ' ';
          code[2] = ' ';
          code[3] = ' ';
        }
      }
    }
  }
}

В серийный порт получаю:

23:22:23.198 -> *   
23:22:23.198 -> *#  
23:22:23.198 -> *#7 
23:22:23.232 -> *#78
23:22:23.232 -> You don't have pass
23:22:23.232 -> ---------------------------
23:22:23.267 -> 9   
23:22:23.267 -> 9#  
23:22:23.301 -> 9## 
23:22:23.301 -> 9##7
23:22:23.301 -> You don't have pass
23:22:23.336 -> ---------------------------
23:22:23.336 -> *   
23:22:23.371 -> *8  
23:22:23.371 -> *89 
23:22:23.371 -> *89#
23:22:23.371 -> You don't have pass
23:22:23.405 -> ---------------------------
23:22:23.440 -> 7   
23:22:23.440 -> 7*  
23:22:23.440 -> 7*8 
23:22:23.440 -> 7*89
23:22:23.440 -> You don't have pass
23:22:23.474 -> ---------------------------
23:22:23.508 -> #   
23:22:23.508 -> ##  
23:22:23.508 -> ### 
23:22:23.508 -> ###*
23:22:23.543 -> You don't have pass
23:22:23.543 -> ---------------------------
 
Что не так? Я ничего не нажимаю.
sadman41
Онлайн
Зарегистрирован: 19.10.2016

INPUT_PULLUP

Stepanov_ALEX
Offline
Зарегистрирован: 08.02.2020

Я ведь использую библиотеку... Там то используется не только input для кейпада

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Тогда резисторы паяй.

Stepanov_ALEX
Offline
Зарегистрирован: 08.02.2020

Кстати, я тут  в библиотеке нашёл 

void Adafruit_Keypad::begin()
{
    _keystates = (volatile byte *)malloc(_numRows * _numCols);
    memset((void *)_keystates, 0, _numRows * _numCols);

    for(int i=0; i<_numCols; i++){
        pinMode(_col[i], OUTPUT);
        digitalWrite(_col[i], HIGH);
    }

    for(int i=0; i<_numRows; i++){
        pinMode(_row[i], INPUT_PULLUP);
    }
}

 

Stepanov_ALEX
Offline
Зарегистрирован: 08.02.2020

ААААА я понял.... Я забыл написать в сетапе функцию Keypad.begin();

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Stepanov_ALEX пишет:

ААААА я понял.... Я забыл написать в сетапе функцию Keypad.begin();

Не только это. Заодно забыл

1. Выложить полный код.
2. Сказать что этот код должен делать
3. Сказать, что он реально делает
4. Сказать, чем отличается №2 от №3

Stepanov_ALEX
Offline
Зарегистрирован: 08.02.2020

я понял уже. первый мой вопрос на форуме) Сейчас всё работает.