удержание кнопки Keypad
- Войдите на сайт для отправки комментариев
Ср, 14/03/2018 - 20:49
#include <Keypad.h> #include <LiquidCrystal.h> LiquidCrystal lcd(14,15,16,17,18,19); long num1,num2 ; double total; char operation,button; const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','+'}, {'4','5','6','-'}, {'7','8','9','*'}, {'C','0','=','/'} }; byte rowPins[ROWS] = {9,8,7,6}; byte colPins[COLS] = {5,4,3,2}; Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); void setup() { lcd.begin(16,2); Serial.begin(9600); } void loop() { while(1) { button = customKeypad.getKey(); if (button=='C') { num1=0; num2=0; total=0; operation=0; lcd.clear(); } if (button >='0' && button <='9') { num1 = num1*10 + (button -'0'); lcd.setCursor(0,0); lcd.print(num1); } if (num1 !=0 && (button=='-' || button=='+' || button=='*' || button=='/')) { operation = button; lcd.setCursor(0,1); lcd.print(operation); break; } } while(1) { if (button =='C') break; button = customKeypad.getKey(); if (button=='C') { num1=0; num2=0; total=0; operation=0; lcd.clear(); break; } if (button >='0' && button <='9') { num2 = num2*10 + (button -'0'); lcd.setCursor(1,1); lcd.print(num2); } if (button == '=' && num2 !=0) { domath(); break; } } while(1) { if (button =='C') break; button = customKeypad.getKey(); if (button =='C') { lcd.clear(); lcd.setCursor(0,0); num1=0; num2=0; total=0; operation=0; break; } } } void domath() { switch(operation) { case '+': total = num1+num2; break; case '-': total = num1-num2; break; case '/': total = (float)num1/(float)num2; break; case '*': total = num1*num2; break; } lcd.setCursor(0,1); lcd.print('='); lcd.setCursor(1,1); lcd.print(total); }
как ето реализовиать
одиночное нажатие на кнопку «удалить»(C) должно удалять один символ;
удержание кнопки в течение двух секунд должно очищать экран;
удержание кнопки «0» должно выводить на дисплей точку, для работы с
десятичными дробями;
не могу понять как в коде задать удержания клавиш
В этом коде - никак. Вы здесь берёте уже готовые клавиши, а Вам надо обрабатывать события "нажатие" и "отпускание".