#include <Keypad.h>
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] ={
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
uint8_t colPins[COLS] = {A2, A3, A4, A5};
uint8_t rowPins[ROWS] = {5, 4, 3, 2};
Keypad keypad =Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
int disp_pin[7]; /* array for a-g pins of 7-Segment display */
void define_segment_pins(int a, int b, int c, int d, int e, int f, int g) /* Assigns 7-segment display pins to board */
{
disp_pin[0] = 7;
disp_pin[1] = 8;
disp_pin[2] = 9;
disp_pin[3] = 10;
disp_pin[4] = 11;
disp_pin[5] = 12;
disp_pin[6] = 13;
}
void display_number(int num) /* Function for displaying number (0-9) */
{
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
define_segment_pins(13, 12, 11, 10, 9, 8, 7); /* a-g segment pins to Arduino */
switch(num)
{
case 0:
digitalWrite(disp_pin[0], HIGH); /* Drive disp_pin[0] to LOW */
digitalWrite(disp_pin[1], HIGH);
digitalWrite(disp_pin[2], HIGH);
digitalWrite(disp_pin[3], HIGH);
digitalWrite(disp_pin[4], HIGH);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], LOW);
break;
case 1:
digitalWrite(disp_pin[0], HIGH); /* Drive disp_pin[0] to HIGH */
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], HIGH);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], LOW);
break;
case 2:
digitalWrite(disp_pin[0], HIGH);
digitalWrite(disp_pin[1], HIGH);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], HIGH);
digitalWrite(disp_pin[4], HIGH);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], HIGH);
break;
case 3:
digitalWrite(disp_pin[0], HIGH);
digitalWrite(disp_pin[1], HIGH);
digitalWrite(disp_pin[2], HIGH);
digitalWrite(disp_pin[3], HIGH);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], HIGH);
break;
case 4:
digitalWrite(disp_pin[0], HIGH);
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], HIGH);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], HIGH);
break;
case 5:
digitalWrite(disp_pin[0], LOW);
digitalWrite(disp_pin[1], HIGH);
digitalWrite(disp_pin[2], HIGH);
digitalWrite(disp_pin[3], HIGH);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], HIGH);
break;
case 6:
digitalWrite(disp_pin[0], LOW);
digitalWrite(disp_pin[1], HIGH);
digitalWrite(disp_pin[2], HIGH);
digitalWrite(disp_pin[3], HIGH);
digitalWrite(disp_pin[4], HIGH);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], HIGH);
break;
case 7:
digitalWrite(disp_pin[0], HIGH);
digitalWrite(disp_pin[1], HIGH);
digitalWrite(disp_pin[2], HIGH);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], LOW);
break;
case 8:
digitalWrite(disp_pin[0], HIGH);
digitalWrite(disp_pin[1], HIGH);
digitalWrite(disp_pin[2], HIGH);
digitalWrite(disp_pin[3], HIGH);
digitalWrite(disp_pin[4], HIGH);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], HIGH);
break;
case 9:
digitalWrite(disp_pin[0], HIGH);
digitalWrite(disp_pin[1], HIGH);
digitalWrite(disp_pin[2], HIGH);
digitalWrite(disp_pin[3], HIGH);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], HIGH);
break;
default:
digitalWrite(disp_pin[0], HIGH);
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], LOW);
break;
case 10:
digitalWrite(disp_pin[0], LOW);
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], LOW);
break;
}
}
void loop() {
// put your main code here, to run repeatedly:
char key = keypad.getKey();
if (key != NO_KEY)
{
Serial.println(key);
}
int i;
if (key == ('1'))
for (i = 1; i >= 1; i--)
display_number(i);
if (key == ('2'))
for (i = 2; i >= 2; i--)
display_number(i);
if (key == ('3'))
for (i = 3; i >= 3; i--)
display_number(i);
if (key == ('4'))
for (i = 4; i >= 4; i--)
display_number(i);
if (key == ('5'))
for (i = 5; i >= 5; i--)
display_number(i);
if (key == ('6'))
for (i = 6; i >= 6; i--)
display_number(i);
if (key == ('7'))
for (i = 7; i >= 7; i--)
display_number(i);
if (key == ('8'))
for (i = 8; i >= 8; i--)
display_number(i);
if (key == ('9'))
for (i = 9; i >= 9; i--)
display_number(i);
if (key == ('0'))
for (i = 0; i >= 0; i--)
display_number(i);
if (key == ('#'))
for (i = 10; i >= 10; i--)
display_number(i);
//for (i = 9; i >= 0; i--)
//{
// display_number(i);
//delay(1000);
//}
}