#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
char key_pressed;
void setup() {
// put your setup code here, to run once:
for (int i=2;i<6;i++) pinMode(i, INPUT_PULLUP);
for (int i=8;i<12;i++) pinMode(i, OUTPUT);
Serial.begin(9600);
Serial.println("Started");
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Keypad:");
}
void loop() {
// put your main code here, to run repeatedly:
key_pressed=0;
for (int i=8;i<12;i++) digitalWrite(i, HIGH);
digitalWrite(8, LOW);
if (digitalRead(2)==LOW) key_pressed='A';
else if (digitalRead(3)==LOW) key_pressed='B';
else if (digitalRead(4)==LOW) key_pressed='C';
else if (digitalRead(5)==LOW) key_pressed='D';
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
if (digitalRead(2)==LOW) key_pressed='3';
else if (digitalRead(3)==LOW) key_pressed='6';
else if (digitalRead(4)==LOW) key_pressed='9';
else if (digitalRead(5)==LOW) key_pressed='#';
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
if (digitalRead(2)==LOW) key_pressed='2';
else if (digitalRead(3)==LOW) key_pressed='5';
else if (digitalRead(4)==LOW) key_pressed='8';
else if (digitalRead(5)==LOW) key_pressed='0';
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
if (digitalRead(2)==LOW) key_pressed='1';
else if (digitalRead(3)==LOW) key_pressed='4';
else if (digitalRead(4)==LOW) key_pressed='7';
else if (digitalRead(5)==LOW) key_pressed='*';
digitalWrite(11, HIGH);
if (key_pressed!=0)
{
Serial.print("Key= ");
Serial.println(key_pressed);
lcd.setCursor(0,2);
lcd.print("Key: ");
lcd.setCursor(5, 2);
lcd.print(key_pressed);
}
}