قبلا راه اندازی سون سگمنت را با اردوینو اموزش داده بودم که می تونید این پست را در اینجا مشاهده کنید و در ان پست توضیحات کامل در مورد سون سگمنت و نحوه برنامه نویسی ان در اردوینو داده شد که می تونید مطالعه کنید .
در این پست ما یک سون سگمنت تکی را با استفاده از برد اردوینو uno راه اندازی می کنیم. قطعات اصلی این پروژه علاوه بر برد اردوینو یونو و سون سگمنت, شامل دو کلید هم می باشد که به صورت افزایشی و کاهشی عمل می کنند. عملکرد پروژه به این صورت است که در ابتدا با اتصال تغذیه, روی سون سگمنت عدد 0 نمایش داده می شود و با فشار دادن کلید افزایشی عدد روی سون سگمنت یکی اضافه می شود و با فشار دادن کلید کاهشی یکی کاهش می یابد.

همانطور که گفته شد با فشار دادن هر کدام از کلیدها عدد روی سون سگمنت یکی افزایش یا کاهش می یابد, همانطور که می دانید سون سگمنت تکی می تواند اعداد 0 تا 9 را نمایش دهد به همین علت در پروژه بالا زمانی که عدد در حال افزایش از 9 بیشتر شد, به طور خودکار عدد دوباره صفر می شود و زمانی هم که در حال کاهش عدد هستیم عدد از 0 کمتر نمی شود.
شماتیک پروژه شمارنده سون سگمنت با کلید افزایشی و کاهشی :

همانطور که در بالا می بینید این پروژه شماتیک ساده ای دارد و تنها نکته ان دو مقاومت R1 و R2 هستند که برای پول اپ (Pull-up) کردن کلید ها استفاده شده اند. در صورتی که از مقاومت ها استفاده نکنیم در زمانی که کلیدها فشار داده نشده اند وضعیت پین های 12 و 13 اردوینو که ورودی هستند مشخص نیست به همین خاطر لازم است که پین های 12 و 13 اردوینو را از طریق دو مفاومت R1 و R2 به مثبت تغذیه متصل کنیم.
توجه کنید که در این پروژه ما از سون سگمنت کاتد مشترک استفاده کرده ایم. در صورتی که با پین های سون سگمنت اشنا نیستید حتما پست معرفی شده در ابتدای مطلب را مطالعه کنید .
برنامه :
|
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 48 49 50 51 52 53 54 55 56 57 58 59 |
/////////// WWW.EMIC.IR /////////// byte seg[10][7] = { //در زیر ما یک ارایه تعریف کرده ایم که شامل معادل باینری اعداد 0 تا 9 برای سون سگمنت کاتد مشترک است// { 1, 1, 1, 1, 1, 1, 0 }, // = 0 { 0, 1, 1, 0, 0, 0, 0 }, // = 1 { 1, 1, 0, 1, 1, 0, 1 }, // = 2 { 1, 1, 1, 1, 0, 0, 1 }, // = 3 { 0, 1, 1, 0, 0, 1, 1 }, // = 4 { 1, 0, 1, 1, 0, 1, 1 }, // = 5 { 1, 0, 1, 1, 1, 1, 1 }, // = 6 { 1, 1, 1, 0, 0, 0, 0 }, // = 7 { 1, 1, 1, 1, 1, 1, 1 }, // = 8 { 1, 1, 1, 0, 0, 1, 1 } // = 9 }; int a = 0; void setup() { pinMode(0, OUTPUT); //از خط 18 تا 24 ما پین هایی از برد اردوینو که قرار است به سون سگمنت متصل شوند را خروجی کرده ایم// pinMode(1, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(12, INPUT); // ورودی کردن پین 12 اردوینو برای اتصال به کلید افزایشی // pinMode(13, INPUT); // ورودی کردن پین 13 اردوینو برای اتصال به کلید کاهشی // } //از خط 29 تا 36 ما یک تابع تعریف کرده ایم که با فراخوانی ان عدد مورد نظر را روی سون سگمنت نمایش می دهد// void sevenseg(int n ) { for (int i = 0; i < 7; i++) { digitalWrite(i, seg[n][i]); } } void loop() { const int key1 = digitalRead(12); //که مقدار ان برابر است با پین 12 اردوینو key1 تعریف متغیر// const int key2 = digitalRead(13); //که مقدار ان برابر است با پین 13 اردوینو key2 تعریف متغیر// sevenseg(a); //که در شروع برابر 0 است روی سون سگمنت a نمایش متغیر// if (key1 == 0) //می شود if در صورتی که کلید 1 فشار داده شود وارد شرط// { a = a + 1; //یکی اضافه می کند a به متغیر// if (a > 9) { a = 0; } //از 9 بیشتر شد ان را 0 می کند a در صورتی که// sevenseg(a); //روی سون سگمنت a نمایش مقدار متغیر// delay(1000); //تاخیر به مدت 1 ثاتیه// } if (key2 == 0) //می شود if در صورتی که کلید 2 فشار داده شود وارد شرط// { a = a - 1; //یکی کم می کند a از متغیر// if (a < 0) { a = 0; } //از 0 کمتر شود a دستور روبرو نمی گذارد متغیر// sevenseg(a); //روی سون سگمنت a نمایش مقدار متغیر// delay(1000); //تاخیر به مدت 1 ثاتیه// } } |
توضیحات کامل برنامه نوشته شده فقط دلیل استفاده از delay در خط های 49 و 57 بخاطر این است که زمانی که ما کلید را فشار می دهیم فقط یک واحد به عدد روی سون سگمنت اضافه شود, در صورتی که از delay در برنامه استفاده نشود ممکن است با هر فشار کلید چند واحد به عدد اضافه شود.
اگر سوالی داشتید می تونید در قسمت نظرات مطرح کنید. اگر با برنامه نویسی اردوینو اشنا نیستید مطالب زیر را مطالعه کنید :
- برای اشنایی با دستورات مهم برنامه نویسی اردوینو اینجا کلیک کنید
- برای اشنایی با نحوه راه اندازی و دستورات سون سگمنت اینجا کلیک کنید
- برای اشنایی با نحوه پروگرام کردن برد اردوینو (ریختن برنامه روی برد) اینجا کلیک کنید
کلیپ تست عملی پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…





سلام برای ساخت مدار شمارنده افزایشی و کاهشی تا شماره ۴۶۵ چکار باید کرد و چی لازم داره با تشکر
سلام خسته نباشید تشکر میکنم از توضیحات واضح کامل شما دوست عزیز
خواهشمند اگه امکان داره کمک کنید میخواهم چهار عدد ۷سگمنت سه تایی رو از ۰ تا ۹۹۹ نمایش بدم برای هر کدام دو کلید افزایش و کاهش ممنون میشوم
سلام اگه بخوام پایه های خروجی روی برد رو عوض کنم مثلا از 2 تا8 چیکار باید بکنم
اخه وقتی بجای 0 تا 6 ,2تا 8 رو قرار میدم درست کار نمیکنه نمیدونم چطوری دستور فعالسازی هر پین رو دادین؟
سلام, علاوه بر pinMode ها که باید تغییر بدید, دستور for هم باید تغییراتی در اون اعمال بشه. در صورتی که ضروری نیست از همین پایه ها استفاده کنید چون برنامه بر اساس این پایه ها نوشته شده
سلام ببخشید اگه بخوایم ی شمارنده هم ب این برنامه اضاف کنیم ک هر ثانیه “یا” با فشردن کلید بشماره باید چطوری ب این برنامه اضافش کنیم؟؟؟؟ دوتا سون سگمنت ک یکی اش از 0 تا 9 رو بره و برگرده و سون سگمنت دیگه فقط شمارنده باشه
سلام, درست متوجه نشدم که چکاری باید انجام بشه یک پروژه دیگه هم قبلا با سون سگمنت قرار داده بودم “اینجا کلیک کنید” که یک شمارنده 0 تا 9 بود می تونید مطالعه کنید