ESP32 Tutoriaal 33/55 - Digitale Dobbelsteen met behulp van SunFounder se ESP32 IoT-leerkit
In hierdie tutoriaal gaan ons 'n digitale dobbelsteen skep deur gebruik te maak van 'n sewe-segment vertoning en die ESP32 van SunFounder se IoT-leerkit. Die projek sal jou toelaat om 'n virtuele dobbelsteen te rol, wat getalle van 1 tot 6 genereer met die druk van 'n knoppie. Dit is 'n wonderlike manier om die vermoëns van die ESP32 te verken terwyl jy leer oor koppelvlakke met vertonings en knoppies. Vir addisionele duidelikheid, maak seker om die video te kyk by (in video by 0:00).
Hardeware Verduidelik
Die hoofkomponente vir hierdie projek sluit die ESP32-mikrobeheerder, 'n 74HC595-skuifregister, 'n sewe-segment vertoning en 'n drukknoppie in. Die ESP32 is 'n kragtige mikrobeheerder wat Wi-Fi en Bluetooth integreer, wat dit geskik maak vir IoT-toepassings. Die 74HC595-skuifregister stel ons in staat om die sewe-segment vertoning te beheer met minder penne as om elke segment direk te koppel.
Die sewe-segment vertoning wys getalle en word beheer deur data vanaf die skuifregister te stuur. Die drukknoppie word gebruik om die dobbelsteenrol te aktiveer, wat 'n ewekansige getal genereer wat vertoon sal word. Wanneer dit gedruk word, verbind die knoppie aan pen 13 op die ESP32, wat 'n interne optrekweerstand het om dit in 'n hoë toestand te hou wanneer dit nie gedruk word nie.
Datablad Besonderhede
| Vervaardiger | Texas Instruments |
|---|---|
| Deelnommer | 74HC595 |
| Logika/IO-spanning | 2 V tot 6 V |
| Toevoerspanning | 4.5 V tot 5.5 V |
| Uitsetstroom (per kanaal) | 6 mA maks |
| Piekstroom (per kanaal) | 35 mA maks |
| PWM-frekwensie riglyne | Nie van toepassing nie |
| Inset logika drempels | VIH ≥ 2 V, VIL ≤ 0.8 V |
| Spanningval / RDS(on) / versadiging | 0.5 V maks |
| Termiese limiete | 150 °C |
| Pakket | DIP-16 |
| Notas / variante | Algemeen gebruik in digitale vertonings |
- Verseker behoorlike spanningsvlakke (4.5 V tot 5.5 V) vir betroubare werking.
- Beperk uitsetstroom om skade aan die skuifregister te vermy.
- Gebruik ontkoppelingskapasitors naby die kragpenne om spanning te stabiliseer.
- Koppel die sewe-segment vertoning korrek om wanvoorstelling van getalle te vermy.
- Kontroleer bedrading vir los verbindings wat tot onverwagte gedrag kan lei.
Bedradingsinstruksies

Om die digitale dobbelsteen te bedraad, begin deur die kragverbindings op te stel. Koppel die grond (blou lyn) op jou broodbord aan die grondpen op die ESP32 en verseker dat alle grondpunte onderling verbind is. Koppel volgende 'n 3.3V-pen vanaf die ESP32 aan die kragrel (rooi lyn) op die broodbord.
Vir die 74HC595-skuifregister, verseker dat pen 1 aan die 3.3V-rel gekoppel is, en pen 8 aan grond. Koppel die data-uitsetpen (DS) aan pen 25 op die ESP32, die skuifklokpen (SHCP) aan pen 26, en die stoor-klokpen (STCP) aan pen 27. Die drukknoppie moet tussen pen 13 op die ESP32 en grond gekoppel word, wat dit toelaat om die pen laag te trek wanneer dit gedruk word.
Kode Voorbeelde & Deurloop
In die kode definieer ons eers die penne wat vir die skuifregister en die knoppie gebruik word. Die knoppiepen word gedefinieer as buttonPin en is ingestel op pen 13 op die ESP32. Die data-array datArray bevat die binêre voorstellings van die getalle 0-9 vir die sewe-segment vertoning.
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 die setup()-funksie stel ons die knoppiepen op insetmodus en die skuifregisterpenne op uitsetmodus. Dit berei die penne voor vir die lees van inset vanaf die knoppie en vir die stuur van data na die vertoning.
void setup ()
{
pinMode(buttonPin,INPUT);
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Die hoof logika van die program word in die loop()-funksie gevind. Dit kontroleer of die knoppie gedruk is, genereer 'n ewekansige getal, en roep die show_number()-funksie aan om die getal op die sewe-segment vertoning te wys.
void loop()
{
if(digitalRead(buttonPin) == LOW)
{
int diceNumber = random(1, 7);
show_number(diceNumber);
delay(50);
}
}
Die show_number()-funksie stuur die toepaslike waarde vanaf die data-array na die skuifregister, wat dan die segmente van die vertoning beheer om die gegenereerde getal te wys. Hierdie funksie is noodsaaklik vir visuele terugvoer wanneer die knoppie gedruk word.
Demonstrasie / Wat om te VerwAg
Wanneer die opstelling voltooi is en die kode opgelaai is, sal die druk van die knoppie 'n ewekansige nommer tussen 1 en 6 genereer, wat op die sewe-segment vertoning gewys sal word. As alles korrek bedraad is, behoort die vertoning elke keer 'n nommer te wys wanneer die knoppie gedruk word. Wees versigtig met drywende insette; maak seker dat die knoppie behoorlik aan grond gekoppel is om onvoorspelbare gedrag te vermy (in video by 1:30).
Video Tydstempels
- 00:00 Begin
- 1:48 Projekbekendstelling
- 3:40 Bedrading vir Digitale Dobbelsteen Verduidelik
- 13:16 Arduino-kode vir Digitale Dobbelsteen verduidelik
- 19:19 Kies ESP32-bord en COM-poort in Arduino IDE
- 21:00 Digitale Dobbelsteen demonstrasie
- 22:15 Regstelling van Arduino-kode
// Define the pins used for the 74hc595 and button
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
const int buttonPin = 13;
// Define an array of values to display numbers on a 7-segment display
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int buttonState = false;
void setup ()
{
// Set the button pin to input mode
pinMode(buttonPin,INPUT);
//Set pins to 74hc595
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
// Check if the button is pressed
if(digitalRead(buttonPin) == LOW)
{
// Generate a random number between 1 and 6
int diceNumber = random(1, 7);
// Display the number on the 7-segment display
show_number(diceNumber);
// Delay for 50 milliseconds
delay(50);
}
}
// Function to display a number on a 7-segment display
void show_number(int num)
{
// Ground ST_CP and hold low for as long as you are transmitting
digitalWrite(STcp, LOW);
// Send the data for the number to the shift register
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
// Pull the ST_CP to save the data
digitalWrite(STcp, HIGH);
}
Common Course Links
Common Course Files
Hulpbronne en verwysings
-
DokumentasieESP32 Tutorial 33/55- SunFounder doc page for digital dicedocs.sunfounder.com
Lêers📁
Geen lêers beskikbaar.