// Slot Machine Program
// Constants
int button = 12; // Button pin
int buttonState = 0; // Button state
int latchedPattern1 = B00000000;
int latchedPattern2 = B00000000;
int latchedPattern3 = B00000000;
int patterns[] = {
B01111110, // 0
B00001100, // 1
B10110110, // 2
B10011110, // 3
B11001100, // 4
B11011010, // 5
B11111010, // 6
B00001110, // 7
B11111110, // 8
B11011110, // 9
B10000000 // Wild
};
int randomPattern1[3]; // Array to hold three random numbers
int randomPattern2[3];
int randomPattern3[3];
void generateRandomNumbers1() {
for (int j = 0; j <=1; j++) {
buttonState = digitalRead(button);
if (buttonState == HIGH) {
return;
}
// Generate random numbers between 0 and 10
randomPattern1[j] = random(0, 11);
randomPattern2[j] = random(0, 11);
randomPattern3[j] = random(0, 11);
PORTD = patterns[randomPattern1[j]];
PORTB = B00000110;
delay(500);
PORTB = B00001110;
delay(500);
PORTD = patterns[randomPattern2[j]];
PORTB = B00001010;
delay(500);
PORTB = B00001110;
delay(500);
PORTD = patterns[randomPattern3[j]];
PORTB = B00001100;
latchedPattern1 = patterns[randomPattern1[j]];
latchedPattern2 = patterns[randomPattern2[j]];
latchedPattern3 = patterns[randomPattern3[j]];
}
}
void setup() {
pinMode(button, INPUT_PULLUP);
DDRD = B11111110;
DDRB = B00001110;
}
void loop() {
static bool buttonHeld = false; // Flag to track button hold state
// Read button state
buttonState = digitalRead(button);
// Check if button is pressed (LOW) and not already held
if (buttonState == LOW && !buttonHeld) {
buttonHeld = true; // Set flag to indicate button is held
}
// Check if button is released (HIGH) and was previously held
if (buttonState == HIGH && buttonHeld) {
buttonHeld = false; // Reset flag when button is released
// Display 8 on all digits
PORTD = latchedPattern1; // Set all data pins on PORTD to high for "8"
PORTB = B00000110; // Adjust PORTB settings as needed for digit control
delay(10);
PORTB = B11111111;
PORTD = latchedPattern2; // Set all data pins on PORTD to high for "8"
PORTB = B00001010;
delay(10);
PORTB = B11111111;
PORTD = latchedPattern3; // Set all data pins on PORTD to high for "8"
PORTB = B00001100;
}
// Only run generateRandomNumbers1() when button is held
if (buttonHeld) {
generateRandomNumbers1();
}
}