/**
Arduino Keypad Manual
*/
#include <LiquidCrystal.h>
#include <Keypad.h>
/* Display */
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
/* Keypad setup */
#define KEYPAD_ROWS 4
#define KEYPAD_COLS 4
byte rowPins[KEYPAD_ROWS] = {5, 4, 3, 2};
byte colPins[KEYPAD_COLS] = {A3, A2, A1, A0};
char keys[KEYPAD_ROWS][KEYPAD_COLS] = {
{'1', '2', '3', '+'},
{'4', '5', '6', '-'},
{'7', '8', '9', '*'},
{'.', '0', '$', '/'}
};
void setup() {
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print ("Keypad Test");
for (int i = 0; i < KEYPAD_ROWS; i++)
{
pinMode (rowPins[i], OUTPUT);
digitalWrite(rowPins[i], HIGH);
}
for (int i = 0; i< KEYPAD_COLS; i++)
{
pinMode (colPins[i], INPUT_PULLUP);
}
}
char getKey ()
{
for (int i = 0; i < KEYPAD_ROWS; i++)
{
digitalWrite(rowPins[i], LOW);
for (int j = 0; j < KEYPAD_COLS; j++)
{
if (digitalRead(colPins[j])== LOW)
{
digitalWrite(rowPins[i], HIGH);
return keys [i][j];
}
}
digitalWrite(rowPins[i], HIGH);
}
return 0;
}
void loop() {
char key = getKey();
if (key)
{
lcd.setCursor(0, 1);
lcd.print (key);
}
}