Devices & Components
Arduino Uno Rev3
Jumper wires (generic)
Button Pad 4x4 - LED Compatible
Alphanumeric LCD, 16 x 2
Resistor 220 ohm
Project description
Code
Untitled file
arduino
1#include <Keypad.h> 2#include <LiquidCrystal.h> 3int Contrast = 120; 4LiquidCrystal lcd(A1, A2, 13, 12, 11, 10); 5 6const byte ROWS = 4; 7const byte COLS = 4; 8int expr[2]; 9int i=0; 10char op; 11 12void resetCalc() 13{ 14 Serial.println(); 15 i = 0; 16 lcd.clear(); 17 lcd.setCursor(0,0); 18} 19char hexaKeys[ROWS][COLS] = { 20 {'1', '2', '3', 'A'}, 21 {'4', '5', '6', 'B'}, 22 {'7', '8', '9', 'C'}, 23 {'*', '0', '#', 'D'} 24}; 25 26byte rowPins[ROWS] = {9, 8, 7, 6}; 27byte colPins[COLS] = {5, 4, 3, 2}; 28 29Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 30void setup(){ 31 Serial.begin(9600); 32 analogWrite(A0, Contrast); 33 lcd.begin(16, 2); 34 lcd.noCursor(); 35 lcd.setCursor(0,0); 36 Serial.println("Welcome to keypad Calculator"); 37 Serial.println("A = +, B = -, C = *, D = /"); 38 Serial.println("Press # to calculate"); 39 Serial.println("Press * to reset"); 40 Serial.println("NOTE: It works only on single digit numbers\ 41\ 42"); 43} 44 45void loop(){ 46 char key = customKeypad.getKey(); 47 if(key) 48 { 49 if(i == 0) 50 { 51 expr[0] = key-48; 52 Serial.print(expr[0]); 53 lcd.print(expr[0]); 54 i++; 55 } 56 else if(i == 1) 57 { 58 op = key; 59 i++; 60 if(op == 'A') 61 { 62 Serial.print(" + "); 63 lcd.print(" + "); 64 } 65 else if(op == 'B') 66 { 67 Serial.print(" - "); 68 lcd.print(" - "); 69 } 70 else if(op == 'C') 71 { 72 Serial.print(" * "); 73 lcd.print(" * "); 74 } 75 else if(op == 'D') 76 { 77 Serial.print(" / "); 78 lcd.print(" / "); 79 } 80 else 81 { 82 Serial.println("Syntax error"); 83 lcd.print(" Syntax error "); 84 resetCalc(); 85 } 86 87 } 88 else if(i == 2) 89 { 90 expr[1] = key-48; 91 Serial.print(expr[1]); 92 lcd.print(expr[1]); 93 Serial.print(" = "); 94 lcd.print(" = "); 95 if(op == 'A') 96 { 97 Serial.println(expr[0] + expr[1]); 98 lcd.print(expr[0] + expr[1]); 99 } 100 else if(op == 'B') 101 { 102 Serial.println(expr[0] - expr[1]); 103 lcd.print(expr[0] - expr[1]); 104 } 105 else if(op == 'C') 106 { 107 Serial.println(expr[0] * expr[1]); 108 lcd.print(expr[0] * expr[1]); 109 } 110 else if(op == 'D') 111 { 112 Serial.println(expr[0] / expr[1]); 113 lcd.print(expr[0] / expr[1]); 114 } 115 116 i++; 117 } 118 else if(key == '*' || i == 3) 119 { 120 resetCalc(); 121 } 122 } 123}
Downloadable files
Circuit Diagram
Circuit Diagram
Schematic Diagram
Schematic Diagram
Circuit Diagram
Circuit Diagram
Schematic Diagram
Schematic Diagram
Comments
Only logged in users can leave comments