Нажатие кнопки и матричная клавиатура

Тема в разделе "Arduino & Shields", создана пользователем volk, 21 июн 2017.

  1. volk

    volk Нуб

    Всем привет.

    Есть библиотеки
    Код (C++):
    #include <Key.h>
    #include <Keypad.h>
    Можно ли сделать так что бы, при нажатии на любую кнопку, на матричной клавиатуре, выполнялся цикл.
    Например нажали 1, в цикле выполняется инкремент на 1, отпустили кнопку - ни чего не происходит.
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    можно.
     
  3. volk

    volk Нуб

    А как не подскажите?
    Испилил весь мозг себе уже.
     
  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    где ваш код?
     
  5. volk

    volk Нуб

    Код (C++):
    char key = keypad.getKey();  
    // пока нажата 1, увеличиваем переменную  
    if(key == '1')
            {          
              i++;
             delay();
            }
    // любая другая кнопка, кроме 1, то уменьшаем
      if(key && key != '1')
            {        
              i--;
             delay(100);
            }
     
    Если нажму 1, то условие выполнится 1 раз. А мне нужно, что бы выполнялось, пока не отпущу кнопку.
    С обычной кнопкой так работает, с матричной - понять не могу.
     
  6. Tomasina

    Tomasina Сушитель лампочек Модератор

    примерно так:
    Код (C++):

    #include <Key.h>
    #include <Keypad.h>
    int i;

    void setup()
    {
      keypad.setHoldTime(100);
      keypad.setDebounceTime(20);
    }

    void loop()
    {
      сhar key = keypad.getKey();
      // пока нажата 1, увеличиваем переменную
      if (key == '1')
      {
        while (keypad.getState() == HOLD) // возможно надо PRESSED вместо HOLD
        {
          i++;
        }
      }
      // любая другая кнопка, кроме 1, то уменьшаем
      if (key && key != '1')
      {
        while (keypad.getState() == HOLD)
        {
          i--;
        }
      }
    }
    У меня нет этой библиотеки, поэтому что-то в инициализации мог пропустить.
     
    volk нравится это.
  7. volk

    volk Нуб

    Спасибо добрый человек! Буду пробовать, отпишусь вечером о результатах.
     
  8. volk

    volk Нуб

    Не получается так...:(