در فیلم ها و سریال های زیادی دیده ایم که چگونه یک بمب ساعتی با زدن کلید آن شروع به شمارش معکوس می کند و زمانی که به صفر می رسد بمب منفجر می شود؛ یا در پرتاب کننده های شاتل فضایی با زدن یک کلید زمان ثابت شده و با زدن کلید دیگر شمارش معکوس شروع می شود.در این پروژه قصد دارم تا ساخت یک شمارنده معکوس با برد آردوینو و ماژول نمایشگر TM1637 را به شما عزیزان آموش بدهم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
ماژول نمایشگر TM1637
ماژول نمایشگر TM1637 یک سون سگمنت چهارتایی آند مشترک با درایور TM1637 است.برای کنترل چهار موقعیت این ماژول، به جز VCC و GND تنها به دو پین data و clock نیاز است. با توجه به این موضوع یعنی به کارگیری تنها دو پین از آردوینو، ماژول بسیار مناسبی برای ساخت سیستم هایی با قابلیت نمایش عدد چهار رقمی است؛ همچنین با داشتن دو نقطه در میان موقعیت های دوم و سوم، می توان برای نمایش زمان یا کاربرد های تایمر از آن استفاده کرد.در این پروژه به جای نوشتن توابع، با فراخوانی کتابخانه اختصاصی این ماژول، از دستورات پیش فرض آن استفاده می شود.
نحوه مقداردهی ماژول نمایشگر TM1637
در جدول زیر میتوان مشاهده کرد که که با روشن و خاموش کردن بعضی از سگمنتهای یک سون سگمنت اعداد مختلفی را روی آن نمایش داد. برای مثال، نمایش عدد ۰ بر روی یک سون سگمنت کافیست سگمنتهای G,DP را خاموش و سگمنتهای C,B,A,D,E,F روی ماژول نمایشگر TM1637 را روشن کنیم. به ترتیب برابر با ۰۰۱۱۱۱۱۱ خواهد بود. این یک عدد تک بایتی یعنی ۸ بیتی است. که خاموش و روشن بودن سگمنتها را مشخص میکند. حال اگر همین عدد را از مبنای ۲ به مبنای ۱۰ تبدیل کنیم برابر با ۶۳ خواهد بود. حال همین عدد را به مبنای ۱۶ تبدیل میکنیم که برابر ۳F است و ۰x قبل آن نشان دهنده مبنای ۱۶ است. پس با نوشتن عدد ۶۳ بر روی پینهای سون سگمنت عدد صفر بر روی آن نمایش داده میشود.
نحوه کار شمارنده معکوس
ابتدا باید توسط دو پتانسیومتر که یکی برای تنظیم ثانیه و دیگری برای تنظیم دقیقه است زمان مورد نظر را تنظیم کنیم.زمان مورد نظر بر روی ماژول نمایشگر TM1637 نمایش داده می شود.شایان ذکر است که محدوده کار این شمارنده از یک ثانیه تا یک ساعت و یک دقیقه است.سپس با پوش باتن اول که در واقع کلید تنظیم یا (SET) است، زمان را تثبیت می کنیم.در این مرحله LED سبز رنگ روشن می شود و شما دیگر قادر به تغییر زمان نیستید مگر این که پوش باتن اول(SET) را یک بار دیگر بفشارید.حال که پوش باتن اول فشار داده شده است اتفاقی نمی افتد تا اینکه پوش باتن دوم که کلید آغاز یا (LAUNCH) است را فشار دهید.حال LED زرد رنگ روشن شده و شمارش معکوس شروع می شود این شمارش تا زمانی که مقدار نمایش داده شده بر روی نمایشگر به صفر برسد ادامه پیدا می کند.حال که مقدار شمارش به صفر رسیده است LED قرمز رنگ هم روشن شده و هر سه LED روشن هستند و همچنین ماژول نمایشگر شروع به چشمک زدن می کند و پس از ۴ بار چشمک زدن، ماژول نمایشگر دوباره مقدار خوانده شده از پتانسیومترها را نشان می دهد و این حلقه دوباره تکرار می شود.
اتصالات مدار نمایشگر TM1637
طبق الگوی زیر اتصالات بین ماژولها وبرد آردوینو را برقرار کنید.
GND ماژول –> GND آردوینو
VCC ماژول –> +5V
DIO ماژول –> پین دیجیتال شماره ۹ آردوینو
CLK ماژول –> پین دیجیتال شماره ۸ آردوینو
اتصالات دو عدد میکروسوئیچ
- پوش باتن تنظیم(Set)
- پوش باتن آغاز(Launch)
اتصالات LED ها
LED سبز : پایه بلندتر آن(ANODE) به پین ۱۰ دیجیتال آردوینو و پایه کوتاه تر (CATHODE) به یک سر مقاومت ۲۲۰Ώ و سر دیگر مقاومت به زمین(GND).
LED زرد : پایه بلندتر آن(ANODE) به پین ۱۱ دیجیتال آردوینو و پایه کوتاه تر (CATHODE) به یک سر مقاومت ۲۲۰Ώ و سر دیگر مقاومت به زمین(GND).
LED قرمز : پایه بلندتر آن(ANODE) به پین ۱۲ دیجیتال آردوینو و پایه کوتاه تر (CATHODE) به یک سر مقاومت ۲۲۰Ώ و سر دیگر مقاومت به زمین(GND).
اتصالات پتانسیومترها
وسایل و قطعات مورد نیاز
- برد آردوینو Uno (من از مدل UNO استفاده می کنم.ولی شما می توانید از هر مدل دیگری نیز استفاده کنید).
- ماژول نمایشگر TM1637
- ۲ عدد پوش باتن چهار پایه
- ۲ عدد پتانسیومتر ۱KΏ
- ۳ عدد مقاومت ۲۲۰Ώ
- برد بورد
- ۳ عدد LED (برای تشخیص بهتر من از سه رنگ متفاوت برای این LED ها استفاده کردم)
- مقداری سیم فلت(جامپر)
کتابخانه آردوینو ماژول نمایشگر TM1637
همانطور که پیش از این گفته شد، در این پروژه به جای نوشتن توابع برای ماژول نمایشگر، از کتابخانه اختصاصی آن استفاده میکنیم. از آنجا که این کتابخانه به صورت پیشفرض در نرم افزار Arduino IDE موجود نیست نیاز داریم تا آن را نصب کنیم. برای این کار ابتدا از این لینک کتابخانه را دانلود کرده و نرم افزار Arduino IDE را باز کنید. به منوی Sketch → Include Library → Add .ZIP Library رفته و کتابخانه ای که دانلود کردید را انتخاب کنید.حال کافیست یک بار نرم افزار را ببندید و دوباره باز کنید و با دستور زیر کتابخانه را ضمیمه کد کنید.
#include <SevenSegmentTM1637.h>
کدهای پروژه ماژول نمایشگر TM1637
کدهای زیر را کپی کرده و در نرم افزار آردوینو IDE وارد کنید. سپس اقدام به آپلود کدها کنید. چنانچه در این مورد اطلاعی ندارید، از بخش نظرات با من در ارتباط باشید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
توابع مهم کتابخانه TM1637
- دستور (SevenSegmentTM1637(clkPin, dioPin
با این دستور یک شی از نوع SevenSegmentTM1637 ساخته شده و پین های CLK و DIO مشخص می شوند.
- دستور init()
با این دستور ماژول نمایشگر راه اندازی می شود.
- دستور print(value)
با این دستور مقدار داخل پرانتز بر روی نمایشگر نشان داده می شود.این مقدار می تواند عدد(۰ تا ۹۹۹۹) و یا حروفی که می توان بر روی سون سگمنت نمایش داد، باشد(A,b,C,d,E,F,H,J,L,n,o,P,U)
- دستور off()
این دستور ماژول نمایشگر را خاموش می کند.
- دستور on()
زمانی که ماژول نمایشگر با دستور off() خاموش شده باشد، با این دستور می توان دوباره آن را روشن کرد.
- دستور blink()
با اجرا شدن این دستور هر چیزی که رو نمایشگر باشد شروع به چشمک زدن می کند.
- دستور setColonOn(bool)
این دستور امکان کنترل «دو نقطه ای» که در میان موقعیت های دوم و سوم ماژول قرار دارد را به ما می دهد.اگر در پرانتز مقدار true قرار داده شود، دو نقطه روشن شده و اگر در پرانتز مقدار false قرار داده شود دو نقطه خاموش می شوند.
- دستور printRaw()
این دستور یک آرایه چهار جزئی از نوع بایت را دریافت کرده و مقدار آن را به ترتیب بر روی نمایشگر نشان می دهد.
توضیحات کد ماژول نمایشگر TM1637
ابتدا همانطور که گفته شد، کتابخانه ماژول نمایشگر TM1637 را ضمیمه کد می کنیم.
#include <SevenSegmentTM1637.h> //including TM1637 Lbrary
حال باید پین های ماژول نمایشگر،پتانسیومتر ها،پوش باتن ها و LED ها را تعریف و مشخص کنیم.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
جمع بندی
در این پروژه ما اقدام به ساخت یک شمارنده معکوس همانند نسخه موجود بمب های ساعتی و ایستگاه های پرتاب شاتل های فضایی کردیم و همچنین نحوه کار با ماژول نمایشگر TM1637 را نیز آموختیم.زمانی که مقدار نمایش داده شده بر روی نمایشگر به صفر برسد،LED قرمز روشن خواهد شد.شما همچنین می توانید این خروجی را به یک بازر و یا رله متصل کرده و رله را به یک وسیله بزرگتر و به همین راحتی یک شمارنده معکوس خلاقانه برای خودتان ساخته اید. امیدوارم از این پروژه لذت برده باشید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
Arduino: 1.8.13 (Windows Store 1.8.39.0) (Windows 10), Board: “Arduino Uno”
C:\Users\poory\Documents\Arduino\libraries\arduino-tm1637-master\src\SevenSegmentFun.cpp:187:80: error: no ‘void SevenSegmentFun::bouncingBall(uint16_t, uint16_t, bool)’ member function declared in class ‘SevenSegmentFun’
void SevenSegmentFun::bouncingBall(uint16_t moves, uint16_t d, bool runForever) {
^
exit status 1
Error compiling for board Arduino Uno.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
این ارور رو داره
با سلام
این ارور مربوط به کتابخانه tm1637 است، کتابخانه را نصب و نوع برد آردوینو را با توجه به برد مورد استفاده انتخاب کنید.
سلام خسته نباشید .
میشه از اردوینو uno R3 استفاده کرد ؟
نحوه اتصالات تغیر میکنه ؟
با سلام
بله تفاوتی ندارد و میتوانید استفاده کنید.
سلام و روزتون بخیر.
من یک سوال داشتم.
من میخواستم ببینم حداکثر شمارنده هایی که میشه با یک برد اردینو درست کرد چقدر هست.
برای مثال من اگر بخوام با همین یک برد ۶ تا شمارنده متصل کنم امکانش هست؟
لطفا اگر آموزشی هست یا لینکی که کمک میکنه به سوالم برای من ارسال کنید.
سپاس گزارم
دوست عزیز توی کارهایی که در سایت قرار میدی حتما ی شماتیکی از مدارت با برنامه هایی مثل fritzing بزار که اتصالاتت کاملا معلوم باشه
با سلام
سپاس از همراهی شما، اتصالات در متن آموزش دقیقا توضیح داده شدهاند. کافیست با دقت مطالعه کنید.
سلام من یه کی پد ۳*۴و از همین سون سگمنت ها دارم میخوام هر عددی رو روی کی پد میزنم روی سون سگمنت نمایش بده میشه کد های پروژ واتصالت به اردینو روبگید ممنون میشم
با سلام
برای این منظور به آموزشهای زیر مراجعه کنید.
ساخت دنده هوشمند آردوینو و ماژول جوی استیک و سون سگمنت
راه اندازی ماژول سون سگمنت ۸ دیجیت با تراشه Max7219 و برد آردوینو
سلام خسته نباشید من اشتراک خریدم اما کد هارو برام نمایش نمیده
با سلام
کش مرورگر را یکبار پاک کنید.
Arduino: 1.8.13 (Windows 10), Board: “Arduino Uno”
C:\Users\Mehrad’s PC\Documents\Arduino\libraries\SevenSegmentTM1637\src\SevenSegmentFun.cpp:187:80: error: no ‘void SevenSegmentFun::bouncingBall(uint16_t, uint16_t, bool)’ member function declared in class ‘SevenSegmentFun’
void SevenSegmentFun::bouncingBall(uint16_t moves, uint16_t d, bool runForever) {
^
exit status 1
Error compiling for board Arduino Uno.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
کد رو میزنم این ارور رو میده ، مشکل کجاست ممنون میشم راهنمایی کنید
با سلام
کدها به درستی کپی نشده است مجددا بررسی کنید.
سلام خسته نباشید . پوش باتن هارو چطور باید متصل کرد؟ اگه عکسش رو میشه بزارید
سلام مجدد
گزینههای launchPin و setPin در کدهای پروژه مربوط به اتصالات پوش باتن هستند.