#include <Keypad.h>
#include <LedControl.h>
int DIN_PIN = 2;
int CLK_PIN = 3;
int CS_PIN = 4;
const byte ROWS = 4; // Number of rows
const byte COLS = 4; // Number of columns
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {5, 6, 7, 8}; // Connect to row pins
byte colPins[COLS] = {9, 10, 11, 12}; // Connect to column pins
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
int inputValue = 0;
LedControl lc = LedControl(DIN_PIN, CLK_PIN, CS_PIN, 1); // 1 for single module
byte nine[] = {
B11111111,
B10000001,
B10000001,
B10000001,
B11111111,
B00000001,
B00000001,
B11111111
};
byte eight[] = {
B11111111,
B10000001,
B10000001,
B11111111,
B11111111,
B10000001,
B10000001,
B11111111
};
byte seven[] = {
B11111111,
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B00000001
};
byte six[] = {
B11111111,
B10000000,
B10000000,
B10000000,
B11111111,
B10000001,
B10000001,
B11111111
};
byte five[] = {
B11111111,
B10000000,
B10000000,
B10000000,
B11111111,
B00000001,
B00000001,
B11111111
};
byte four[] = {
B10000001 ,
B10000001,
B10000001,
B10000001,
B11111111,
B00000001,
B00000001,
B00000001
};
byte three[] = {
B11111111,
B00000001,
B00000001,
B00000001,
B11111111,
B00000001,
B00000001,
B11111111
};
byte two[] = {
B11111111,
B00000001,
B00000001,
B00000001,
B11111111,
B10000000,
B10000000,
B11111111
};
byte one[] = {
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B00000001
};
byte zero[] = {
B11111111,
B10000001,
B10000001,
B10000001,
B10000001,
B10000001,
B10000001,
B11111111
};
byte za[] = {
B00000000,
B00110000,
B01001000,
B01111000,
B01001000,
B01001000,
B00000000,
B00000000
};
byte zb[] = {
B00000000,
B01000000,
B01000000,
B01111000,
B01001000,
B01001000,
B01111000,
B00000000
};
byte zc[] = {
B00000000,
B01111000,
B01000000,
B01000000,
B01000000,
B01000000,
B01000000,
B01111000
};
byte zd[] = {
B00000000,
B01110000,
B01001000,
B01000100,
B01000100,
B01001000,
B01110000,
B00000000
};
byte ze[] = {
10010010,
01010100,
00111000,
11111110,
00111000,
01010100,
10010010,
00000000
};
byte zf[] = {
B0000000,
B0100100,
B1111110,
B0100100,
B0100100,
B1111110,
B0100100,
B0000000
};
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
}
void c9()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, nine[i]);
}
delay(1000);
}
void c8()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, eight[i]);
}
delay(1000);
}
void c7()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, seven[i]);
}
delay(1000);
}
void c6()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, six[i]);
}
}
void c5()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, five[i]);
}
}
void c4()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, four[i]);
}
}
void c3()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, three[i]);
}
}
void c2()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, two[i]);
}
}
void c1()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, one[i]);
}
}
void c0()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, zero[i]);
}
}
void ca()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, za[i]);
}
}
void cb()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, zb[i]);
}
}
void cd()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, zd[i]);
}
}
void ce()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, ze[i]);
}
}
void cf()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, zf[i]);
}
}
void cc()
{
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, zc[i]);
}
}
void loop() {
char key = keypad.getKey();
switch (key) {
case '1':
c1();
break;
case '2':
c2();
break;
case '3':
c3();
break;
case '4':
c4();
break;
case '5':
c5();
break;
case '6':
c6();
break;
case '7':
c7();
break;
case '8':
c8();
break;
case '9':
c9();
break;
case '0':
c0();
break;
case 'A':
ca();
break;
case 'B':
cb();
break;
case 'C':
cc();
break;
case 'D':
cd();
break;
case '*':
ce();
break;
case '#':
cf();
break;
}
delay(100);
}