// Define pins for 7-segment display (common anode)
int segA = 2;
int segB = 3;
int segC = 4;
int segD = 5;
int segE = 6;
int segF = 7;
int segG = 8;
// Define pins for buttons
int buttonIncrement = 9;
int buttonDecrement = 10;
// Variables to hold the current count and button states
int count = 0;
int lastButtonStateIncrement = HIGH;
int lastButtonStateDecrement = HIGH;
// Segment patterns for digits 0-9
const int digits[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
void setup() {
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(buttonIncrement, INPUT_PULLUP);
pinMode(buttonDecrement, INPUT_PULLUP);
displayDigit(count);
}
void loop() {
int currentButtonStateIncrement = digitalRead(buttonIncrement);
int currentButtonStateDecrement = digitalRead(buttonDecrement);
if (currentButtonStateIncrement == LOW && lastButtonStateIncrement == HIGH) {
count = (count + 1) % 10;
displayDigit(count);
delay(200);
}
if (currentButtonStateDecrement == LOW && lastButtonStateDecrement == HIGH) {
count = (count - 1 + 10) % 10;
displayDigit(count);
delay(200);
}
lastButtonStateIncrement = currentButtonStateIncrement;
lastButtonStateDecrement = currentButtonStateDecrement;
}
void displayDigit(int digit) {
digitalWrite(segA, digits[digit][0]);
digitalWrite(segB, digits[digit][1]);
digitalWrite(segC, digits[digit][2]);
digitalWrite(segD, digits[digit][3]);
digitalWrite(segE, digits[digit][4]);
digitalWrite(segF, digits[digit][5]);
digitalWrite(segG, digits[digit][6]);
}