Работа с кнопками и библиотекой keypad.h

Нет ответов
korsianen
Offline
Зарегистрирован: 23.03.2013

Доброго дня!

Есть ли возможность в этой библиотеке организовать следующее:

Есть много кнопок. при нажатии на кнопку идет отправка на сервер номер кнопки. все подключено. 

схема кнопок

при нажатии и отпускании одной кнопки все норм.

при нажатии и отпускании одновременно двух и более кнопок тоже норм.

Теперь нажимаем одну кнопку и удерживаем, по этой кнопке все норм отправка происходит, но удерживая ее и нажимая следующие кнопки результат плачевный, отправка следующих кнопок не происходит.

Есть ли решение. 

Вот скетч там закомментировано отправка на сервер, но в мониторе все видно.

//#include <SPI.h>
//#include <Ethernet.h>
//#include <EthernetClient.h>
#include <Keypad.h>

const byte ROWS = 9;
const byte COLS = 10;
char hexaKeys[ROWS][COLS] = {
  {33,34,35,36,37,38,39,40,41,42},
  {43,44,45,46,47,48,49,50,51,52},
  {53,54,55,56,57,58,59,60,61,62},
  {63,64,65,66,67,68,69,70,71,72},
  {73,74,75,76,77,78,79,80,81,82},
  {83,84,85,86,87,88,89,90,91,92},
  {93,94,95,96,97,98,99,100,101,102},
  {103,104,105,106,107,108,109,110,111,112},
  {113,114,115,116,117,118,119,120,121,122}
};
byte rowPins[ROWS] = {22,24,26,28,30,32,34,36,38}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {23,25,27,29,31,33,35,37,39,41}; //connect to the column pinouts of the keypad

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

// MAC-адрес нашего устройства
//byte mac[] = { 0x00, 0x3A, 0xF1, 0x19, 0x69, 0xFC };
// ip-адрес устройства
//byte ip[] = { 192, 168, 0, 77 };
// ip-адрес удалённого сервера
//byte server[] = { x,x,x,x }; // измените на свой
//Client Eternetclient(server, 80); // 80-порт.
//EthernetClient client;
//byte isdata=0;
String msg;

void setup(){
//  Ethernet.begin(mac, ip);
  Serial.begin(9600);
  delay(5000);
  msg = "";
  Serial.println("poexali");
}
  
void loop(){
  if (customKeypad.getKey()){
    String zapros ="GET /testz/test.php?st=";
    Serial.println(LIST_MAX);
    for (int i=0; i<LIST_MAX; i++){
      if ( customKeypad.key[i].stateChanged ) {
        switch (customKeypad.key[i].kstate) {  // Report active key state : IDLE, PRESSED, HOLD, or RELEASED
          case PRESSED:
             msg = " PRESSED.";
          break;
          case HOLD:
             msg = " HOLD.";
          break;
          case RELEASED:
             msg = " RELEASED.";
          break;
          case IDLE:
             msg = " IDLE.";
        }
        Serial.print("Key ");
        Serial.print(customKeypad.key[i].kchar);
        Serial.println(msg);
        zapros = zapros+String(customKeypad.key[i].kchar-32)+",";
      }
    }
    zapros = zapros+" HTTP/1.0";
//    if (client.connect(server, 80)) {
//      Serial.println("connected");
//      client.println(zapros);
//      client.println("Host: x.ru"); // Указываем, какой конкретно host на данном ip нас интересует.
//      client.println();
//      client.stop(); // Завершаем соединение
//    } else {
//      Serial.println("connection failed");
//    }  
    Serial.println(zapros);
  }
}