#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <Dictionary.h>
/// ------------------------------
Dictionary &d = *(new Dictionary(6));
/// ------------------------------
const byte ROWS = 3; //four rows
const byte COLS = 5; //three columns
char keys[ROWS][COLS] = {
{'a','b','c','d','e'},
{'f','g','g','h','i'},
{'a','b','c','d','e'}
};
byte rowPins[ROWS] = {11, 10, 12}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {9, 8, 7, 6, 5}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
byte ledPin = 12;
boolean blink = false;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup(){
d("a", "devices");
d("b", "********");
d("c", "http://ota.home.net");
d("d", "80");
d("e", "plumless value");
d("f", "buckeroo value");
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // sets the digital pin as output
digitalWrite(ledPin, HIGH); // sets the LED on
keypad.addEventListener(keypadEvent); //add an event listener for this keypad
lcd.init(); //initialize the lcd
lcd.backlight(); //open the backlight
lcd.setCursor(0, 0);
lcd.print("Hello World!");
Serial.println(d["url"]);
}
void loop(){
char key = keypad.getKey();
if (key) {
Serial.println(key);
}
if (blink){
digitalWrite(ledPin,!digitalRead(ledPin));
delay(100);
}
}
//take care of some special events
void keypadEvent(KeypadEvent key){
switch (keypad.getState()){
case PRESSED:
switch (key){
case '#': digitalWrite(ledPin,!digitalRead(ledPin)); break;
case '*':
digitalWrite(ledPin,!digitalRead(ledPin));
break;
default:
lcd.setCursor(0,0);
Serial.println(d[String(key)]);
lcd.print(d[String(key)]);
}
break;
case RELEASED:
switch (key){
case '*':
digitalWrite(ledPin,!digitalRead(ledPin));
//Serial.print(key); Serial.flush();
blink = false;
break;
}
break;
case HOLD:
switch (key){
case '*': blink = true; Serial.print(key); Serial.flush(); break;
//default:
//Serial.print(key);
//Serial.flush();
}
break;
}
}