да Код (C++): #include <Keypad.h> #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) const byte ROWS = 4; const byte COLS = 3; char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte rowPins[ROWS] = {5, 4, 3, 2}; byte colPins[COLS] = {8, 7, 6}; byte mainMenuPage = 1; byte mainMenuPageOld = 1; byte mainMenuTotal = 4; char btn_push, key; float t; int keypad_value_old = 0; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup() { lcd.begin(16,2); MainMenuDisplay(); delay(1000); } void loop() { btn_push = ReadKeypad(); MainMenuBtn(); if(btn_push == 'S') { WaitBtnRelease(); switch (mainMenuPage) { case 1: MenuA(); break; case 2: MenuB(); break; case 3: MenuC(); break; case 4: MenuD(); break; } MainMenuDisplay(); WaitBtnRelease(); } delay(10); } void MenuA() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Inside Menu A"); while(1) { key=keypad.getKey(); if(key == '*') { t = 0; lcd.clear(); } if (key >= '0' && key <= '9') { t=t*10+(key-'0'); lcd.setCursor(0,0); lcd.print(t); } if (key == '#' && t !=0) { float y=t; lcd.clear(); lcd.print(y); } } while(ReadKeypad()!= 'L') { } } void MenuB() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Inside Menu B"); while(ReadKeypad()!= 'L') { } } void MenuC() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Inside Menu C"); while(ReadKeypad()!= 'L') { } } void MenuD() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Inside Menu D"); while(ReadKeypad()!= 'L') { } } void MainMenuDisplay() { lcd.clear(); lcd.setCursor(0,0); switch (mainMenuPage) { case 1: lcd.print("1. Menu A"); break; case 2: lcd.print("2. Menu B"); break; case 3: lcd.print("3. Menu C"); break; case 4: lcd.print("4. Menu D"); break; } } void MainMenuBtn() { WaitBtnRelease(); if(btn_push == 'U') { mainMenuPage--; if(mainMenuPage == 0) mainMenuPage = mainMenuTotal; } else if(btn_push == 'D') { mainMenuPage++; if(mainMenuPage > mainMenuTotal) mainMenuPage = 1; } if(mainMenuPage != mainMenuPageOld) { MainMenuDisplay(); mainMenuPageOld = mainMenuPage; } } char ReadKeypad() { char keypad_value = keypad.getKey(); if(keypad_value == keys[1][2]) return 'R'; else if(keypad_value == keys[0][1]) return 'U'; else if(keypad_value == keys[2][1]) return 'D'; else if(keypad_value == keys[3][0]) return 'L'; else if(keypad_value == keys[3][2]) return 'S'; else return 'N'; } void WaitBtnRelease() { while(keypad.getKey() != NO_KEY) { } }
посмотрите как здесь реализовано. сам не разбирался, задачи не было, просто на заметку взял. http://sydor.weebly.com/arduino-and-download-sketches.html