#include <Keypad.h>
#define R1 23
#define R2 25
#define R3 27
#define R4 29
#define C1 31
#define C2 33
#define C3 35
#define C4 37
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 keypadRowPins[ROWS]= {R1, R2, R3, R4}; // row pins connected to Arduino
byte keypadColPins[COLS]= {C1,C2, C3, C4}; // column pins connected to Arduino
Keypad keypad = Keypad(makeKeymap(keys), keypadRowPins, keypadColPins, ROWS, COLS);
const int buzzerPin = 47;
// BCD IC A (ones digit)
const int bcdA_A = 22;
const int bcdA_B = 24;
const int bcdA_C = 26;
const int bcdA_D = 28;
// BCD IC B (tens digit)
const int bcdB_A = 30;
const int bcdB_B = 32;
const int bcdB_C = 34;
const int bcdB_D = 36;
// BCD IC C (hundreds digit)
const int bcdC_A = 39;
const int bcdC_B = 45;
const int bcdC_C = 43;
const int bcdC_D = 41;
// BCD IC D (thousands digit)
const int bcdD_A = 46;
const int bcdD_B = 48;
const int bcdD_C = 50;
const int bcdD_D = 52;
// Button pins
const int startStopButtonPin = 10;
const int countUpButtonPin = 11;
const int countDownButtonPin = 12;
int counterValue = 0; // stores counter value from 0 - 9999
void setup() {
Serial.begin(9600);
pinMode(buzzerPin, OUTPUT);
// Set pin modes for BCD ICs
for (int pin = bcdA_A; pin <= bcdD_D; ++pin) {
pinMode(pin, OUTPUT);
}
counterValue = 0000;
}
void loop() {
char key = keypad.getKey();
if (key !=NO_KEY) {
Serial.println(key);
tone(buzzerPin, 1500, 100);
}
}
void displayDigit(int digit, int digitA, int digitB, int digitC, int digitD) {
switch (digit) {
case 0:
digitalWrite(digitA, LOW);
digitalWrite(digitB, LOW);
digitalWrite(digitC, LOW);
digitalWrite(digitD, LOW);
break;
case 1:
digitalWrite(digitA, HIGH);
digitalWrite(digitB, LOW);
digitalWrite(digitC, LOW);
digitalWrite(digitD, LOW);
break;
case 2:
digitalWrite(digitA, LOW);
digitalWrite(digitB, HIGH);
digitalWrite(digitC, LOW);
digitalWrite(digitD, LOW);
break;
case 3:
digitalWrite(digitA, HIGH);
digitalWrite(digitB, HIGH);
digitalWrite(digitC, LOW);
digitalWrite(digitD, LOW);
break;
case 4:
digitalWrite(digitA, LOW);
digitalWrite(digitB, LOW);
digitalWrite(digitC, HIGH);
digitalWrite(digitD, LOW);
break;
case 5:
digitalWrite(digitA, HIGH);
digitalWrite(digitB, LOW);
digitalWrite(digitC, HIGH);
digitalWrite(digitD, LOW);
break;
case 6:
digitalWrite(digitA, LOW);
digitalWrite(digitB, HIGH);
digitalWrite(digitC, HIGH);
digitalWrite(digitD, LOW);
break;
case 7:
digitalWrite(digitA, HIGH);
digitalWrite(digitB, HIGH);
digitalWrite(digitC, HIGH);
digitalWrite(digitD, LOW);
break;
case 8:
digitalWrite(digitA, LOW);
digitalWrite(digitB, LOW);
digitalWrite(digitC, LOW);
digitalWrite(digitD, HIGH);
break;
case 9:
digitalWrite(digitA, HIGH);
digitalWrite(digitB, LOW);
digitalWrite(digitC, LOW);
digitalWrite(digitD, HIGH);
break;
}
}