Tutoriel ESP32 33/55 - Dé numérique utilisant le kit d'apprentissage IoT ESP32 de SunFounder
Na boyekoli oyo, tokosala dési ya digital na kosalela display ya ba segments sambo mpe ESP32 oyo ewuti na kit ya SunFounder ya koyekola IoT. Projɛ oyo ekopesa yo nzela ya kobwaka dési ya virtuel, kobimisa ba nombres longwa na 1 kino na 6 ntango okonyata bouton. Oyo ezali nzela ya kitoko ya koyekola makoki ya ESP32 ntango ozali koyekola kosangisa ba displays mpe ba boutons. Mpo na bososoli ya koleka, tala vidéo na (na vidéo na 0:00).
Makambo ya Matériel
Ba composants ya liboso mpo na projɛ oyo ezali na microcontrôleur ESP32, registre ya décalage 74HC595, display ya ba segments sambo, mpe bouton ya kopusa. ESP32 ezali microcontrôleur ya makasi oyo esangisi Wi-Fi mpe Bluetooth, oyo esalaka ete ekoka mpo na ba applications ya IoT. Registre ya décalage 74HC595 esalaka ete tokoka kokamba display ya ba segments sambo na ba pins mingi te koleka kosangisa segment na segment.
Display ya ba segments sambo emonisaka ba nombres mpe ekambamaka na kotinda ba données longwa na registre ya décalage. Bouton ya kopusa esalelamaka mpo na kobandisa kobwaka dési, kobimisa nombre ya libaku oyo ekomonisama. Ntango epusami, bouton esangisaka na pin 13 na ESP32, oyo ezali na résistance ya kokatisa oyo ezali kati na kati mpo na kokeba ete ezala na état ya likolo ntango epusami te.
Biloko ya Datasheet
| Mosali | Texas Instruments |
|---|---|
| Numéro ya partie | 74HC595 |
| Tension ya logique/IO | 2 V kino 6 V |
| Tension ya alimentation | 4.5 V kino 5.5 V |
| Courant ya sortie (na canal) | 6 mA max |
| Courant ya pointe (na canal) | 35 mA max |
| Gidans ya fréquence PWM | Esengeli te |
| Ba seuils ya logique ya entrée | VIH ≥ 2 V, VIL ≤ 0.8 V |
| Chute ya tension / RDS(on) / saturation | 0.5 V max |
| Ba limites ya température | 150 °C |
| Paquet | DIP-16 |
| Ba notes / ba variantes | Esalelamaka mingi na ba displays ya numérique |
- Kokamba ete ba niveaux ya tension ezala ya malamu (4.5 V kino 5.5 V) mpo na fonctionnement ya semba.
- Kokitisa courant ya sortie mpo na kobatela registre ya décalage.
- Salela ba condensateurs ya découplage pembeni ya ba pins ya puissance mpo na kokitisa tension.
- Kosangisa display ya ba segments sambo na ndenge ya malamu mpo na kokima koyebisa ba nombres na ndenge ya mabe.
- Kotala ba connexions mpo na ba connexions ya semba te oyo ekoki komema na bizaleli ya kozanga.
Ba Instructions ya Câblage

Mpo na kosala câblage ya dési ya digital, banda na kosala ba connexions ya puissance. Sangisa terre (ligne ya bleu) na breadboard na pin ya terre na ESP32 mpe kokamba ete ba points nyonso ya terre esangisama. Na sima, sangisa pin ya 3.3V longwa na ESP32 na rail ya puissance (ligne ya motane) na breadboard.
Mpo na registre ya décalage 74HC595, kokamba ete pin 1 esangisama na rail ya 3.3V, mpe pin 8 na terre. Sangisa pin ya sortie ya données (DS) na pin 25 na ESP32, pin ya horloge ya décalage (SHCP) na pin 26, mpe pin ya horloge ya stockage (STCP) na pin 27. Bouton ya kopusa esengeli kosangisama kati na pin 13 na ESP32 mpe terre, mpo na kokitisa pin na état ya basi ntango epusami.
Ba Exemples ya Code & Explication
Na code, liboso tosengeli koyeba ba pins oyo esalelamaka mpo na registre ya décalage mpe bouton. Pin ya bouton ekomami buttonPin mpe esalelami na pin 13 na ESP32. Tableau ya données datArray ezali na ba représentations binaires ya ba nombres 0-9 mpo na display ya ba segments sambo.
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};
Na fonction setup(), tosengeli kotia pin ya bouton na mode ya entrée mpe ba pins ya registre ya décalage na mode ya sortie. Oyo esalelamaka mpo na kobongisa ba pins mpo na kotanga entrée longwa na bouton mpe mpo na kotinda données na display.
void setup ()
{
pinMode(buttonPin,INPUT);
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Logique ya liboso ya programme ezali na fonction loop(). Ezali kotala soki bouton epusami, kobimisa nombre ya libaku, mpe kobenga fonction show_number() mpo na komonisa nombre na display ya ba segments sambo.
void loop()
{
if(digitalRead(buttonPin) == LOW)
{
int diceNumber = random(1, 7);
show_number(diceNumber);
delay(50);
}
}
Fonction show_number() etindaka valeur ya malamu longwa na tableau ya données na registre ya décalage, oyo na sima ekambaka ba segments ya display mpo na komonisa nombre oyo ebimisami. Fonction oyo ezali ya ntina mingi mpo na réaction ya visual ntango bouton epusami.
Démonstration / Nini Okoki Kozela
Ntango bobongoli esili mpe code ekomi na yango, kobeta bouton yango ekobimisa motángo moko na kati ya 1 téé 6, oyo ekomonisama na display ya ba segments sambo. Soki nyonso esangisami malamu, display esengeli komonisa motángo moko na mokolo nyonso oyo bouton ebukami. Kozala na bokébi na ba entrées oyo ezangi kozala na valeur; sɔ́lɔ́kɔ́tɔ́ ete bouton esangisami malamu na mabele mpo na kokima makambo ya mabe (na vidéo na 1:30).
Biloko ya ntango na Vidéo
- 00:00 Ebandeli
- 1:48 Bolakisi ya projɛ
- 3:40 Bosangisi ya ba fils mpo na Digital Dice
- 13:16 Code ya Arduino mpo na Digital Dice
- 19:19 Kopona board ya ESP32 mpe port ya COM na Arduino IDE
- 21:00 Bomekoli ya Digital Dice
- 22:15 Kobongisa Code ya Arduino
// 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
Mokili na bisika
-
DokumentasiESP32 Tutorial 33/55- SunFounder doc page for digital dicedocs.sunfounder.com
Fichiers📁
Aucun fichier disponible.