ESP32 Tutorial 33/55 - Digitale Würfel mit dem ESP32 IoT Lernkit von SunFounder
In diesem Tutorial werden wir einen digitalen Würfel mit einem 7-Segment-Display und dem ESP32 aus dem IoT-Lernkit von SunFounder erstellen. Das Projekt ermöglicht es Ihnen, einen virtuellen Würfel zu werfen und Zahlen von 1 bis 6 mit einem Knopfdruck zu generieren. Dies ist eine großartige Möglichkeit, die Möglichkeiten des ESP32 zu erkunden und dabei etwas über die Ansteuerung von Displays und Tasten zu lernen. Für zusätzliche Klarheit sollten Sie sich das Video (im Video bei :00) ansehen.
Hardware erklärt
Die Hauptkomponenten für dieses Projekt umfassen den ESP32-Mikrocontroller, einen 74HC595-Schieberegister, ein Sieben-Segment-Display und einen Druckknopf. Der ESP32 ist ein leistungsstarker Mikrocontroller, der Wi-Fi und Bluetooth integriert und somit für IoT-Anwendungen geeignet ist. Das 74HC595-Schieberegister ermöglicht es uns, das Sieben-Segment-Display mit weniger Pins zu steuern als bei einer direkten Verbindung jeder einzelnen Segment.
Das Sieben-Segment-Display zeigt Zahlen an und wird gesteuert, indem Daten vom Schieberegister gesendet werden. Der Druckknopf wird verwendet, um den Würfelwurf auszulösen, wodurch eine Zufallszahl generiert wird, die angezeigt wird. Wenn der Knopf gedrückt wird, wird er mit Pin 13 des ESP32 verbunden, der über einen internen Pull-Up-Widerstand verfügt, um ihn im Zustand hoch zu halten, wenn er nicht gedrückt wird.
Datenblattdetails
| Hersteller | Texas Instruments |
|---|---|
| Teilenummer | 74HC595 |
| Logik/IO-Spannung | 2 V bis 6 V |
| Versorgspannung | 4,5 V bis 5,5 V |
| Ausgangsstrom (pro Kanal) | 6 mA max |
| Spitzenstrom (pro Kanal) | 35 mA maximal |
| PWM Frequenzrichtlinien | Nicht zutreffend |
| Eingangslogikschwellen | VIH≥ 2 V, VIL≤ 0,8 V |
| Spannungsabfall / RDS(on)/ Sättigung | 0,5 V max |
| Thermische Grenzen | 150 °C |
| Paket | DIP-16 |
| Hinweise / Varianten | Häufig in digitalen Anzeigen verwendet |
- Stellen Sie angemessene Spannungspegel (4,5 V bis 5,5 V) für einen zuverlässigen Betrieb sicher.
- Begrenzen Sie den Ausgangsstrom, um eine Beschädigung des Schieberegisters zu vermeiden.
- Verwenden Sie Entkopplungskondensatoren in der Nähe der Versorgungspins, um die Spannung zu stabilisieren.
- Schließen Sie das sieben-Segment-Display korrekt an, um eine fehlerhafte Darstellung der Zahlen zu vermeiden.
- Überprüfen Sie die Verdrahtung auf lose Verbindungen, die zu unerwartetem Verhalten führen können.
Verdrahtungsanweisungen

Um die digitalen Würfel zu verkabeln, beginnen Sie mit dem Einrichten der Stromanschlüsse. Verbinden Sie die Masse (blaue Leitung) auf Ihrem Breadboard mit dem Masse-Pin des ESP32 und stellen Sie sicher, dass alle Massepunkte miteinander verbunden sind. Verbinden Sie als Nächstes einen 3,3-V-Pin des ESP32 mit der Stromschiene (rote Leitung) auf dem Breadboard.
Für das 74HC595 Schieberegister stellen Sie sicher, dass Pin 1 mit der 3,3V-Schiene und Pin 8 mit dem Erdungspunkt verbunden ist. Verbinden Sie den Datenausgangspin (DS) mit Pin 25 auf dem ESP32, den Schiebepuls-Pin (SHCP) mit Pin 26 und den Speicheruhr-Pin (STCP) mit Pin 27. Der Druckknopf sollte zwischen Pin 13 auf dem ESP32 und Erdung angeschlossen werden, sodass er den Pin beim Drücken auf LOW zieht.
Codebeispiele & Anleitung
Im Code definieren wir zuerst die Pins, die für das Schieberegister und den Knopf verwendet werden. Der Knopfpin wird definiert alsbuttonPinund ist an Pin 13 des ESP32 angeschlossen. Das DatenarraydatArrayenthält die binären Darstellungen der Zahlen 0-9 für das Siebensegmentdisplay.
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
const int buttonPin = 13;
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
In dersetup()Funktion, wir setzen den Tastenpin in den Eingabemodus und die Pins des Schieberegisters in den Ausgabemodus. Dies bereitet die Pins vor, um Eingaben von der Taste zu lesen und Daten an das Display zu senden.
void setup ()
{
pinMode(buttonPin,INPUT);
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Die Hauptlogik des Programms befindet sich in derloop()Funktion. Sie prüft, ob der Knopf gedrückt wird, erzeugt eine Zufallszahl und ruft dieshow_number()Funktion zur Anzeige der Zahl auf dem Sieben-Segment-Display.
void loop()
{
if(digitalRead(buttonPin) == LOW)
{
int diceNumber = random(1, 7);
show_number(diceNumber);
delay(50);
}
}
Dasshow_number()Die Funktion sendet den entsprechenden Wert aus dem Datenarray an das Schieberegister, das dann die Segmente des Displays steuert, um die erzeugte Zahl anzuzeigen. Diese Funktion ist entscheidend für das visuelle Feedback, wenn die Taste gedrückt wird.
Demonstration / Was zu erwarten ist
Wenn das Setup abgeschlossen und der Code hochgeladen ist, wird durch Drücken des Knopfes eine Zufallszahl zwischen 1 und 6 erzeugt, die auf dem sieben Segment Anzeige angezeigt wird. Wenn alles korrekt angeschlossen ist, sollte die Anzeige jedes Mal eine Zahl zeigen, wenn der Knopf gedrückt wird. Achten Sie auf schwimmende Eingänge; stellen Sie sicher, dass der Knopf ordnungsgemäß mit der Erde verbunden ist, um unberechenbares Verhalten zu vermeiden (im Video bei 1:30).
Video-Zeitstempel
- 00:00 Start
- 1:48 Projekteinführung
- 3:40 Verdrahtung für digitale Würfel erklärt
- 13:16 Arduino-Code für digitale Würfel erklärt
- 19:19 Auswahl des ESP32-Boards und des COM-Ports in der Arduino IDE
- 21:00 Demonstration der digitalen Würfel
- 22:15 Arduino-Code korrigieren
Common Course Links
Common Course Files
Ressourcen & Referenzen
-
DokumentationESP32 Tutorial 33/55 - SunFounder Dokumentenseite für digitale Würfeldocs.sunfounder.com
Dateien📁
Keine Dateien verfügbar.