Header Ads Widget

Responsive Advertisement

How to make digitel ludo dice

DOWNLOAD CODE

Code

#define BUTTON_PIN D9  // Push button connected to D9
#define LED_PINS {D0, D1, D2, D3, D4, D5, D6, D7, D8}  // LEDs connected to D0 to D8

int ledPins[] = LED_PINS;
int buttonState = 0;
int lastButtonState = 0;
unsigned long lastPressTime = 0;  // To track the last press time
const unsigned long debounceDelay = 3000;  // 3-second delay between button presses

// Function prototypes
void showWelcomeMessage();
void clearLEDs();
void playAnimation();
void rollDice();
void displayDice(int roll);

void setup() {
  // Initialize the LED pins as outputs
  for (int i = 0; i < 9; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  
  // Initialize the button pin as input
  pinMode(BUTTON_PIN, INPUT_PULLUP);  // Use pull-up resistor for the button

  // Show welcome message "Hello" on power-up
  showWelcomeMessage();
}

void loop() {
  // Read the button state
  buttonState = digitalRead(BUTTON_PIN);

  // Check if button is pressed and enough time has passed since last press
  if (buttonState == LOW && lastButtonState == HIGH && (millis() - lastPressTime) > debounceDelay) {
    // Button pressed, run the dice roll sequence with animation
    playAnimation();
    rollDice();
    lastPressTime = millis();  // Update the last press time
    delay(200);  // Debounce delay for button press
  }

  lastButtonState = buttonState;
}

void showWelcomeMessage() {
  // Display "H" using LEDs: D8, D3, D2, D6, D5, D0, D4
  clearLEDs();
  digitalWrite(D8, HIGH);
  digitalWrite(D3, HIGH);
  digitalWrite(D2, HIGH);
  digitalWrite(D6, HIGH);
  digitalWrite(D5, HIGH);
  digitalWrite(D0, HIGH);
  digitalWrite(D4, HIGH);
  delay(1000);  // Display "H" for 1000 ms
  clearLEDs();

  // Display "E" using LEDs: D8, D7, D6, D3, D4, D1, D2, D0
  digitalWrite(D8, HIGH);
  digitalWrite(D7, HIGH);
  digitalWrite(D6, HIGH);
  digitalWrite(D3, HIGH);
  digitalWrite(D4, HIGH);
  digitalWrite(D1, HIGH);
  digitalWrite(D2, HIGH);
  digitalWrite(D0, HIGH);
  delay(500);  // Display "E" for 500 ms
  clearLEDs();

  // Display "L" using LEDs: D0, D1, D2, D3, D8
  digitalWrite(D0, HIGH);
  digitalWrite(D1, HIGH);
  digitalWrite(D2, HIGH);
  digitalWrite(D3, HIGH);
  digitalWrite(D8, HIGH);
  delay(500);  // Display "L" for 500 ms
  clearLEDs();

  // Display "O" using LEDs: D0, D1, D2, D3, D5, D6, D7, D8
  digitalWrite(D0, HIGH);
  digitalWrite(D1, HIGH);
  digitalWrite(D2, HIGH);
  digitalWrite(D3, HIGH);
  digitalWrite(D5, HIGH);
  digitalWrite(D6, HIGH);
  digitalWrite(D7, HIGH);
  digitalWrite(D8, HIGH);
  delay(500);  // Display "O" for 500 ms
  clearLEDs();
}

void clearLEDs() {
  // Turn off all LEDs
  for (int i = 0; i < 9; i++) {
    digitalWrite(ledPins[i], LOW);
  }
}

void playAnimation() {
  // Simple animation before showing dice result
  for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 9; j++) {
      digitalWrite(ledPins[j], HIGH);
      delay(50);
      digitalWrite(ledPins[j], LOW);
    }
  }
}

void rollDice() {
  int roll = random(1, 7);  // Get a random number between 1 and 6
  displayDice(roll);
}

void displayDice(int roll) {
  clearLEDs();  // Clear LEDs before displaying the dice face

  // Display the dice number on the LEDs
  switch (roll) {
    case 1:
      digitalWrite(ledPins[4], HIGH);  // Center LED for 1
      break;
    case 2:
      digitalWrite(ledPins[2], HIGH);  // Top-left LED for 2
      digitalWrite(ledPins[6], HIGH);  // Bottom-right LED for 2
      break;
    case 3:
      digitalWrite(ledPins[2], HIGH);  // Top-left LED for 3
      digitalWrite(ledPins[4], HIGH);  // Center LED for 3
      digitalWrite(ledPins[6], HIGH);  // Bottom-right LED for 3
      break;
    case 4:
      digitalWrite(ledPins[2], HIGH);  // Top-left LED for 4
      digitalWrite(ledPins[6], HIGH);  // Bottom-right LED for 4
      digitalWrite(ledPins[0], HIGH);  // Top-right LED for 4
      digitalWrite(ledPins[8], HIGH);  // Bottom-left LED for 4
      break;
    case 5:
      digitalWrite(ledPins[2], HIGH);  // Top-left LED for 5
      digitalWrite(ledPins[6], HIGH);  // Bottom-right LED for 5
      digitalWrite(ledPins[4], HIGH);  // Center LED for 5
      digitalWrite(ledPins[0], HIGH);  // Top-right LED for 5
      digitalWrite(ledPins[8], HIGH);  // Bottom-left LED for 5
      break;
    case 6:
      digitalWrite(ledPins[0], HIGH);  // Top-right LED for 6
      digitalWrite(ledPins[2], HIGH);  // Top-left LED for 6
      digitalWrite(ledPins[6], HIGH);  // Bottom-right LED for 6
      digitalWrite(ledPins[8], HIGH);  // Bottom-left LED for 6
      digitalWrite(ledPins[1], HIGH);  // Middle-top LED for 6
      digitalWrite(ledPins[7], HIGH);  // Middle-bottom LED for 6
      break;
  }
}

Circuit diagram 👇🏻👇🏻👇🏻

Digital lodo dice


Post a Comment

0 Comments