#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
byte colPins[COLS] = { 10, 11, 12, A4 }; //column pins
byte rowPins[ROWS] = { 2, 4, 7, 8 }; //row pins
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
unsigned long currentTime = millis();
static unsigned long startTime = currentTime;
static int period;
static char currentCase;
char key = keypad.getKey();
if (key)
{
Serial.println(key);
currentCase = key;
startTime = currentTime;
}
switch (currentCase)
{
case '1': //fast blink
period = 200;
if (currentTime - startTime >= period)
{
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
startTime = currentTime;
}
break;
case '2': //slow blink
period = 1000;
if (currentTime - startTime >= period)
{
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
startTime = currentTime;
}
break;
case '3': //stop blinking
digitalWrite(LED_BUILTIN, LOW);
break;
}
}