|
- /* @file EventSerialKeypad.pde
- || @version 1.0
- || @author Alexander Brevig
- || @contact alexanderbrevig@gmail.com
- ||
- || @description
- || | Demonstrates using the KeypadEvent.
- || #
- */
- #include <Keypad.h>
-
- const byte ROWS = 4; //four rows
- const byte COLS = 3; //three columns
- char keys[ROWS][COLS] = {
- {'1','2','3'},
- {'4','5','6'},
- {'7','8','9'},
- {'*','0','#'}
- };
-
- byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
- byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad
-
- Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
- byte ledPin = 13;
-
- boolean blink = false;
- boolean ledPin_state;
-
- void setup(){
- Serial.begin(9600);
- pinMode(ledPin, OUTPUT); // Sets the digital pin as output.
- digitalWrite(ledPin, HIGH); // Turn the LED on.
- ledPin_state = digitalRead(ledPin); // Store initial LED state. HIGH when LED is on.
- keypad.addEventListener(keypadEvent); // Add an event listener for this keypad
- }
-
- void loop(){
- char key = keypad.getKey();
-
- if (key) {
- Serial.println(key);
- }
- if (blink){
- digitalWrite(ledPin,!digitalRead(ledPin)); // Change the ledPin from Hi2Lo or Lo2Hi.
- delay(100);
- }
- }
-
- // Taking care of some special events.
- void keypadEvent(KeypadEvent key){
- switch (keypad.getState()){
- case PRESSED:
- if (key == '#') {
- digitalWrite(ledPin,!digitalRead(ledPin));
- ledPin_state = digitalRead(ledPin); // Remember LED state, lit or unlit.
- }
- break;
-
- case RELEASED:
- if (key == '*') {
- digitalWrite(ledPin,ledPin_state); // Restore LED state from before it started blinking.
- blink = false;
- }
- break;
-
- case HOLD:
- if (key == '*') {
- blink = true; // Blink the LED when holding the * key.
- }
- break;
- }
- }
|