در این پست از سایت اِمیک, پروژه آردوینو راه اندازی کی پد 4 در 4 قرار داده شده است. برای نمایش اعداد و حروف کی پد, از یک LCD کاراکتری استفاده شده است. این پروژه بسیار ساده ولی در عین حال بسیار کاربردی است. در ادامه در مورد این پروژه بیشتر توضیح خواهم داد.
قبلا نیز همین پروژه را با استفاده از میکروکنترلر AVR در سایت قرار داده بودم که برای مشاهده ان پست می توانید اینجا کلیک کنید. همچنین برای مشاهده پست راه اندازی کی پد 3 در 4 با برد اردوینو می توانید اینجا کلیک کنید.
در زیر تصویر یک کی پد 4 در 4 فلت را مشاهده می کنید که ترتیب پایه های ان نیز مشخص شده است:
شماتیک پروژه آردوینو راه اندازی کی پد 4 در 4 با LCD کاراکتری به صورت زیر است:
همانطور که مشاهده می کنید, ما در این پروژه از برد اردوینو UNO استفاده کرده ایم. همچنین از یک کی پد 4 در 4 و یک LCD کاراکتری 2 در 16 نیز استفاده شده است.
کی پد به پین های 0 تا 7 برد اردوینو متصل شده است. برای تشخیص پایه های کی پد خود از تصویر اول که ترتیب پایه های کی پد مشخص است استفاده کنید. پایه R4 کی پد به پین 0, پایه R3 به پین 1, پایه R2 به پین 2, پایه R1 به پین 3, پایه C1 به پین 4, پایه C2 به پین 5, پایه C3 به پین 6 و پایه C4 به پین 7 از برد اردوینو UNO متصل می شود.
LCD کاراکتری نیز به پین های A0 تا A5 برد اردوینو متصل شده است. پتانسیومتر RV1 برای تنظیم کنتراست یا میزان روشنایی LCD کاراکتری می باشد.
عملکرد پروژه به این صورت است که با فشار دادن هر کدام از کلیدهای کی پد, عدد یا حرف مربوط به ان کلید روی LCD نمایش داده می شود. با فشار دادن کلید ستاره * نیز LCD پاک می شود. در انتهای مطلب می توانید کلیپ تست عملی پروژه را مشاهده کنید.
تغذیه پروژه بالا را می توانید از خود برد اردوینو بگیرید, به این صورت که برد اردوینو را با استفاده از اداپتور راه اندازی کنید و از پایه های 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 48 49 50 51 52 53 |
//////// WWW.EMIC.IR //////// #include <LiquidCrystal.h> //معرفی کتابخانه ال سی دی کاراکتری// LiquidCrystal lcd(A5, A4, A3, A2, A1, A0); //تابع زیر مشخص می کند که کدام پین های اردوینو به ال سی دی متصل شود// char key; //تعریف متغیر برای استفاده در برزنامه// char 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'; if (!digitalRead(7)) return 'A'; 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'; if (!digitalRead(7)) return 'B'; 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'; if (!digitalRead(7)) return 'C'; digitalWrite(0, 0); digitalWrite(1, 1); digitalWrite(2, 1); digitalWrite(3, 1); if (!digitalRead(4)) return '*'; if (!digitalRead(5)) return '0'; if (!digitalRead(6)) return '#'; if (!digitalRead(7)) return 'D'; return 'N'; //را بر مي گرداند N در صورت فشار ندادن هيچ کليدي کاراکتر// } void setup() { pinMode(0, OUTPUT); //پین های 0 تا 3 از برد اردوینو خروجی شده اند و پین های 4 تا 7 نیز ورودی شده اند. این پین ها به کی پد متصل می شوند// pinMode(1, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); pinMode(6, INPUT_PULLUP); pinMode(7, INPUT_PULLUP); lcd.begin(16, 2); //پیکره بندی ال سی دی کاراکتری// } void loop() { do //بررسی شود while استفاده شده چون لازم است که ابتدا يک بار کي پد اسکن شود و در تکرار هاي بعدي شرط do while از حلقه// key = key_pad(); //می ریزد key کي پد را اسکن مي کند و کاراکتر خوانده شده را درون متغير key_pad دستور روبرو با فراخواني تابع// while (key == 'N'); //بود که به معني فشار ندادن هيچ دکمه اي از کي پد است برنامه متوقف مي شود و چيزي روي ال سي دي نمايش داده نمي شود N برابر کاراکتر key در صورتي که متغير// lcd.print(key); //دستور روبرو کاراکتر کلید فشار داده شده را روی ال سی دی نمایش می دهد// if (key == '*') //شده و ال سی دی پاک می شود if در صورتی که کاراکتر * را فشار دهیم وارد شرط// { lcd.clear(); } delay(350); //ايجاد 350 ميلي ثانيه تاخير// } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می توانید در قسمت نظرات مطرح کنید. از انتهای مطلب نیز می توانید فایل های اردوینو و شبیه سازی پروتئوس برای این پروژه را دانلود کنید.
کلیپ تست عملی پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…