در بسیاری از جلسات اداری، سازمانی و… رای گیری یکی از مهم ترین روش ها برای تصمیم گیری است. به کمک رای گیری می توان از نظر جمعی برای اجرای یک فرایند بهره برد. در صورتیکه تعداد افراد رای دهنده زیاد باشد؛ شمارش دستی بسیار مشکل خواهد بود. این روش خطاهای بسیار داشته و ممکن است تعداد آرا به درستی شمرده نشود. از طرف دیگر، در صورتیکه تعداد افراد شرکت کننده در رای گیری زیاد باشد، شمارش دستی آرای بسیار زمان بر خواهد بود. در این آموزش به کمک برد آروینو UNO اقدام به طراحی و پیاده سازی یک سیستم رای گیری دیجیتال می نماییم. به کمک این سیستم به سادگی و بدون نیاز به دخالت انسان در شمارش آرا، رای افراد ثبت شده و در نهایت روی نمایشگر نمایش داده خواهد شد. در ادامه ساخت کیت اعلام نشت گاز با مرجع تخصصی آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.
مکانیزم عملکرد سیستم رای گیری آردوینو
سیستم رای گیری جهت ثبت آرا، از برد آردوینو UNO بهره می برد. در این سیستم تعدادی از پایه های آردوینو به عنوان ورودی تعریف شده اند. این ورودی ها به عنوان کلید جهت فشرده شدن و ثبت رای در سیستم کاربرد خواهند داشت. از طرف دیگر، یک کلید به عنوان تایید ثبت رای تعریف شده است. این کلید در اختیار مدیر جلسه بوده و تا زمانیکه این کلید توسط وی فشرده نشود، سایر افراد امکان ثبت رای نخواهند داشت. به طور مشابه، تا زمانیکه این کلید توسط مدیر جلسه فشرده شده است، افراد حق ثبت رای خواهند داشت.
پس از آشنایی با مکانیزم عملکرد، نوبت به بررسی نقش قطعات در پروژه می رسد. قسمت بعد مربوط به این موضوع خواهد بود.
آردوینو، نمایشگر و سیستم رای گیری
در پروژه پیاده سازی سیستم رای گیری، یک برد پردازشگر مرکزی، تعدادی کلید جهت ثبت رای و یک نمایشگر برای نمایش تعداد آرا ثبت شده تعبیه شده است. در این پروژه، برای برد آردوینو تعدادی ورودی تعریف شده که این ورودی ها به کلیدها متصل هستند. زمانیکه که این کلیدها فشار داده شوند، رای افراد ثبت خواهد شد. البته این مورد به شرطی ممکن است که ریسس جلسه با فشردن کلید مخصوص، امکان ثبت رای را فراهم نماید. در ادامه پس از ثب آرا، نتیجه بر روی نمایشگر سون سگمنت نمایش داده خواهد شد. در این پروژه ما از ماژول نمایشگر TM1637 استفاده می کنیم. این ماژول به کمک تنها ۲ پایه، می تواند ۴ دیجیت را راه اندازی نماید. این دو پایه از نوع سریال I2C بوده که جهت راه اندازی و کار با این ماژول، کتابخانه تحت آردوینو توسعه یافته است.
نصب کتابخانه TM1637
همانطور که اطلاع دارید، کتابخانه ها یکی از ابزارهای کلیدی و کاربردی در برنامه نویسی به شمار می روند. به کمک این ابزار، می توانیم توابع نوشته شده در فایلهایی به نام کتابخانه ذخیره کرده و سپس در پروژه های متعدد از آن استفاده کنیم. همانطور که پیشتر گفته شد، برای راه اندازی و کار با ماژول TM1637 کتابخانه توسعه داده شده است. برای استفاده از این کتابخانه، ابتدا باید آن را نصب کنیم. برای نصب کتابخانه در محیط آردویینو، ابتدا مطابق تصویر زیر بر روی گزینه Tools و سپس Manage Libraries کلیک کنید.
پس از کلیک بر روی گزینه Manage Libraries، در صفحه ظاهر شده، در قسمت کادر جستجو، عبارت SevenSegmentTM1637.h را جستجو نموده و کتابخانه مشخص شده در تصویر زیر را نصب نمایید.
شماتیک و اتصالات پروژه سیستم رای گیری
پس از بررسی نقش قطعات در پروژه، نوبت به شماتیک و اتصالات می رسد. ابتدا به تصویر زیر که فرم و شمای کلی اتصالات را نمایش می دهد؛ دقت کنید.
مطابق تصویر فوق، اتصالات را به شکل زیر ادامه می دهیم.
اتصالات نمایشگر و آردوینو
- اتصال پایه VCC نمایشگر به ۵ ولت آردوینو
- اتصال پایه GND نمایشگر به GND اردوینو
- اتصال پایه DIO نمایشگر به پایه ۸ آردوینو
- اتصال پایه CLK نمایشگر به پایه ۷ آردوینو
اتصالات کلیدها به آردوینو
- اتصال ۴ کلید به ترتیب به پایه های ۲،۳،۴ و ۵ به طوریکه یک پایه به پایه های آردوینو و پایه دیگر به GND متصل گردد.
کدهای پروژه سیستم رای گیری
پس از اجرای اتصالات، نوبت به کدهای پروژه می رسد. این کدها را بر روی برد خود آپلود کنید.
#include "SevenSegmentTM1637.h" //اضافه کردن کتابخانه نمایشگر const byte PIN_CLK = 7; // تعریف پایه کلاک نمایشگر const byte PIN_DIO = 8; // تعریف پایه دیتا نمایشگر SevenSegmentTM1637 display(PIN_CLK, PIN_DIO); //ایجاد شی و ارسال پارامترها از طریق تابع سازنده #define vote_master 2 //پایه مربوط به کلید تایید رای #define vote_num1 3 //کلید رای شماره ۱ #define vote_num2 4 //کلید رای نفر شماره ۲ #define vote_num3 5 //کلید رای نفر شما ۵ void setup() { // put your setup code here, to run once: Serial.begin(115200); //تعریف پایه های مربوط به کلید به صورت ورودی و پول آپ شده با مقاومت داخلی pinMode(vote_master, INPUT_PULLUP); pinMode(vote_num1, INPUT_PULLUP); pinMode(vote_num2, INPUT_PULLUP); pinMode(vote_num3, INPUT_PULLUP); display.begin(); // راه اندازی نمایشگر display.setBacklight(100); //تعیین نور پس زمینه نمایشگر روی ۱۰۰ درصد display.print("INIT"); delay(1500); display.clear(); //پاک کردن صفحه نمایشگر } void loop() { int vote = 0; //متغیر جهت شمارش آرا bool vote_num1_vote = false, vote_num2_vote = false, vote_num3_vote = false; //این متغیرها برای هر کلید تعریف شده اند تا رای گیری برای ه رکلید تنها یکبار ثبت شدود. //اگر چنین متغیرهایی تعریف نگردند، درون حلقه تکرار while کلیدها چندین بار خوانده می شوند. while (digitalRead(vote_master) == LOW) { //تا زامانیکه کلید master فشرده شده رای گیری در جریان است. if (digitalRead(vote_num1) == LOW && vote_num1_vote == false) {//در صورتیکه کلید فشرده شده و قبلا کلید خوانده نشده باشد. vote++; vote_num1_vote = true; //فلگ جهت جلوگیری از خواندن مجدد delay(500); } //**************************************************************** if (digitalRead(vote_num2) == LOW && vote_num2_vote == false) { //در صورتیکه کلید فشرده شده و قبلا کلید خوانده نشده باشد. vote++; vote_num2_vote = true; //فلگ جهت جلوگیری از خواندن مجدد delay(500); } //********************************************************* if (digitalRead(vote_num3) == LOW && vote_num3_vote == false) { //در صورتیکه کلید فشرده شده و قبلا کلید خوانده نشده باشد. vote++; vote_num3_vote = true;//فلگ جهت جلوگیری از خواندن مجدد delay(500); } display.print(vote); } }
اجرای پروژه سیستم رای گیری
پس از برقراری اتصالات و آپلود کدها، نوبت به اجرای برنامه می رسد. اجرای پروژه بسیار ساده است. پس از اجرای کدها، کلید مربوط به MASTER را فشار دهید. در این پروژه برای رای گیری ۳ کلید تعبیه شده که می توانند در رای گیری شرکت کنند. توجه کنید که MASTER خود در رای گیری نمی تواند شرکت کند. پس از اینکه افراد رای خود را ثبت کردند، با رها کردن کلید MASTER می توانید تعداد آرا ثبت شده را روی نمایشگر مشاهده کنید.
لوازم مورد نیاز
جمع بندی
سیستم های رای گیری یکی از مهم ترین کاربردها را در ادارات و مان های مختلف دارد. به کمک این سیستم بدون نیاز به شمردن آرا، می توان رای های ثبت شده از حاضرین را شمرد. بدین ترتیب بدون خطا و تاخیر، می توان آرا ثبت شده توسط حاضران جلسه را محاسبه نمود. در این آموزش به کمک برد آردوینو UNO و ماژول نمایشگر TM1637، اقدام به طراحی و پیاده سازی یک سیستم رای گیری دیجیتال پرداختیم. در این سیستم هرگاه که رییس جلسه دکمه رای گیری را فشار دهد، افراد حاضر در جلسه می توانند رای خود را ثبت کنند. روال رای گیری تا زمانیکه رییس جلسه دکمه را فشار داده، ادامه خواهد داشت. پس از اتمام رای گیری، حاضران می توانند تعداد آرا ثبت شده را بر روی نمایشگر مشاهده نمایند.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.