//GIANLU8CA CIOCIAhttp://ciocia.altervista.org/ #include <Keypad.h> #include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 10, 11, 12, 13); const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','C'}, {'4','5','6','D'}, {'7','8','9','E'}, {'A','0','B','F'} }; byte rowPins[ROWS] = { 3, 2, 1, 0}; byte colPins[COLS] = { 7, 6, 5, 4}; Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); static float lvalue; static float rvalue; static char oper; static byte errcode; void setup() { lcd.begin(16,2); lcd.print("Calcolatrice 3.0"); lcd.setCursor(0,1); lcd.print("PaulettGiankard"); errcode = 0; } float do_calc (float num1, float num2, char a_oper) {if (errcode > 0) {return num1; } else switch (a_oper) { case 0: return num2; break; case 'C': return (num1 + num2); break; case 'D': return (num1 - num2); break; case 'E': return (num1 * num2); break; case 'F': if (num2 != 0) return (num1 / num2); else {errcode = 1; return 0;} break;}} void print_result(float valore) { lcd.clear(); if (errcode > 0) lcd.print("ERRORE"); else lcd.print(valore); } void loop() { lvalue = 0; rvalue = 0; oper = 'C'; for (;;) { char key = keypad.getKey(); if (key == 0) { } else if ((key >= 'C') && (key <= 'F')) { lvalue = do_calc(lvalue, rvalue, oper); print_result(lvalue); rvalue = 0; oper = key; } else if (key == 'B') { lvalue = do_calc(lvalue, rvalue, oper); print_result(lvalue); rvalue = 0; oper = 'C'; } else if (key == 'A') { lcd.clear(); lvalue = 0; rvalue = 0; errcode = 0; oper = 'C'; print_result(rvalue); } else { int number = key - 48; //qui andrebbe un controllo per evitare che l'utente //inserisca un numero eccessivo di cifre... rvalue = rvalue * 10 + number; print_result(rvalue); } } }
martedì 5 febbraio 2013
CALCOLATRICE
dal sito di GianLuca Ciocia.
Iscriviti a:
Commenti sul post (Atom)
MOLTO BELLA E FUNZIONALE CONGRATULAZIONI, HO MODIFICATO IL DISPLAY CON SCHEDA I2C E 20 CARATTERI SU 2 LINEE
RispondiEliminaa me da risultati a caso
RispondiEliminapotresti postare i collegamenti che hai fatto tra il keypad arduino e lcd, per piacere
RispondiEliminaTi chiedo scusa ma la passione per arduino mi è passata da molto tempo.
RispondiElimina