ESP32 Оқулық 33/55 - Сандық сүйек SunFounder ESP32 IoT оқу жинағын қолдану
Бұл оқулықта біз SunFounder компаниясының IoT оқу жинағынан жеті сегментті дисплей мен ESP32 көмегімен цифрлық сүйек жасаймыз. Жоба сізге виртуалды сүйекті лақтыруға мүмкіндік береді, батырманы басқан кезде 1-ден 6-ға дейінгі сандарды шығарады. Бұл ESP32 мүмкіндіктерін зерттеудің тамаша тәсілі, сонымен қатар дисплейлер мен батырмалармен жұмыс істеуді үйренуге көмектеседі. Қосымша түсініктілік үшін (0:00-дегі) бейнені міндетті түрде қараңыз.
Аппараттық құрал түсіндірмесі
Бұл жобаның негізгі компоненттеріне ESP32 микроконтроллері, 74HC595 ауыстыру регистрі, жеті сегментті дисплей және батырма кіреді. ESP32 - бұл Wi-Fi және Bluetooth біріктіретін қуатты микроконтроллер, оны IoT қолданбаларына қолайлы етеді. 74HC595 ауыстыру регистрі бізге жеті сегментті дисплейді әр сегментті тікелей қосудан гөрі аз түйреуіштерді пайдаланып басқаруға мүмкіндік береді.
Жеті сегментті дисплей сандарды көрсетеді және ауыстыру регистрінен деректер жіберу арқылы басқарылады. Батырма сүйек лақтыруды іске қосу үшін қолданылады, көрсетілетін кездейсоқ санды шығарады. Батырма басылғанда, ол ESP32-дегі 13 түйреуішке қосылады, оның ішкі тарту резисторы бар, ол басылмаған кезде оны жоғары күйде ұстайды.
Деректер парағының мәліметтері
| Өндіруші | Texas Instruments |
|---|---|
| Бөлшек нөмірі | 74HC595 |
| Логика/IO кернеуі | 2 В - 6 В |
| Қоректендіру кернеуі | 4.5 В - 5.5 В |
| Шығыс тогы (арна үшін) | макс. 6 мА |
| Шың тогы (арна үшін) | макс. 35 мА |
| ШИМ жиілігі бойынша нұсқау | Қолданылмайды |
| Кіріс логикалық шектері | VIH ≥ 2 В, VIL ≤ 0.8 В |
| Кернеу төмендеуі / RDS(on) / қанығу | макс. 0.5 В |
| Жылулық шектер | 150 °C |
| Қаптама | DIP-16 |
| Ескертулер / нұсқалар | Цифрлық дисплейлерде жиі қолданылады |
- Сенімді жұмыс үшін дұрыс кернеу деңгейлерін (4.5 В - 5.5 В) қамтамасыз етіңіз.
- Ауыстыру регистріне зақым келтірмеу үшін шығыс тогын шектеңіз.
- Кернеуді тұрақтандыру үшін қуат түйреуіштерінің жанында разрядтау конденсаторларын қолданыңыз.
- Сандардың қате көрсетілуін болдырмау үшін жеті сегментті дисплейді дұрыс қосыңыз.
- Күтпеген әрекетке әкелуі мүмкін бос қосылымдар үшін сымдарды тексеріңіз.
Сым қосу нұсқаулары

Цифрлық сүйекті қосу үшін қуат қосылымдарын орнатудан бастаңыз. Мақет тақтасындағы жер (көк сызық) сымын ESP32-дегі жер түйреуішіне қосыңыз және барлық жер нүктелерінің өзара қосылғанын қамтамасыз етіңіз. Әрі қарай, ESP32-ден 3.3В түйреуішті мақет тақтасындағы қуат шинасына (қызыл сызық) қосыңыз.
74HC595 ауыстыру регистрі үшін 1 түйреуіштің 3.3В шинасына, ал 8 түйреуіштің жерге қосылғанын қамтамасыз етіңіз. Деректер шығыс түйреуішін (DS) ESP32-дегі 25 түйреуішке, ауыстыру сағат түйреуішін (SHCP) 26 түйреуішке және сақтау сағат түйреуішін (STCP) 27 түйреуішке қосыңыз. Батырма ESP32-дегі 13 түйреуіш пен жер арасында қосылуы керек, ол басылғанда түйреуішті төмен тартады.
Код мысалдары және түсіндірме
Кодта біз алдымен ауыстыру регистрі мен батырма үшін қолданылатын түйреуіштерді анықтаймыз. Батырма түйреуіші buttonPin ретінде анықталады және ESP32-дегі 13 түйреуішке орнатылады. datArray деректер массиві жеті сегментті дисплей үшін 0-9 сандарының екілік көріністерін қамтиды.
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};
setup() функциясында біз батырма түйреуішін кіріс режиміне және ауыстыру регистрі түйреуіштерін шығыс режиміне орнатамыз. Бұл батырмадан кірісті оқуға және дисплейге деректер жіберуге түйреуіштерді дайындайды.
void setup ()
{
pinMode(buttonPin,INPUT);
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Бағдарламаның негізгі логикасы loop() функциясында орналасқан. Ол батырманың басылғанын тексереді, кездейсоқ санды шығарады және санды жеті сегментті дисплейде көрсету үшін show_number() функциясын шақырады.
void loop()
{
if(digitalRead(buttonPin) == LOW)
{
int diceNumber = random(1, 7);
show_number(diceNumber);
delay(50);
}
}
show_number() функциясы деректер массивінен сәйкес мәнді ауыстыру регистріне жібереді, ол содан кейін шығарылған санды көрсету үшін дисплей сегменттерін басқарады. Бұл функция батырма басылғанда визуалды кері байланыс үшін өте маңызды.
Демонстрация / Не күтуге болады
Орнату аяқталғанда және код жүктелгенде, түймені басу 1 мен 6 арасындағы кездейсоқ санды генерациялайды, ол жеті сегментті индикаторда көрсетіледі. Егер бәрі дұрыс жалғанған болса, индикатор әр түйме басылған сайын санды көрсетуі керек. Қалқымалы кірістерге абай болыңыз; түйменің жерге дұрыс жалғанғанына көз жеткізіңіз, әйтпесе тұрақсыз әрекет болуы мүмкін (бейнеде 1:30).
Бейне уақыт белгілері
- 00:00 Басталуы
- 1:48 Жобамен таныстыру
- 3:40 Сандық сүйекке арналған сымдарды түсіндіру
- 13:16 Сандық сүйекке арналған Arduino кодын түсіндіру
- 19:19 Arduino IDE-де ESP32 тақтасын және COM портын таңдау
- 21:00 Сандық сүйекті көрсету
- 22:15 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
Ресурстар мен сілтемелер
-
ҚұжаттамаESP32 Tutorial 33/55 - SunFounder doc page for digital dicedocs.sunfounder.com
Файлдар📁
Файлдар жоқ.