int segmentPins[7] = {0, 18, 2, 19, 4, 5, 17}; // A, B, C, D, E, F, G pins
int countUpButton = 14; // Count up button pin
int countDownButton = 13; // Count down button pin
int ResetButton = 12; //Reset button
// Segment patterns for digits 0-9 (common cathode)
int digitPatterns[10][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0} // 9
};
int initial_state=0;
int currentNumber = 0;
bool initial_x=1;
bool current_x=0;
bool initial_y=1;
bool current_y=0;
bool initial_z=1;
bool current_z=0;
void setup() {
// Set pin modes
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
pinMode(countUpButton, INPUT_PULLUP);
pinMode(countDownButton, INPUT_PULLUP);
displayNumber(currentNumber);
}
void loop() {
current_x=digitalRead(countUpButton);
current_y=digitalRead(countDownButton);
current_z=digitalRead(ResetButton);
if (current_x==1&&initial_x==0){delay(50);initial_x=1;}
if (current_y==1&&initial_y==0){delay(50);initial_y=1;}
if (current_z==1&&initial_z==0){delay(50);initial_z=1;}
if (initial_x==1&¤t_x==0){
currentNumber++;
initial_x=0;
if (current_x==1&&initial_x==0){initial_x=1;}
if (currentNumber > 9) {
currentNumber = 0;
}
displayNumber(currentNumber);
delay(100); }
if (initial_y==1&¤t_y==0){
currentNumber--;
initial_y=0;
if (currentNumber < 0) {
currentNumber = 9;
}
displayNumber(currentNumber);
delay(100); }
if (initial_z==1&¤t_z==0){
currentNumber=0;
initial_z=0;
displayNumber(currentNumber);
}
}
void displayNumber(int num) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], HIGH);
}
// Display the digit on the 7-segment display
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], digitPatterns[num][i]);
}
}