int segmentA = 2;
int segmentB = 3;
int segmentC = 4;
int segmentD = 5;
int segmentE = 6;
int segmentF = 7;
int segmentG = 8;
int buttonPin = 12;
int digit = 0;
int buttonState = 0;
void setup() {
Serial.begin(9600);
pinMode(segmentA, OUTPUT);
pinMode(segmentB, OUTPUT);
pinMode(segmentC, OUTPUT);
pinMode(segmentD, OUTPUT);
pinMode(segmentE, OUTPUT);
pinMode(segmentF, OUTPUT);
pinMode(segmentG, OUTPUT);
pinMode(buttonPin, INPUT);
randomSeed(analogRead(0));
}
void loop() {
buttonState = digitalRead(buttonPin);
Serial.print("Button State: ");
Serial.println(buttonState);
if (buttonState == HIGH) {
// Loading sequence
unsigned long startTime = millis();
while (millis() - startTime < 1000) {
displayLoading();
delay(200);
}
// Cycle through numbers randomly before displaying the chosen number
for (int i = 0; i < 10; i++) {
int tempdigit = random(10);
digit = tempdigit;
displayNumber(digit);
delay(200); // Adjust the delay time for cycling speed
}
// Generate and display the randomly chosen number
int tempdigit = random(10);
digit = tempdigit;
Serial.print("Displayed Number: ");
Serial.println(digit);
displayNumber(digit);
delay(500); // Delay before accepting another button press
}
}
void displayLoading() {
// Outer segments loading animation
digitalWrite(segmentA, HIGH);
digitalWrite(segmentG, LOW);
delay(100);
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, HIGH);
delay(100);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, HIGH);
delay(100);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, HIGH);
delay(100);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, HIGH);
delay(100);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, HIGH);
delay(100);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, LOW);
delay(100);
}
void displayNumber(int num) {
switch (num) {
case 0:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, HIGH);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, LOW);
break;
case 1:
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, LOW);
break;
case 2:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, HIGH);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, HIGH);
break;
case 3:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, HIGH);
break;
case 4:
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, HIGH);
break;
case 5:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, HIGH);
break;
case 6:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, HIGH);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, HIGH);
break;
case 7:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, LOW);
break;
case 8:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, HIGH);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, HIGH);
break;
case 9:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, HIGH);
break;
}
}