Digitaler Würfel

Dieser Code ist darauf ausgelegt, einen rollenden Würfel mit einem 74HC595-Schieberegister und einer 7-Segment-Digitalanzeige zu simulieren. Die Würfelwurfsimulation wird durch direktes Schütteln des Neigungsschalters aktiviert. Bei dieser Aktion durchläuft die digitale Anzeige zufällige Zahlen zwischen 1 und 6, was das Rollen eines Würfels simuliert. Nach einer kurzen Pause stoppt die Anzeige und zeigt eine zufällige Zahl an, die das Ergebnis des Würfelwurfs darstellt.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Elite Explorer Kit

300+

Elite Explorer Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

Arduino Uno R4 WiFi

-

Steckbrett

BUY

Jumperkabel

BUY

Widerstand

BUY

Neigungsschalter

-

74HC595

BUY

7-Segment-Anzeige

BUY

Verkabelung

../_images/05_dice_bb.png

Schaltplan

../_images/05_digital_dice_schematic.png

Code

Bemerkung

  • Sie können die Datei 05_digital_dice.ino direkt unter dem Pfad elite-explorer-kit-main\fun_project\05_digital_dice öffnen.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

Wie funktioniert das?

Hier ist eine detaillierte Erklärung des Codes:

  1. Initialisierung von Variablen:

    dataPin, clockPin, latchPin: Pins für den 74HC595. buttonPin: Der digitale Pin, an den der Knopf angeschlossen ist. numbers[]: Ein Array, um die Kodierung zu speichern, die Zahlen 1 bis 6 auf einer gemeinsamen Anoden-Digitalröhre darstellt.

  2. Flüchtige Variablen:

    rolling: Dies ist eine flüchtige Variable, die angibt, ob der Würfel gerade rollt. Sie wird als flüchtig deklariert, da sie sowohl in der Interrupt-Service-Routine als auch im Hauptprogramm verwendet wird.

  3. setup():

    Setzen Sie die Modi für die relevanten Pins. Stellen Sie den Eingangsmodus für den Knopf unter Verwendung des internen Pull-Up-Widerstands ein. Weisen Sie dem Knopf einen Interrupt zu, der die Funktion rollDice aufruft, wenn sich der Zustand des Knopfes ändert.

  4. loop():

    Es wird überprüft, ob rolling wahr ist. Wenn ja, wird weiterhin eine zufällige Zahl zwischen 1 und 6 angezeigt. Wenn der Knopf länger als 500 Millisekunden gedrückt wurde, stoppt das Rollen.

  5. rollDice():

    Dies ist die Interrupt-Service-Routine für den Knopf. Es wird überprüft, ob der Knopf gedrückt ist (niedriges Niveau). Wenn ja, wird die aktuelle Zeit aufgezeichnet und das Rollen beginnt.

  6. displayNumber():

    Diese Funktion zeigt eine Zahl auf der Digitalröhre an. Sie sendet die Zahl über den 74HC595-Schieberegister an die Digitalröhre.