آموزش ساخت ساعت دیجیتالی | پروژه: طراحی و پیادهسازی ساعت دیجیتال با نمایشگر ۷ قسمتی به وسیله Arduino، در ادامه با آموزشگاه خانه رباتیک ایران همراه باشید:
خلاصه پروژه ساخت ساعت دیجیتالی:
در این پروژه، قصد داریم یک ساعت دیجیتال استاندارد را با استفاده از میکروکنترلر Arduino و نمایشگرهای ۷ قسمتی طراحی و پیادهسازی کنیم. این سیستم قادر است زمان را نمایش داده و ممکن است امکاناتی مانند تنظیم زمان، کرنومتر یا ساعت جهانی را نیز شامل شود.
آموزش ساخت ساعت دیجیتالی
اجزاء اصلی مورد استفاده:
– میکروکنترلر Arduino:
یک برد میکروکنترلر کوچک و قدرتمند بر پایه تراشه ATmega328، که وظیفه خواندن دادهها، کنترل نمایشگر و محاسبه و نگهداری زمان را بر عهده دارد.
– نمایشگر ۷ قسمتی:
یک دیود نوری ساطع کننده (LED) چندتایی که هر بخش آن به صورت جداگانه کنترل میشود تا ارقام عددی (۰-۹) را نمایش دهد. معمولاً برای نمایش ساعت از چهار عدد استفاده میشود که دو برای ساعت و دو برای دقیقه هستند.
– سایر اجزاء کمکی:
– هدرهای ۸ و ۳۶ پوزیشن: برای اتصال ایمن و آسان بخشهای مختلف مدار (مانند نمایشگرها و کلیدها) به برد Arduino.
– کلیدهای تاشهای (تاکتیک سوئیچ): برای تنظیم زمان، شروع/وقف کردن کرنومتر، یا سایر تنظیمات.
– LEDهای قرمز (قطر ۵ میلیمتر): برای نشان دادن وضعیت سیستم، انرژی یا هشدارها.
– پینها و سیمهای هوکآپ: برای اتصال صحیح بخشهای مختلف مدار.
ابزارهای مورد نیاز:
– سیم لحیم و هویه: برای اتصال قطعات به برد PCB.
– پایههای نگهدارنده PCB، فلکس و فلکسسولفور: برای تثبیت و مونتاژ فیزیکی قطعات روی برد.
– فلکس و فلوک لحیمکاری: جهت اطمینان از اتصالات سالم و پایدار.
روش کار کلی:
در این پروژه، برنامهنویسی مدار به زبان C/C++ است تا زمان را در قالب ساعت و دقیقه نگهداری و به نمایش درآورد. کدها معمولاً شامل موارد زیر هستند:
– شمارنده و تایمر برای نگهداری دقیق زمان
– کنترل پینهای خروجی برای روشن و خاموش کردن بخشهای نمایشگر
– خواندن ورودی سوئیچها برای تنظیم زمان یا کنترل عملکردها
این پروژه نمونهای عملی است از کاربرد میکروکنترلرهای دیجیتال جهت توسعه سیستمهای زمانبندی و نمایش زمان، که بر پایه اصول الکترونیک دیجیتال، برنامهنویسی embedded، و طراحی مدارات منطقی استوار است. همچنین، آموزش نحوه طراحی، مونتاژ، و برنامهنویسی سختافزارهای مدرن قابل اجرا در سطح ابتدایی تا پیشرفته است.
|
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ ۵۳ ۵۴ ۵۵ ۵۶ ۵۷ ۵۸ ۵۹ ۶۰ ۶۱ ۶۲ ۶۳ ۶۴ ۶۵ ۶۶ ۶۷ ۶۸ ۶۹ ۷۰ ۷۱ ۷۲ ۷۳ ۷۴ ۷۵ ۷۶ ۷۷ ۷۸ ۷۹ ۸۰ ۸۱ ۸۲ ۸۳ ۸۴ ۸۵ ۸۶ ۸۷ ۸۸ ۸۹ ۹۰ ۹۱ ۹۲ ۹۳ ۹۴ ۹۵ ۹۶ ۹۷ ۹۸ ۹۹ ۱۰۰ ۱۰۱ ۱۰۲ ۱۰۳ ۱۰۴ ۱۰۵ ۱۰۶ ۱۰۷ ۱۰۸ ۱۰۹ ۱۱۰ ۱۱۱ ۱۱۲ ۱۱۳ ۱۱۴ ۱۱۵ ۱۱۶ ۱۱۷ ۱۱۸ ۱۱۹ ۱۲۰ ۱۲۱ ۱۲۲ ۱۲۳ ۱۲۴ ۱۲۵ ۱۲۶ ۱۲۷ ۱۲۸ ۱۲۹ ۱۳۰ ۱۳۱ ۱۳۲ ۱۳۳ ۱۳۴ ۱۳۵ ۱۳۶ ۱۳۷ ۱۳۸ ۱۳۹ ۱۴۰ ۱۴۱ ۱۴۲ ۱۴۳ ۱۴۴ ۱۴۵ ۱۴۶ ۱۴۷ ۱۴۸ ۱۴۹ ۱۵۰ ۱۵۱ ۱۵۲ ۱۵۳ ۱۵۴ ۱۵۵ ۱۵۶ ۱۵۷ ۱۵۸ ۱۵۹ ۱۶۰ ۱۶۱ ۱۶۲ ۱۶۳ ۱۶۴ ۱۶۵ ۱۶۶ ۱۶۷ ۱۶۸ ۱۶۹ ۱۷۰ ۱۷۱ ۱۷۲ ۱۷۳ ۱۷۴ ۱۷۵ ۱۷۶ ۱۷۷ ۱۷۸ ۱۷۹ ۱۸۰ ۱۸۱ ۱۸۲ ۱۸۳ ۱۸۴ ۱۸۵ ۱۸۶ ۱۸۷ ۱۸۸ ۱۸۹ ۱۹۰ ۱۹۱ ۱۹۲ ۱۹۳ ۱۹۴ ۱۹۵ ۱۹۶ ۱۹۷ ۱۹۸ ۱۹۹ ۲۰۰ ۲۰۱ ۲۰۲ ۲۰۳ ۲۰۴ ۲۰۵ ۲۰۶ ۲۰۷ ۲۰۸ ۲۰۹ ۲۱۰ ۲۱۱ ۲۱۲ ۲۱۳ ۲۱۴ ۲۱۵ ۲۱۶ ۲۱۷ ۲۱۸ ۲۱۹ ۲۲۰ ۲۲۱ ۲۲۲ ۲۲۳ ۲۲۴ ۲۲۵ ۲۲۶ ۲۲۷ ۲۲۸ ۲۲۹ ۲۳۰ ۲۳۱ ۲۳۲ ۲۳۳ ۲۳۴ ۲۳۵ ۲۳۶ ۲۳۷ ۲۳۸ ۲۳۹ ۲۴۰ ۲۴۱ ۲۴۲ ۲۴۳ ۲۴۴ ۲۴۵ ۲۴۶ ۲۴۷ ۲۴۸ ۲۴۹ ۲۵۰ ۲۵۱ ۲۵۲ ۲۵۳ ۲۵۴ ۲۵۵ ۲۵۶ ۲۵۷ ۲۵۸ ۲۵۹ ۲۶۰ ۲۶۱ ۲۶۲ ۲۶۳ ۲۶۴ ۲۶۵ ۲۶۶ ۲۶۷ ۲۶۸ ۲۶۹ ۲۷۰ ۲۷۱ ۲۷۲ ۲۷۳ ۲۷۴ ۲۷۵ ۲۷۶ ۲۷۷ ۲۷۸ ۲۷۹ ۲۸۰ ۲۸۱ ۲۸۲ ۲۸۳ ۲۸۴ ۲۸۵ ۲۸۶ ۲۸۷ ۲۸۸ ۲۸۹ ۲۹۰ ۲۹۱ ۲۹۲ ۲۹۳ ۲۹۴ ۲۹۵ ۲۹۶ ۲۹۷ ۲۹۸ ۲۹۹ ۳۰۰ ۳۰۱ ۳۰۲ ۳۰۳ ۳۰۴ ۳۰۵ ۳۰۶ ۳۰۷ ۳۰۸ ۳۰۹ ۳۱۰ ۳۱۱ ۳۱۲ ۳۱۳ ۳۱۴ ۳۱۵ ۳۱۶ ۳۱۷ ۳۱۸ ۳۱۹ ۳۲۰ ۳۲۱ ۳۲۲ ۳۲۳ ۳۲۴ ۳۲۵ ۳۲۶ ۳۲۷ ۳۲۸ ۳۲۹ ۳۳۰ ۳۳۱ ۳۳۲ ۳۳۳ ۳۳۴ ۳۳۵ ۳۳۶ ۳۳۷ ۳۳۸ ۳۳۹ ۳۴۰ ۳۴۱ ۳۴۲ ۳۴۳ ۳۴۴ ۳۴۵ ۳۴۶ ۳۴۷ ۳۴۸ ۳۴۹ ۳۵۰ ۳۵۱ ۳۵۲ ۳۵۳ ۳۵۴ ۳۵۵ ۳۵۶ ۳۵۷ ۳۵۸ ۳۵۹ ۳۶۰ ۳۶۱ ۳۶۲ ۳۶۳ ۳۶۴ ۳۶۵ ۳۶۶ ۳۶۷ ۳۶۸ ۳۶۹ ۳۷۰ ۳۷۱ ۳۷۲ ۳۷۳ ۳۷۴ ۳۷۵ ۳۷۶ ۳۷۷ ۳۷۸ ۳۷۹ ۳۸۰ ۳۸۱ ۳۸۲ ۳۸۳ ۳۸۴ ۳۸۵ ۳۸۶ ۳۸۷ ۳۸۸ ۳۸۹ ۳۹۰ ۳۹۱ ۳۹۲ ۳۹۳ ۳۹۴ ۳۹۵ ۳۹۶ ۳۹۷ ۳۹۸ ۳۹۹ ۴۰۰ ۴۰۱ ۴۰۲ ۴۰۳ ۴۰۴ ۴۰۵ ۴۰۶ |
//feel free to contact //sreeramaj53@gmail.com //www.youtube.com/ZenoModiff #include int digit1 = ۱۰; int digit2 = ۱۱; int digit3 = ۱۲; int digit4 = ۱۳; int segA = ۸;//Display pin A int segB = ۷;//splay pin b int segC = ۶; //Display pin c int segD = ۵; //Display pin d int segE = ۴; //Display pin e int segF = ۳; //Display pin f int segG = ۲; //Display pin g int segDP = ۹;// Display pin dot byte SW0 = A0; byte SW1 = A1; byte SW2 = A2; void setup() { pinMode(segA, OUTPUT); pinMode(segB, OUTPUT); pinMode(segC, OUTPUT); pinMode(segD, OUTPUT); pinMode(segE, OUTPUT); pinMode(segF, OUTPUT); pinMode(segG, OUTPUT); pinMode(segDP, OUTPUT); pinMode(digit1, OUTPUT); pinMode(digit2, OUTPUT); pinMode(digit3, OUTPUT); pinMode(digit4, OUTPUT); Serial.begin(۹۶۰۰); pinMode(SW0, INPUT); pinMode(SW1, INPUT); pinMode(SW2, INPUT); digitalWrite(SW0, HIGH); digitalWrite(SW1, HIGH); digitalWrite(SW2, HIGH); } void loop() { digitalWrite(segDP, HIGH); int hr = hour(); int timp = ( (hr>۱۲)?(hr%۱۲):hr)*۱۰۰+minute(); Serial.println(timp); for(int i = ۲۵۰ ; i >۰ ; i--) { if (timp > ۱۰۰) displayNumber01(timp); else displayNumber02(timp); } for(int i = ۲۵۰ ; i >۰ ; i--) { if (timp > ۱۰۰) displayNumber03(timp); else displayNumber04(timp); } if (!(digitalRead(SW0))) set_time(); } void set_time() { byte minutes1 = ۰; byte hours1 = ۰; byte minutes = minute(); byte hours = hour(); while (!digitalRead(SW0)) { minutes1=minutes; hours1=hours; while (!digitalRead(SW1)) { minutes++; if (minutes > ۵۹) minutes = ۰; for(int i = ۲۰ ; i >۰ ; i--) { int timp= hours*۱۰۰+minutes; if (timp > ۱۰۰۰) displayNumber01(timp); else displayNumber02(timp); } delay(۱۵۰); } while (!digitalRead(SW2)) { hours++; if (hours > ۱۲) hours = ۰; for(int i = ۲۰ ; i >۰ ; i--) { int timp= hours*۱۰۰+minutes; if (timp > ۱۰۰۰) displayNumber01(timp); else displayNumber02(timp); } delay(۱۵۰); } for(int i = ۲۰ ; i >۰ ; i--) { displayNumber01(hours*۱۰۰+minutes); } setTime(hours,minutes,۰,۰,۰,۰); delay(۱۵۰); } } void displayNumber01(int toDisplay) { #define DISPLAY_BRIGHTNESS 500 #define DIGIT_ON HIGH #define DIGIT_OFF LOW for(int digit = ۴ ; digit > ۰ ; digit--) { switch(digit) { case ۱: digitalWrite(digit1, DIGIT_ON); digitalWrite(segDP, LOW); break; case ۲: digitalWrite(digit2, DIGIT_ON); digitalWrite(segDP, LOW); break; case ۳: digitalWrite(digit3, DIGIT_ON); digitalWrite(segDP, LOW); break; case ۴: digitalWrite(digit4, DIGIT_ON); digitalWrite(segDP, LOW); break; } lightNumber(toDisplay % ۱۰); toDisplay /= ۱۰; delayMicroseconds(DISPLAY_BRIGHTNESS); lightNumber(۱۰); digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); } } void displayNumber02(int toDisplay) { #define DISPLAY_BRIGHTNESS 500 #define DIGIT_ON HIGH #define DIGIT_OFF LOW for(int digit = ۴ ; digit > ۰ ; digit--) { switch(digit) { case ۱: lightNumber(۱۰); digitalWrite(segDP, LOW); break; case ۲: digitalWrite(digit2, DIGIT_ON); digitalWrite(segDP, LOW); break; case ۳: digitalWrite(digit3, DIGIT_ON); digitalWrite(segDP, LOW); break; case ۴: digitalWrite(digit4, DIGIT_ON); digitalWrite(segDP, LOW); break; } lightNumber(toDisplay % ۱۰); toDisplay /= ۱۰; delayMicroseconds(DISPLAY_BRIGHTNESS); lightNumber(۱۰); digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); } } void displayNumber03(int toDisplay) { #define DISPLAY_BRIGHTNESS 500 #define DIGIT_ON HIGH #define DIGIT_OFF LOW for(int digit = ۴ ; digit > ۰ ; digit--) { switch(digit) { case ۱: digitalWrite(digit1, DIGIT_ON); digitalWrite(segDP, HIGH); break; case ۲: digitalWrite(digit2, DIGIT_ON); digitalWrite(segDP, HIGH); break; case ۳: digitalWrite(digit3, DIGIT_ON); digitalWrite(segDP, HIGH); break; case ۴: digitalWrite(digit4, DIGIT_ON); digitalWrite(segDP, HIGH); break; } lightNumber(toDisplay % ۱۰); toDisplay /= ۱۰; delayMicroseconds(DISPLAY_BRIGHTNESS); lightNumber(۱۰); digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); } } void displayNumber04(int toDisplay) { #define DISPLAY_BRIGHTNESS 500 #define DIGIT_ON HIGH #define DIGIT_OFF LOW for(int digit = ۴ ; digit > ۰ ; digit--) { switch(digit) { case ۱: lightNumber(۱۰); digitalWrite(segDP, HIGH); break; case ۲: digitalWrite(digit2, DIGIT_ON); digitalWrite(segDP, HIGH); break; case ۳: digitalWrite(digit3, DIGIT_ON); digitalWrite(segDP, HIGH); break; case ۴: digitalWrite(digit4, DIGIT_ON); digitalWrite(segDP, HIGH); break; } lightNumber(toDisplay % ۱۰); toDisplay /= ۱۰; delayMicroseconds(DISPLAY_BRIGHTNESS); lightNumber(۱۰); digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); } } void lightNumber(int numberToDisplay) { #define SEGMENT_ON LOW #define SEGMENT_OFF HIGH switch (numberToDisplay){ case ۰: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_OFF); break; case ۱: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; case ۲: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); break; case ۳: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); break; case ۴: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case ۵: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case ۶: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case ۷: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; case ۸: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case ۹: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case ۱۰: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; } } |
۱. متغیرها و پینها:
– تعیین پینهای نمایشگر ۷ قسمتی و قطعکنندهها:
پینهای دیجیتال برای کنترل هر بخش از نمایشگر (A تا G و نقطه) تعریف شدهاند.
– پینهای سوئیچها: برای تنظیم ساعت و دقیقه (SW0، SW1، SW2) است.
۲. تابع setup() :
– پینها به عنوان خروجی یا ورودی تنظیم میشوند.
– سوئیچها با مقاومت داخلی فعال شدهاند (`HIGH` با `pinMode INPUT`) و فعالسازی سطح بالا به عنوان حالت فعال بودن سوئیچ تنظیم شده است.
– ارتباط سریالی ( Serial.begin(9600) ) برای ارسال و دریافت اطلاعات از طریق کامپیوتر مشخص شده است.
۳. تابع loop() :
– خواندن ساعت فعلی:
تابع hour() و minute() از کتابخانه وقت ( TimeLib ) برای دیدن زمان فعلی استفاده میکند.
– محاسبه timp :
در اینجا، زمانی که ساعت > 12، ساعت به حالت ۱۲ ساعته تبدیل میشود و سپس ضربدر ۱۰۰ و جمع شدن دقیقه انجام میشود، تا زمان به صورت عددی چهار رقمی (مثلاً ۱۲۳۴ برای ۱۲:۳۴) ذخیره شود.
– نمایش زمان:
این کار در حلقههای تکراری با تابعهای displayNumber01 ، displayNumber02 ، displayNumber03 ، و displayNumber04 انجام میشود، که هر کدام نحوه نمایش متفاوتی دارند (شاید حالتهای روشنایی یا برعکس).
– تنظیم زمان با کلید SW0:
اگر کلید SW0 فشرده شود، تابع set_time() فراخوانی میشود و کاربر میتواند زمان را تنظیم کند.
۴. تابع set_time() :
– کار بر روی کلیدهای SW1 و SW2 است برای تغییر دقیقه و ساعت به ترتیب.
– حلقه جاری تا زمانی که SW0 فشرده است فعال باقی میماند.
– هنگامی که SW1 فشرده میشود، دقیقه افزایش مییابد (بازنشانی به ۰ پس از ۶۰).
– هنگامی که SW2 فشرده میشود، ساعت افزایش مییابد (بازنشانی به ۰ پس از ۱۲).
– پس از هر تغییر، ساعت و دقیقه جدید نمایش داده میشود و مقدار زمان سیستم بر روی Arduino تنظیم میشود ( setTime() ).
۵. توابع نمایش شماره ( displayNumber01 ، displayNumber02 ، displayNumber03 ، displayNumber04 ):
این توابع نحوه نمایش عدد بر روی صفحههای ۷ قسمتی را کنترل میکنند:
– هر کدام از این توابع، چرخه نمایش را برای هر رقم انجام میدهند.
– این کار با فعال کردن یکی از چهار دیود ( LED ) در هر لحظه انجام میشود و عدد مورد نظر با تابع lightNumber() به هر بخش اختصاص داده میشود.
– تفاوت این توابع در نحوه روشن کردن یا خاموش کردن نقطهنمای ( segDP ) است، که حالت مختلفی برای نمایش دارد (مثلاً نقطه روشن یا خاموش).
۶. تابع lightNumber() :
به هر عدد ۰ تا ۹، حالت پایهای بخشهای ۷ قسمتی (A-G) را میدهد، بر اساس استاندارد نمایش ارقام:
– SEGMENT_ON برابر با LOW است که باعث روشن شدن LEDهای بخش مربوطه میشود.
– برعکس، SEGMENT_OFF برابر با HIGH است.
جمعبندی کلی:
این برنامه، یک ساعت دیجیتال ساده است که با کنترل صفحههای ۷ قسمتی و کلیدهای تنظیم، زمان را نمایش میدهد و امکان تنظیم ساعت و دقیقه را فراهم میکند.
در حالت بیکار، زمان جاری بر اساس ساعت سیستم نمایش داده میشود. برنامه از تکنیک multiplexing برای کم کردن تعداد پینها و کنترل چندین رقم به صورت همزمان استفاده میکند.
” لطفا سوالات خود را با ذکر عنوان مقاله ارسال کنید. آموزشگاه خانه رباتیک ایران در کنار شماست. “
آماده سازی فرم
لطفا صبر کنید
فرم ساز آسان

