#include <Keypad.h>
const uint8_t LEDS = 10;
const uint8_t ROWS = 4;
const uint8_t COLS = 3;
char keys[ROWS][COLS] = {
{ '1', '2', '3' },
{ '4', '5', '6' },
{ '7', '8', '9' },
{ '*', '0', '#' }
};
// Pins connected to LED1, LED2, LED3, ...LED12
uint8_t ledPins[LEDS] = { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2};
uint8_t rowPins[ROWS] = { 26, 22, 21, 20 }; // Pins connected to R1, R2, R3, R4
uint8_t colPins[COLS] = { 19, 18, 17 }; // Pins connected to C1, C2, C3, C4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
for (uint8_t l = 0; l < LEDS; l++) {
pinMode(ledPins[l], OUTPUT);
digitalWrite(ledPins[l], LOW);
}
}
void loop()
{
char key, Submenu;
key = keypad.getKey();
while(key != NO_KEY)
{
switch(key)
{
case '7':
Submenu = keypad.getKey();
if(Submenu != '8' || Submenu != '9')
{
switch(Submenu)
{
case '1':
digitalWrite(ledPins[0], HIGH);
delay(500);
digitalWrite(ledPins[0], LOW);
break;
case '2':
digitalWrite(ledPins[1], HIGH);
delay(500);
digitalWrite(ledPins[1], LOW);
break;
case '3':
digitalWrite(ledPins[2], HIGH);
delay(500);
digitalWrite(ledPins[2], HIGH);
break;
case '4':
digitalWrite(ledPins[3], HIGH);
delay(500);
digitalWrite(ledPins[3], LOW);
break;
default:
break;
}
}
else
key = Submenu;
break;
case '8':
Submenu = keypad.getKey();
if(Submenu != '7' || Submenu != '9')
{
switch(Submenu)
{
case '1':
digitalWrite(ledPins[4], HIGH);
delay(500);
digitalWrite(ledPins[4], LOW);
break;
case '2':
digitalWrite(ledPins[5], HIGH);
delay(500);
digitalWrite(ledPins[5], LOW);
break;
case '3':
digitalWrite(ledPins[6], HIGH);
delay(500);
digitalWrite(ledPins[6], HIGH);
break;
case '4':
digitalWrite(ledPins[7], HIGH);
delay(500);
digitalWrite(ledPins[7], LOW);
break;
default:
break;
}
}
else
key = Submenu;
break;
case '9':
Submenu = keypad.getKey();
if(Submenu != '7' || Submenu != '8')
{
switch(Submenu)
{
case '*':
digitalWrite(ledPins[8], HIGH);
digitalWrite(ledPins[9], LOW);
delay(500);
digitalWrite(ledPins[8], LOW);
break;
case '#':
digitalWrite(ledPins[8], LOW);
digitalWrite(ledPins[9], HIGH);
delay(500);
digitalWrite(ledPins[9], LOW);
break;
default:
break;
}
}
else
key = Submenu;
break;
default:
break;
}
}
}