در این پست از سایت اِمیک, یک پروژه ساده به نام پروژه آردوینو شمارنده LED با کلید افزایشی و کاهشی قرار داده شده است. در واقع این پروژه یک شمارنده با استفاده از LED می باشد که روشن و خاموش شدن این LED ها توسط دو کلید فشاری که در پروژه تعبیه شده انجام می شود. این پروژه با استفاده از برد آردوینو UNO انجام شده و در ادامه در مورد این پروژه بیشتر توضیح خواهم داد. در زیر شماتیک این پروژه ساده ولی بسیار آموزنده را مشاهده می کنید:

قبلا نیز همین پروژه را با استفاده از میکروکنترلر AVR در سایت قرار داده بودم که برای مشاهده آن پست می توانید اینجا کلیک کنید.
همانطور که مشاهده می کنید, ما در این پروژه از برد آردوینو UNO استفاده کرده ایم. از دو عدد کلید فشاری نیز استفاده شده که به پایه های A0 و A1 برد آردوینو متصل شده اند. در این پروژه شمارنده, ما از 8 عدد LED استفاده کرده ایم که این LED ها به پایه های شماره 0 تا 7 برد آردوینو متصل شده اند. هر کدام از LED ها با یک مقاومت سری شده است, این مقاومت ها برای محدود کردن جریان LED ها و جلوگیری از آسیب به آنها می باشند.
این پروژه دارای دو کلید افزایشی و کاهشی به نام های Up و Down می باشد. با هر بار فشار دادن کلید Up ال ای دی های متصل به پایه های 0 تا 7 برد آردوینو, یک به یک و به ترتیب روشن می شوند. با هر بار فشار دادن کلید Down ال ای دی های متصل به پایه های 0 تا 7 برد آردوینو, یک به یک و به ترتیب خاموش می شوند. در انتهای مطلب می توانید کلیپ شبیه سازی این پروژه را مشاهده کنید. برای تغذیه این پروژه می توانید از پایه 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 |
/////////// WWW.EMIC.IR /////////// void setup() { pinMode(A0, INPUT_PULLUP); //در خط روبرو و چند خط زیر ورودی ها و خروجی های مشخض شده اند// pinMode(A1, INPUT_PULLUP); pinMode(0, OUTPUT); pinMode(1, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); } void loop() { int i = 0; //تعریف متغیر برای استفاده در برنامه// while (1) { const int Up = digitalRead(A0); //اردوینو A0 که مقدار ان برابر است با پین Up تعریف متغیر// const int Down = digitalRead(A1); //اردوینو A1 که مقدار ان برابر است با پین Down تعریف متغیر// if (Up == 0) { //روبرو می شود if فشار داده شود وارد شرط Up در صورتي که کليد// digitalWrite(i, 1); //های متصل به پین های 0 تا 7 برد اردوینو را به ترتیب روشن می کند LED یکی از if دستور روبرو با هر بار اجرای شرط// delay(500); //ایجاد 0.5 ثانیه تاخیر// i++; //یک واحد اضافه می شود i به متغیر// if (i > 7) {i = 7;} //از عدد 7 بیشتر شد ان را دوباره برابر عدد 7 می کند i در صورتی که متغیر// } if (Down == 0) { //روبرو می شود if فشار داده شود وارد شرط Down در صورتي که کليد// digitalWrite(i, 0); //های متصل به پین های 0 تا 7 برد اردوینو را به ترتیب خاموش می کند LED یکی از if دستور روبرو با هر بار اجرای شرط// delay(500); //ایجاد 0.5 ثانیه تاخیر// i--; //یک واحد کم می شود i از متغیر// if (i < 0) {i = 0;} //از عدد 0 کمتر شد ان را دوباره برابر عدد 0 می کند i در صورتی که متغیر// } } } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می توانید در قسمت نظرات مطرح کنید. از انتهای مطلب نیز می توانید فایل های آردوینو و شبیه سازی پروتئوس برای این پروژه را دانلود کنید.
کلیپ شبیه سازی پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…





درود بر شما
جسارتا یک باگ کوچولو در برنامه وجود داره
اگر فزایش(up) بدید اما نه تا آخرین ال ای دی (مثلا فقط ۴تا از ال ای دی ها رو روشن کنید)بعد بخواین کاهش(down) بدید با اولین کاهش اتفاقی رخ نمیدهد,باید دوبار دکمه پایین رو فشار بدید تا کاهش صورت بپذیره
لطفاً در صورت امکان این باگ رو برطرف بفرمائید،چون برنامه ی شما بشدت کاربردی هست
یک دنیا سپاس از مهر شما 🌹
سلام میخواستم بدونم input_pullup برای چی بکار میره و کارکردش برای چیه؟
سلام, مقاومت پول آپ را برای پایه مورد نظر فعال می کند. یعنی آن پایه را در حالت عادی یک منطقی می کند و ما برای تغییر وضعیت آن پایه باید آن را صفر کنیم.
سلام چه تفاوتی میکنه اگه به جای اینکه دکمه ها رو به پرت های آنالوگ وصل کنیم به پرت دیجیتال وصل کنیم؟
سلام, می توانید به پین های دیجیتال هم متصل کنید فقط در برنامه پین های جدید را مشخص کنید
بله فقط میخواستم ببینم تفاوتش چیه؟