#include <Keypad.h>
const uint8_t ROWS = 4;
const uint8_t COLS = 3;
#define segment_a A1
#define segment_b A2
#define segment_c A3
#define segment_d 9
#define segment_e 10
#define segment_f 11
#define segment_g 12
#define dot_p 13
byte one[] = {segment_b, segment_c};
byte two[] = {segment_a, segment_b, segment_d, segment_e, segment_g};
byte three[] = {segment_a, segment_b, segment_c, segment_d, segment_g};
byte four[] = {segment_b, segment_c, segment_f, segment_g};
byte five[] = {segment_a, segment_c, segment_d, segment_f, segment_g};
byte six[] = {segment_a, segment_c, segment_d, segment_e, segment_f, segment_g};
byte seven[] = {segment_a, segment_b, segment_c};
byte eight[] = {segment_a, segment_b, segment_c, segment_d, segment_e, segment_f, segment_g};
byte nine[] = {segment_a, segment_b, segment_c, segment_d, segment_f, segment_g};
byte null[] = {segment_a, segment_b, segment_c, segment_d, segment_e, segment_f};
char keys[ROWS][COLS] = {
{ '1', '2', '3' },
{ '4', '5', '6' },
{ '7', '8', '9' },
{ '*', '0', '#' }
};
uint8_t colpins[COLS] = { 4, 3, 2};
uint8_t rowpins[ROWS] = { 8, 7, 6, 5};
Keypad keypad = Keypad(makeKeymap(keys), rowpins, colpins, ROWS, COLS);
byte segments[] = {segment_a, segment_b, segment_c, segment_d, segment_e, segment_f, segment_g, dot_p};
void setup() {
for (int i = 0; i < sizeof(segments); i++) {
pinMode(segments[i], OUTPUT);
}
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey();
if (key == '1') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
for (int i = 0; i < sizeof(one); i++) {
digitalWrite(one[i], HIGH);
}
}
else if (key == '2') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
for (int i = 0; i < sizeof(two); i++) {
digitalWrite(two[i], HIGH);
}
}
else if (key == '3') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
for (int i = 0; i < sizeof(three); i++) {
digitalWrite(three[i], HIGH);
}
}
else if (key == '4') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
for (int i = 0; i < sizeof(four); i++) {
digitalWrite(four[i], HIGH);
}
}
else if (key == '5') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
for (int i = 0; i < sizeof(five); i++) {
digitalWrite(five[i], HIGH);
}
}
else if (key == '6') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
for (int i = 0; i < sizeof(six); i++) {
digitalWrite(six[i], HIGH);
}
}
else if (key == '7') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
for (int i = 0; i < sizeof(seven); i++) {
digitalWrite(seven[i], HIGH);
}
}
else if (key == '8') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
for (int i = 0; i < sizeof(eight); i++) {
digitalWrite(eight[i], HIGH);
}
}
else if (key == '9') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
for (int i = 0; i < sizeof(nine); i++) {
digitalWrite(nine[i], HIGH);
}
}
else if (key == '0') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
for (int i = 0; i < sizeof(null); i++) {
digitalWrite(null[i], HIGH);
}
}
else if (key == '*') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
delay(100);
digitalWrite(dot_p, HIGH);
}
else if (key == '#') {
for (int i = 0; i < sizeof(segments); i++) {
digitalWrite(segments[i], LOW);
}
}
}