اتصال صفحه کلید به آردوینو Arduino
در یک صفحه کلید (کیپد) استاندارد کلیدهای اصلی بصورت X-Y ماتریکس قرار گرفته اند که در حالت معمول بصورت ردیفی و ستونی به یکدیگر متصل هستند. اگر یک صفحه کلید، 12 کلید داشته باشد این صفحه کلید بصورت 3 ستون 4 ردیفی به یکدیگر متصل می شوند و یک صفحه کلید 16 کلیدی بصورت 4 ردیف و 4 ستون به یکدیگر متصل می شوند. در این پست از مبحث آموزش آردوینو می خواهیم شما را با چگونگی اتصال یک صفحه کلید به برد آردوینو Arduino Uno و نحوه برنامه نویسی آن آشنا کنیم. شکل زیر ساختمان داخلی یک صفحه کلید (کی پد) 4*3 را نشان می دهد.
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
صفحه کلید فلت ماتریسی مدل 4×3 | 1 عدد |
برد بورد (پروجکت برد) مدل GL | 1 عدد |
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی) | 1 عدد |
صفحه کلید
این پروژه برای کمک به اتصال یک صفحه کلید (کیپد) به برد آردوینو طراحی شده است. نقشه ارائه شده در تصویر زیر ساختار داخلی و ورودی های یک صفحه کلید 3*4 را نشان می دهند. طراحی این نقشه ها برای راهنمایی شما در استفاده آسان از صفحه کلید ها و اتصال آن به انواع میکروکنترلرها و بردهای آموزشی و صنعتی است. در زیر اطلاعاتی بصورت متن وجود دارد که چگونگی نحوه اتصال پین های صفحه کلید را بیان می کند، ستونهای صفحه کلید (کی پد) C1-C2-C3 که به پینهای 5-1-3 متصل هستند و ردیف های صفحه کلید R1-R2-R3-R4 که به پینهای 4-6-7-2 وصل شده اند.
با توجه به تصویر زیر می توانید به راحتی عملکرد صفحه کلید را درک کنید، مثلا برای یافتن کلید 0 ما تنها به پایه های 1 و 4 صفحه کلید نیاز داریم و یا برای یافتن کلید 4 به پایه های 3 و 7 نیازمندیم، حالا می توانید معنی اطلاعات مشخص شده مورد استفاده در برنامه میکروکنترولر را متوجه شوید.
نحوه اتصال پایه های صفحه کلید به آردوینو Arduino
1 2 3 4 5 6 7 8 |
Keypad pin 1 to Arduino digital 3 //C2 Keypad pin 2 to Arduino digital 5 //R1 Keypad pin 3 to Arduino digital 2 //C1 Keypad pin 4 to Arduino digital 8 //R4 Keypad pin 5 to Arduino digital 4 //C3 Keypad pin 6 to Arduino digital 7 //R3 Keypad pin 7 to Arduino digital 6 //R2 |
برای اتصال ساده تر صفحه کلید به مدارات خود در پروژه های آردوینو بهتر است ایتدا اطلاعاتی در مورد نحوه ساخت آن داشته باشید، چراکه در برخی از صفحه کلیدها ترتیب پایه ها متفاوت می باشد، اگر صفحه کلید شما متفاوت است می توانید با بدست آوردن اطلاعاتی شامل نوع صفحه کلید و کاربرد آن خطوط اتصالی آنرا بدست آورید و اگر نیاز به تغییر دادن پین های ردیفی و ستونی دارید این تغییرات را در تعداد آنها در برنامه اعمال کنید. برای این کار شما باید تعداد پین های اضافی صفحه کلید را که به آردوینو متصل کرده اید، در برنامه میکروکنترلر در قسمت پین های ردیفی و ستونی وارد کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include “Keypad.h” // keypad type definition const byte ROWS = 4; //four rows const byte COLS = 3; //three columns char keys[ROWS][COLS] = { {‘1′,’2′,’3’}, {‘4′,’5′,’6’}, {‘7′,’8′,’9’}, {‘*’,’0′,’#’} }; byte rowPins[ROWS] = {5, 6, 7, 8}; //connect to the row R1-R4 pinouts of the keypad byte colPins[COLS] = {2, 3, 4}; //connect to the column C1-C3 pinouts of the keypad |
پروژه ساخت قفل رمزی با آردوینو توسط صفحه کلید
برای آشنایی هر چه بهتر شما با نحوه اتصال صفحه کلید به آردوینو، یک پروژه آماده کرده ایم که در آن شما باید یک رمز ورود جهت باز و بسته کردن قفل وارد نمائید. برای تست پروژه بعد از انجام اتصالات و پروگرام کردن برنامه زیر بر روی میکروکنترلر avr، جهت وارد کردن رمز عبور ابتدا کلید ستاره * و سپس شماره و یا رمز خود را وارد کنید و در پایان جهت تایید رمز وارد شده کلید پنجره # را بر روی صفحه کلید فشار دهید.
برنامه آردوینو در نرم افزار آردوینو
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
#include “Keypad.h” const byte ROWS = 4; // four rows const byte COLS = 3; // three columns char keys[ROWS][COLS] = { {‘1′,’2′,’3’ }, {‘4′,’5′,’6’ }, {‘7′,’8′,’9’ }, {‘*’,’0′,’#’ } }; byte rowPins[ROWS] = {5, 6, 7, 8}; byte colPins[COLS] = {2, 3, 4}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); char KEY[4] = {‘1′,’2′,’3′,’4’}; // default secret key char attempt[4] = {0,0,0,0}; int z=0; void setup() { Serial.begin(9600); } void correctKEY() // do this if the correct KEY is entered { Serial.println(” KEY ACCEPTED…”); } void incorrectKEY() // do this if an incorrect KEY is entered { Serial.println(“KEY REJECTED!”); } void checkKEY() { int correct=0; int i; for ( i = 0; i < 4 ; i++ ) { if (attempt[i]==KEY[i]) { correct++; } } if (correct==4) { correctKEY(); } else { incorrectKEY(); } for (int zz=0; zz<4; zz++) // clear previous key input { attempt[zz]=0; } } void readKeypad() { char key = keypad.getKey(); if (key != NO_KEY) { switch(key) { case ‘*’: z=0; break; case ‘#’: delay(100); // added debounce checkKEY(); break; default: attempt[z]=key; z++; } } } void loop() { readKeypad(); } |
در صورتی که بعد از کامپایل کردن برنامه اخطاری مبنی بر “keypad does not name a type” مشاهده کردید، مشکلی نیست و می توانید به راحتی، تنها با اضافه کردن کتابخانه صفحه کلید به پروژه خود، این اخطار را رفع نمائید. می توانید برای دانلود برنامه و کتابخانه صفحه کلید، از لینک دانلود قرار گرفته در انتهای پروژه استفاده کنید.
برای ساخت این پروژه پیشنهاد می کنیم از صفحه کلیدهای تلفن های دیجیتالی استفاده کنید، چراکه این صفحه کلیدها در بازار بسیار رایج بوده و به راحتی در همه جا قابل خرید می باشد.
در انجام برخی پروژه ها نیاز است تا از کیبوردهایی با تعداد کلید ها و سطر و ستون های متفاوت استفاده نمائیم، که در این موارد برای یافتن پایه های صفحه کلید پیشنهاد می شود از یک مولتی متر آنالوگ و یا دیجیتالی استفاده کنید. برای انجام اینکار کافی است مولتی متر را بر روی قسمت تست دیود یا تست اتصالات قرار دهید و سپس با برسی پایه ها طبق نقشه های ارائه شده در تصاویر بالا اقدام به یافتن پایه های سطر و ستون نمائید.
بسیار عالی
سلام.ببخشید من می خوام با ماژول gm800 و همین صفحه کلید و اردوینو امکان زنگ زدن رو به اردوینو بدم. می شه راهنمایی کنید چه کدی را باید بنویسم؟ ممنون
ببخشید منظورم ماژول sim800 بود
سلام دوست عزیز
به دلیل حجم کاری بالا و سوالات زیادی که همه روزه توسط کاربران مطرح می شود، امکان پاسخگویی به سوالات مرتبط با توسعه و یا شخصی سازی پروژه به دلیل زمانبر بودن آن، برایمان امکانپذیر نیست.