Keypad
The library keypad.cpp contains a small mistake. It is probably left over code from when it was using a 2D array. I emailed him even if it is only a few extra cycles. It would be my first contribution to "open source".
version 1.8
author Mark Stanley, Alexander Brevig
contact mstanley@technologist.com, alexanderbrevig@gmail.com
/* @file EventSerialKeypad.pde || @version 1.0 || @author Alexander Brevig || @contact alexanderbrevig@gmail.com || || @description || | Demonstrates using the KeypadEvent. || # */ #include const byte ROWS = 4; //four rows const byte COLS = 3; //four columns char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte rowPins[ROWS] = {15,13,19,17}; //connect to the row pinouts of the keypad byte colPins[COLS] = {16,14,18}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); byte pin_speaker = 9; unsigned long temp = 0; void setup(){ Serial.begin(9600); keypad.addEventListener(keypadEvent); //add an event listener for this keypad keypad.setDebounceTime(50); } void loop(){ char key = keypad.getKey(); if (key != NO_KEY) { //Serial.println(key); } } //take care of some special events void keypadEvent(KeypadEvent key){ switch (keypad.getState()){ case PRESSED: switch (key){ case '#': Serial.print("Value: "); Serial.println(temp); temp = 0; tone(pin_speaker, 587, 20); break; case '*': tone(pin_speaker, 698, 20); break; default: tone(pin_speaker, 440, 20); temp = (temp * 10) + key - 48; } break; case HOLD: switch (key){ case '*': break; } tone(pin_speaker, 880, 200); break; } } void Keypad::initializePins(){ for (byte r=0; r for (byte c=0; c pinMode(columnPins[c],OUTPUT); digitalWrite(columnPins[c],HIGH); } //configure row pin modes and states pinMode(rowPins[r],INPUT); digitalWrite(rowPins[r],HIGH); } } void Keypad::initializePins(){ //configure row & column pin modes and turn on internal pull up resistors for (byte r=0; r pinMode(rowPins[r],INPUT); digitalWrite(rowPins[r],HIGH); } for (byte c=0; c pinMode(columnPins[c],OUTPUT); digitalWrite(columnPins[c],HIGH); } }
created: Dec. 1, 2013, 1:01 a.m.
modified: April 14, 2019, 12:53 a.m.