Работа с кнопками и библиотекой keypad.h
- Войдите на сайт для отправки комментариев
Пнд, 06/06/2016 - 13:58
Доброго дня!
Есть ли возможность в этой библиотеке организовать следующее:
Есть много кнопок. при нажатии на кнопку идет отправка на сервер номер кнопки. все подключено.
схема кнопок

при нажатии и отпускании одной кнопки все норм.
при нажатии и отпускании одновременно двух и более кнопок тоже норм.
Теперь нажимаем одну кнопку и удерживаем, по этой кнопке все норм отправка происходит, но удерживая ее и нажимая следующие кнопки результат плачевный, отправка следующих кнопок не происходит.
Есть ли решение.
Вот скетч там закомментировано отправка на сервер, но в мониторе все видно.
//#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);
}
}