در این پست از سایت اِمیک, یک پروژه جالب و آموزشی به نام پروژه آردوینو چشمک زن LED به تعداد عدد وارد شده در کیپد قرار داده شده است. در این پروژه ما توسط یک کیپد می توانیم عددی بین 0 تا 9 را وارد کنیم و یک LED متصل به برد آردوینو به مقدار عدد وارد شده چشمک می زند. این پروژه با استفاده از برد آردوینو UNO انجام شده و در ادامه در مورد پروژه بیشتر توضیح خواهم داد. در زیر شماتیک این پروژه را مشاهده می کنید:
قبلا نیز همین پروژه را با استفاده از میکروکنترلر AVR در سایت قرار داده بودم که برای مشاهده آن پست می توانید اینجا کلیک کنید.
همانطور که مشاهده می کنید, ما در این پروژه از برد آردوینو UNO استفاده کرده ایم. از یک کیپد 3 در 4 نیز استفاده کرده ایم که این کیپد به پایه های 0 تا 6 برد آردوینو متصل شده است. یک LED نیز از طریق مقاومت R1 به پایه A0 برد آردوینو متصل شده است. مقاومت R1 برای محدود کردن جریان LED و جلوگیری از سوختن آن می باشد.
عملکرد پروژه به این صورت است که ما توسط کیپد یک عدد (بین 0 تا 9) را وارد می کنیم و LED متصل به پایه A0 آردوینو به مقدار عدد وارد شده چشمک می زند. در ابتدا LED خاموش است و به عنوان مثال در صورت فشار دادن کلید 5 کیپد, LED به تعداد 5 بار چشمک می زند و دوباره خاموش می شود. در ادامه با فشار دادن دوباره یک کلید به همان تعداد چشمک می زند.
این پروژه قابلیت کم و زیاد کردن سرعت چشمک زدن LED را نیز دارد. توسط کلید ستاره * از کیپد می توانید سرعت چشمک زدن LED را افزایش دهید و همچنین توسط کلید # از کیپد می توانید سرعت چشمک زدن را کاهش دهید. توجه کنید که این دو کلید زمانی کار می کنند که LED خاموش است و در حال چشمک زدن نباشد.
تغذیه پروژه بالا را می توانید از خود برد آردوینو بگیرید, به این صورت که برد آردوینو را با استفاده از آداپتور راه اندازی کنید و از پایه های 5V و GND آردوینو برای تغذیه استفاده کنید.
برنامه آردوینو :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
//////// WWW.EMIC.IR //////// int Number, i = 0, d = 1000; //تعریف متغیر برای استفاده در برنامه// int key_pad(void) //در روبرو یک تابع تعرف شده است که با فراخوانی این تابع در برنامه اصلي کي پد اسکن مي شود و عدد کليد فشار داده شده را بر مي گرداند// { digitalWrite(0, 1); digitalWrite(1, 1); digitalWrite(2, 1); digitalWrite(3, 0); delay(1); if (!digitalRead(4)) return 1; if (!digitalRead(5)) return 2; if (!digitalRead(6)) return 3; digitalWrite(0, 1); digitalWrite(1, 1); digitalWrite(2, 0); digitalWrite(3, 1); if (!digitalRead(4)) return 4; if (!digitalRead(5)) return 5; if (!digitalRead(6)) return 6; digitalWrite(0, 1); digitalWrite(1, 0); digitalWrite(2, 1); digitalWrite(3, 1); if (!digitalRead(4)) return 7; if (!digitalRead(5)) return 8; if (!digitalRead(6)) return 9; digitalWrite(0, 0); digitalWrite(1, 1); digitalWrite(2, 1); digitalWrite(3, 1); if (!digitalRead(4)) return 10; if (!digitalRead(5)) return 0; if (!digitalRead(6)) return 11; return 12; } //اتمام تابع// void setup() { pinMode(0, OUTPUT); //پین های 0 تا 3 از برد اردوینو خروجی شده اند و پین های 4 تا 6 نیز ورودی شده اند. این پین ها به کی پد متصل می شوند// pinMode(1, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); pinMode(6, INPUT_PULLUP); pinMode(A0, OUTPUT); //خروجی شده است LED از برد اردوینو برای اتصال به A0 پین// } void loop() { Number = key_pad(); //Number گرفتن عدد وارد شده از کيپد و ذخيره ان در متغير// if (Number == 10) { d = d / 1.5; delay(500); } //در صورتي که کليد ستاره * از کيپد فشار داده شد و در واقع عدد ما برابر 10 بود طبق دستور روبرو سرعت چشمک زدن افزايش مي يابد// if (Number == 11) { d = d * 1.5; delay(500); } //در صورتي که کليد مربع # از کيپد فشار داده شد و در واقع عدد ما برابر 11 بود طبق دستور روبرو سرعت چشمک زدن کاهش مي يابد// for (i = 0; (i < Number) & (Number != 10) & (Number != 11) & (Number != 12); i++) //روبرو به تعداد عدد وارد شده در کيپد تکرار مي شود و دستورات درون ان اجرا مي شوند for حلقه// { digitalWrite(A0, 1); //ما به ان متصل است LED میکرو که C يک کردن پين 0 از پورت// delay(d); //ايجاد تاخير// digitalWrite(A0, 0); //ما به ان متصل است LED میکرو که C صفر کردن پين 0 از پورت// delay(d); //ايجاد تاخير// } } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می توانید در قسمت نظرات مطرح کنید. از انتهای مطلب نیز می توانید فایل های آردوینو و شبیه سازی پروتئوس برای این پروژه را دانلود کنید.
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…
سلام ، تازه با سایت شما آشنا شدم ، مطالب و پروژه های خوبی رو ارائه می دیدید و سایت خیلی آموزنده ایی می باشد ممنونم از شما ، فقط اینکه هر چی گشتم پروژه ایی که با ماژول Sim800L و یا ماژول های RF باشه پیدا نکردم ، لطفاً پروژه ایی با ماژول Sim800L پیاده سازی کنید مثلاً کنترل وسایل برقی با این ماژول توسط SMS که طرفداران و کاربردهای زیادی هم دارد.
سپاس از شما.