آموزش ESP32 33/55 - تاس دیجیتال با استفاده از کیت یادگیری اینترنت اشیاء ESP32 سانفاندر
در این آموزش، ما یک تاس دیجیتال با استفاده از یک نمایشگر هفتقسمتی و ESP32 از کیت یادگیری اینترنت اشیاء SunFounder ایجاد خواهیم کرد. این پروژه به شما اجازه میدهد تا یک تاس مجازی بیندازید و با فشار یک دکمه، اعداد بین ۱ تا ۶ را تولید کنید. این روش عالی برای کاوش در قابلیتهای ESP32 است در حالی که با نحوه ارتباط با نمایشگرها و دکمهها آشنا میشوید. برای وضوح بیشتر، حتماً ویدیو را در (در ویدیو در ۰:۰۰) مشاهده کنید.
توضیحات سختافزار
اجزای اصلی این پروژه شامل میکروکنترلر ESP32، یک رجیستر شیفت 74HC595، یک نمایشگر هفتقسمتی و یک دکمه فشار است. ESP32 یک میکروکنترلر قدرتمند است که Wi-Fi و Bluetooth را ادغام میکند و آن را برای کاربردهای IoT مناسب میسازد. رجیستر شیفت 74HC595 به ما این امکان را میدهد که نمایشگر هفتقسمتی را با استفاده از پایههای کمتری نسبت به اتصال مستقیم هر قسمت کنترل کنیم.
نمایشگر هفتقطعهای اعداد را نشان میدهد و با ارسال داده از رجیستر شیفت کنترل میشود. دکمه فشاری برای فعالسازی پرتاب تاس استفاده میشود و یک عدد تصادفی تولید میکند که نمایش داده خواهد شد. هنگام فشرده شدن، دکمه به پایه ۱۳ روی ESP32 متصل میشود که دارای یک مقاومت داخلی بالابرنده است تا در حالت بالا باقی بماند وقتی که فشرده نشده است.
جزئیات برگه اطلاعات
| تولیدکننده | تگزاس اینسترومنتس |
|---|---|
| شماره قطعه | ۷۴HC۵۹۵ |
| ولتاژ منطق/ورودی و خروجی | ۲ ولت تا ۶ ولت |
| ولتاژ منبع | ۴.۵ ولت تا ۵.۵ ولت |
| جریان خروجی (به ازای هر کانال) | ۶ میلی آمپر حداکثر |
| جریان پیک (به ازای هر کانال) | حداکثر ۳۵ میلی آمپر |
| راهنمایی فرکانس PWM | غير قابل للتطبيق |
| آستانههای منطقی ورودی | VIH≥ 2 ولت، ولتایل≤ ۰.۸ ولت |
| افت ولتاژ / RDS(on)/ اشباع | ۰.۵ ولت حداکثر |
| محدودیتهای حرارتی | ۱۵۰ درجه سانتیگراد |
| بسته | DIP-16 |
| یادداشتها / انواع | اغلب در نمایشگرهای دیجیتال استفاده میشود |
- اطمینان حاصل کنید که سطح ولتاژ مناسب (4.5 ولت تا 5.5 ولت) برای عملکرد مطمئن وجود دارد.
- جریان خروجی را محدود کنید تا از آسیب به ثبت شیفت جلوگیری شود.
- از خازنهای جداساز در نزدیکی پایههای تغذیه استفاده کنید تا ولتاژ را تثبیت کنید.
- هشتمین نمایشگر را به درستی وصل کنید تا از نمایندگی نادرست اعداد جلوگیری شود.
- وضعیت سیمکشی را برای اتصالات سست که ممکن است به رفتار غیرمنتظره منجر شود، بررسی کنید.
دستورالعمل های سیم کشی

برای سیمکشی تاس دیجیتال، ابتدا اتصالات برق را راهاندازی کنید. خط زمین (خط آبی) در بُرد آزمایشی خود را به پایه زمین روی ESP32 متصل کنید و اطمینان حاصل کنید که تمام نقاط زمین به هم متصل شدهاند. سپس یک پایه 3.3 ولت از ESP32 را به ریل برق (خط قرمز) در بُرد آزمایشی متصل کنید.
برای شیفت رجیستر 74HC595، اطمینان حاصل کنید که پایه ۱ به ریل ۳.۳ ولت متصل است و پایه ۸ به زمین. پایه خروجی داده (DS) را به پایه ۲۵ بر روی ESP32 متصل کنید، پایه ساعت شیفت (SHCP) را به پایه ۲۶ و پایه ساعت ذخیرهسازی (STCP) را به پایه ۲۷ متصل کنید. دکمه فشاری باید بین پایه ۱۳ بر روی ESP32 و زمین متصل شود تا در هنگام فشردن، پایه را به حالت پایین بکشاند.
نمونههای شِفر (کود) و راهنما
در شِفر (کود)، ابتدا پایههای استفاده شده برای شیفت رجیستر و دکمه را تعریف میکنیم. پایه دکمه به عنوانbuttonPinو بر روی پایه ۱۳ در ESP32 تنظیم شده است. آرایه دادهdatArrayشامل نمایشهای دودویی اعداد ۰-۹ برای نمایشگر هفتقسمتی است.
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()این تابع مقدار مناسب را از آرایه داده به ثبتی شیفت ارسال میکند که سپس بخشهای نمایشگر را برای نشان دادن عدد تولید شده کنترل میکند. این تابع برای بازخورد بصری هنگام فشار دادن دکمه حیاتی است.
نمایشگاه / چه انتظاری باید داشت
زمانی که تنظیمات کامل شد و شِفر (کود) بارگذاری شد، فشردن دکمه یک عدد تصادفی بین ۱ تا ۶ تولید میکند که بر روی نمایشگر هفتتایی نمایش داده میشود. اگر همه چیز به درستی سیمکشی شده باشد، نمایشگر باید هر بار که دکمه فشرده میشود، یک عدد نشان دهد. مراقب ورودیهای شناور باشید؛ اطمینان حاصل کنید که دکمه به درستی به زمین متصل است تا از رفتار ناپایدار جلوگیری شود (در ویدیو در ۱:۳۰).
زمانبندی ویدئو
- ۰۰:۰۰ شروع
- معرفی پروژه :48
- نصب سیمکشی برای تاسهای دیجیتال توضیح داده شده در ۳:۴۰
- شِفر (کود) آردوینو برای تاس دیجیتال توضیح داده شده در ساعت ۱۳:۱۶
- انتخاب برد ESP32 و پورت COM در محیط برنامه نویسی آردوینو
- ۲۱:۰۰ نمایش دیجیتال دایس
- ۲۲:۱۵ اصلاح شِفر (کود) آردوینو
/*
* // تعریف پایههای استفاده شده برای 74hc595 و دکمه
*/
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};
int buttonState = false;
void setup ()
{
// پایه دکمه را به حالت ورودی تنظیم کنید
pinMode(buttonPin,INPUT);
// پایهها را به 74hc595 تنظیم کنید
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
// بررسی کنید که آیا دکمه فشرده شده است
if(digitalRead(buttonPin) == LOW)
{
// یک عدد تصادفی بین ۱ و ۶ تولید کنید
int diceNumber = random(1, 7);
// عدد را روی نشانگر 7_SEG نمایش دهید
show_number(diceNumber);
// تاخیر به مدت 50 میلیثانیه
delay(50);
}
}
// تابع برای نمایش یک عدد روی نمایشگر ۷ بخشی
void show_number(int num)
{
// پایه ST_CP را به زمین وصل کنید و آن را برای مدت زمانی که در حال ارسال هستید پایین نگه دارید.
digitalWrite(STcp, LOW);
// دادهها را برای شماره به ثبت شیفت ارسال کنید
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
// ST_CP را بکشید تا دادهها ذخیره شوند.
digitalWrite(STcp, HIGH);
}
Common Course Links
Common Course Files
منابع و مراجع
-
مستنداتESP32 آموزش 33/55- صفحه مستندات SunFounder برای تاسهای دیجیتالdocs.sunfounder.com
فایلها📁
هیچ فایلی موجود نیست.