// Define the Arduino pins connected to the 7-segment display
const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8};
// Define the pin connected to the button
const int buttonPin = 9;
// Variables to store the state of the button and counter
int counter = 0;
int buttonState = 0;
int lastButtonState = 0;
void setup() {
// Set segment pins as outputs
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// Set button pin as input with internal pull-up resistor
pinMode(buttonPin, INPUT_PULLUP);
// Display the initial digit 0
displayDigit(counter);
}
void loop() {
// Read the state of the button
buttonState = digitalRead(buttonPin);
// Check for a button press (transition from HIGH to LOW)
if (buttonState == LOW && lastButtonState == HIGH) {
delay(50); // Debounce delay
if (digitalRead(buttonPin) == LOW) { // Check if the button is still pressed
counter++;
if (counter > 9) {
counter = 0;
}
displayDigit(counter);
}
}
// Save the current button state
lastButtonState = buttonState;
}
// Function to display a digit on the 7-segment display
void displayDigit(int digit) {
// Turn off all segments
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], LOW);
}
// Turn on segments based on the digit
switch (digit) {
case 0:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], HIGH);
break;
case 1:
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
break;
case 2:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
case 3:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
case 4:
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
case 5:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
case 6:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
case 7:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
break;
case 8:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
case 9:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
}
}