ESP32 Tutorial 33/55 - Digitale Würfel mit dem ESP32 IoT Lernkit von SunFounder

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.

ESP32-33_digital-dice-haupt

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

ESP32-33_digital-dice-wiring

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.

ESP32-33_digital-würfel-schematische Darstellung

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.

74HC595 LED-Anzeige: Sieben-Segment erklärt
74HC595 LED-Anzeige: Sieben-Segment erklärt

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

Bilder

74HC595 LED-Anzeige: Sieben-Segment erklärt
74HC595 LED-Anzeige: Sieben-Segment erklärt
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-main
ESP32-33_digital-dice-main
ESP32-33_digital-dice-schematic
ESP32-33_digital-dice-schematic
834-ESP32 Tutorial 33/55- Arduino code for digital dice
Sprache: C++
Kopiert!

Ressourcen & Referenzen

Dateien📁

Keine Dateien verfügbar.