Работа с кнопками и библиотекой 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); } }