// Define the pins for each segment
int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
int buttonPin = 10; // Define the pin for the push button
int randomNumber; // Declare randomNumber here
boolean buttonState = false; // Stores the state of the button
boolean buttonPressed = false; // Tracks if the button is pressed
void setup() {
// Set segment pins as OUTPUT
for (int i = 0; i < 10; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// Set button pin as INPUT
pinMode(buttonPin, INPUT);
// Seed the random number generator
randomSeed(analogRead(0));
}
void loop() {
// Check if the button is pressed
if (digitalRead(buttonPin) == HIGH && !buttonPressed) {
buttonPressed = true;
// Generate a random number between 0 and 9
randomNumber = random(10);
// Cycle through numbers 0-9 randomly
for (int i = 0; i < 10; i++) {
displayNumber(i % 10); // Display numbers 0-9 cyclically
delay(75); // Adjust the delay time for cycling speed
}
// Display the randomly chosen number
displayNumber(randomNumber);
} else if (digitalRead(buttonPin) == LOW && buttonPressed) {
buttonPressed = false;
}
}
// Display a number on the seven-segment display
void displayNumber(int num) {
// Define the segments for each digit (0 to 9)
int segments[][7] = {
{1, 1, 1, 1, 1, 1, 0}, // digit 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
};
// Display the segments for the given digit
for (int i = 0; i < 10; i++) {
digitalWrite(segmentPins[i], segments[num][i]);
}
}