راه اندازی کی پد و نمایشگر 2*16 توسط آردوینو

سلام امیدوارم که ما امروز هم بتوانیم مطالب آموزشی خوبی در اختیارتان قرار دهیم
در آموزش قبلی با هم به راه اندازی LCD پرداختیم که در آن ما حروف را به صورت متحرک در آوردیم
و در این جلسه می خواهیم با هم به آموزش را اندازی LCD کاراکتری وkeypad با آردوینو بپردازیم:
وسایل مورد نیاز راه اندازی کی پد و نمایشگر 2*16 توسط آردوینو :
یک برد آردوئینو(UNO)
یک عدد (LCD 2*16 )
یک عدد (key pad(4*4
یکرعدد برد برد
یک عدد کابل usb چاپگر
تعدادی سیم برای اتصال برد برد به برد UNO
یک عدد پتانسیومتر ویا مولتی ترن 10 کیلو اهم
به یاد داشته باشید این lcd مورد نظر دارای دو ردیف 16 تایی می باشد
همانطور که گفته شده بود پتانسیومتر را فقط برای تنظیم نور صفحه نوشه مان گذاشته ایم
نمای LCD کاراکتری (2*16):

در این تصویر می توان فهمید که چگونه می توانیم پایه های آردوینو به LCD را نشان می دهد در جدول زیر به آن ها می پردازیم
جدول اتصال پایه های آردوئینو به LCD :
نام پین های مربوط به LCD | شماره پایه های متصل به آردوئینو |
VSSیا 1 | GND |
VDDیا2 | VCCیا 5V |
VEیا3 | خروجی پتانسیومتر |
RSیا4 | 7 |
Eیا6 | 8 |
D4یا11 | 9 |
D5یا12 | 10 |
D6یا13 | 11 |
D7یا14 | 12 |
Aیا15 | VCCیا 5V |
Kیا16 | GND |
شمای فنی(4*4)KEYPAD:

جدول چگونه اتصال KEYPAD به آردوئینو:
(ROWS)
پایه های KEYPAD | پایه های LCD |
A | A2 |
B | A3 |
C | A4 |
D | A5 |
(COLUMNS)
پایه های KEYPAD | پایه های LCD |
1 | 2 |
2 | 3 |
3 | 4 |
4 | 5 |
شمای چگونه اتصال LCD و KEYPAD:
همانطور که میدانید و در سری قبل گفته شده بود پتانسیومتر دارای سه پایه می باشد
به دلخواه از سمت چپ یا راست یک کدام را (VCC)و یکی دیگر را (GND ). وپایه مورد نظر وسطی که برای تنظیم نور صفحه نوشته مان میباشد
دستورات راه اندازی LCD و KEYPAD میرویم:
برای دیدن دستورات راه اندازی (LCD)میتوان به لینک آموزش راه اندازی lcd کاراکتری (۱۶*۲) با آردوینو مراجعه کرد.
آشنایی با دستورات را اندازی KEYPAD:
دستور:
include <Keypad.h
این دستور در بالای خط VOID SETUP نوشته میشود این دستور برای فراخوانی ویا اضافه کردن کتابخانه KEYPAD است
مانند کد زیر:
#include <Keypad.h>
دستور:
include <LiquidCrystal.h
این دستور در بالای خط VOID SETUP نوشته میشود این دستور برای فراخوانی ویا اضافه کردن کتابخانه lcdاست
مانند کد زیر:
#include <LiquidCrystal.h>
دستور:
(7,8,9,10,11,12) LiquidCrystal lcd:
این دستور برای معرفی پایه هایی که از LCD به برد آردوئینو متصل شده است
مانند کد زیر:
LiquidCrystal Lcd(7,8,9,10,11,12);
دستور:
(constROWS=4; byte):
این دستور برای معرفی 4 سطرمی باشد که یعنی ما از 4 سطر استفاده میکنیم
مانند کدزیر:
const byte ROWS=4;
دستور:
(CONTS BYTE COLS=4):
این دستور برای معرفی 4ستونمان است یعنی ما از 4 ستونمان استفاده می کنیم
مانند کد زیر:
const byte COLS=4;
دستور:
[CHAR KEYS [ROWS] [COLS:
این دستور برای آن است که نام کلیدهای مورد نظر مان را که می خواهیم استفاده کنیم
به زبان کد بنویسیم
مانند کد زیر:
char keys [ROWS][COLS]={ {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} };
دستور:
(byte rowpins[ROWS]=(A2,A3,A4,A5:
این دستور برای معرفی پایه هایی است که ما از KEYPAD به برد آرددوئینو متصل کرده ایم
مانند کد زیر:
byte rowpins[ROWS]={A2,A3,A4,A5};
دستور:
(byte colpins [cols]={2,3,4,5:
این دستور برای معرفی پایه هایی است که مااز keypad به برد آردوئینو متصل کرده ایم
مانند کد زیر:
byte colpins[COLS]={2,3,4,5};
دستور:
(Keypad kpd = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS):
این دستور برای تعریف keypad است (پورت های ستون/پورت های سطر /ستون /سطرو../)
مانند کد زیر:
Keypad kpd = Keypad (makeKeymap(keys),rowpins,colpins, ROWS, COLS);
دستور:
(;(kpd.setHoldTime (5000):
این دستور برای مقدار زمانی است که ما کلید را فشار می دهیم تا مقداری که داده ایم روی lcd نمایان می شود
مانند کد زیر:
kpd.setHoldTime(5000);
دستور :
(Lcd.begin(16, 2):
این خط مربوط به معرفی lcd2*16 ما به آردوئینو می باشد
مانند کد زیر:
Lcd.begin(16,2);
دستور:
(Lcd.setCursor(0,1):
این خط برای مشخص کردن موقعیت مکانی کلمه ما بر روی lcd است
مانند کد زیر:
Lcd.setCursor(1,0);
دستور
(Lcd.print(robotafzar.ir”):
این دستور برای پرینت کردن جمله مورد نظر خودمان است که lcd چاپ می کند
مانند کد زیر:
Lcd.print("ROBOTAFZAR.COM");
دستور:
char customKey = kpd.getKey :
این دستور در قسمت void loop نوشته می شود ما در این دستور ما یک کاراکتر(char customkey)
تعریف کرده ایم که مساوی kpd قرار داده ایم
مانند کد زیر:
char customKey = kpd.getKey ();
دستور:
( if ( customKey :
این دستور شرطی است که ما برای متغییرمان تعریف کرده ایم
مانند کد زیر:
if ( customKey )
دستور:
( Lcd.print(customKey):
پرینت (customKey )ما است
مانند کد زیر:
Lcd.print(customKey);
دستور:
(String fin = String(customKey):
در این خط ما یک متغییر(fin)تعریف کرده ایم که مساوی کاراکترمان قرار داده ایم
مانند کد زیر:
String fin = String(customKey);
دستور:
(if(fin == “C
در این دستور ما تعریف کردیم که اگر کلمه (c) زده شد دستوراتی که زیر شرطمان است اجرا شود
مانند کد زیر:
if(fin == "C" )
دستور:
Lcd.clear:
با این دستور lcd ما پاک می شود
مانند کد زیر:
Lcd.clear();
برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.
//معرفی کتابخانه کیپد به آردوینو #include <Keypad.h> //معرفی کتابخانه ال سی دی به آردوینو #include <LiquidCrystal.h> //معرفی پایه های ال سی دی به آردوینو LiquidCrystal Lcd(7,8,9,10,11,12); //در کد زیر 4 سطر استفاده کرده ایم const byte ROWS=4; //در کد زیر 4 ستون استفاده کرده ایم const byte COLS=4; //معرفی کلید های کیپد char keys [ROWS][COLS]={ {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; //پایه هایی که ما از کیپد به برد آردوینو متصل کردیم byte rowpins[ROWS]={A2,A3,A4,A5}; //پایه هایی که مااز کیپد به برد آردوینو متصل کردیم byte colpins[COLS]={2,3,4,5}; //سپس دستور زیر را برای معرفی کیپد به برد آردوینو می نویسیم Keypad kpd = Keypad (makeKeymap(keys),rowpins,colpins, ROWS, COLS); void setup() { //دستور زیر مربوط به مقدار زمان فشار دادن کلید های کیپد می باشد kpd.setHoldTime(5000); //معرفی نوعال سی دی به آردوینو Lcd.begin(16,2); //دستور زیر برای مشخص کردن مکان جمله ما در ال سی دی می باشد Lcd.setCursor(1,0); //در دستور زیر جمله ای که میخواهیم در ال سی دی نمایش داده شود را می نوسیم Lcd.print("ROBOTAFZAR.COM"); //دستور زیر برای مشخص کردن مکان جمله ما در ال سی دی می باشد Lcd.setCursor(0,1); //در دستور زیر جمله ای که میخواهیم در ال سی دی نمایش داده شود را می نوسیم Lcd.print("key:"); } void loop() { //در این جا ما یک کاراکتر معرفی کرده ایم که مساوی کی پد قرار داده ایم char customKey = kpd.getKey (); //دستور زیر شرطی می باشد که ما برای کاراکتر خودمان معرفی کرده ایم if ( customKey ){ //جمله مورد نظرمان را پرینت کند Lcd.print(customKey); } //در دستور زیر ما یک نوع متغیر (فین) تعریف کرده ایم String fin = String(customKey); //در دستور زیر ما شرطی را گذاشته ایم که اگر متغیر ما مساوی (سی) قرار گرفت if(fin == "C" ){ // در دستور زیر ما میخواهیم که با زدن کلید(سی)ال سی دی پاک شود Lcd.clear(); //دستور زیر برای مشخص کردن مکان جمله ما در ال سی دی می باشد Lcd.setCursor(1,0); //در دستور زیر جمله ای که میخواهیم در ال سی دی نمایش داده شود را می نوسیم Lcd.print("ROBOTAFZAR.COM"); //دستور زیر برای مشخص کردن مکان جمله ما در ال سی دی می باشد Lcd.setCursor(0,1); //در دستور زیر جمله ای که میخواهیم در ال سی دی نمایش داده شود را می نوسیم Lcd.print("key:"); } }
[hot_posts]
ساخت پروژه ماشین حساب با کمک (KEYPAD/LCD 2*16):
**توجه داشته باشید که تمام وسایل در همین پروژه می باشد و تغییری نداشته**
حالا به سراغ آشنایی به دستورات راه اندازی LCD و KEYPAD میرویم:
برای دیدن دستورات راه اندازی (LCD)میتوان به لینک آموزش راه اندازی lcd کاراکتری (۱۶*۲) با آردوینو مراجعه کرد.
دراین قسمت ما به سراغ چگونه راه اندازی KEYPAD می پردازیم:
دستور:
include <Keypad.h>:
این دستور برای اضافه کردن کتابخاخه keypad به آردوئینو می باشد
مانند کد زیر:
#include <Keypad.h>
دستور:
include <LiquidCrystal.h>:
این دستور برای اضافه کردن کتابخانه lcd به آردوئینو می باشد
مانند کد زیر:
#include <LiquidCrystal.h>
دستور
(7,8,9,10,11,12) LiquidCrystal lcd:
این خط شماره پایه های متصل آردوئینو به lcd می باشد
مانند کد زیر:
LiquidCrystal lcd(7,8,9,10,11,12);
دستور:
long num1,num2:
دراین دستور ما دو متغییر تعریف کرده ایم
مانند کد زیر:
long num1,num2 ;
دستور:
(double total):
double total;
دستور:
(char operation,button):
در این خط ما دو متغییر تعریف کرده ایم
مانند کد زیر:
char operation,button;
دستور:
(constROWS=4; byte):
این دستور برای معرفی 4 سطرمی باشد که یعنی ما از 4 سطر استفاده میکنیم
مانند کد زیر:
const byte ROWS = 4;
دستور:
(CONTS BYTE COLS=4):
این دستور برای معرفی 4ستونمان است یعنی ما از 4 ستونمان استفاده می کنیم
مانند کد زیر:
const byte COLS = 4;
دستور:
[HAR KEYS [ROWS] [COLS]):
این دستور برای آن است که نام کلیدهای مورد نظر مان را که می خواهیم استفاده کنیم
به زبان کد بنویسیم
مانند کد زیر:
char keys[ROWS][COLS] = { {'1','2','3','/'}, {'4','5','6','*'}, {'7','8','9','-'}, {'C','0','=','+'} };
دستور:
(byte rowpins[ROWS]={A2,A3,A4,A5):
این دستور برای معرفی پایه هایی است که ما از KEYPAD به برد آرددوئینو متصل کرده ایم
مانند کد زیر:
byte rowPins[ROWS] = {A2,A3,A4,A5};
دستور:
(byte colpins [cols]={2,3,4,5):
این دستور برای معرفی پایه هایی است که مااز keypad به برد آردوئینو متصل کرده ایم
مانند کد زیر:
byte colPins[COLS] = {2,3,4,5};
دستور:
(Lcd.begin(16, 2):
این خط مربوط به معرفی lcd2*16 )ما به آردوئینو می باشد
مانند کد زیر:
lcd.begin(16,2);
دستور:
(Keypad kpd = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS):
این دستور برای تعریف keypad است (پورت های ستون/پورت های سطر /ستون /سطرو../)
مانند کد زیر:
Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
دستور:
( while(1):
این خط حلقه اول ما می باشد
مانند کد زیر:
while(1)
دستور:
()button= customKeypad. getKey):
در این خط ما متغییر button را مساوی keypad قرار داده ایم
مانند کد زیر:
button = customKeypad.getKey();
دستور:
(if(button==’c:
در این شرط ما متغییرمان را برابر (C) قرار داده ایم
مانند کد زیر :
if (button=='C') { num1=0; num2=0; total=0; operation=0; lcd.clear(); }
دستور:
( if(button>=’0’and button<=’9:
در این شرط ما متغییرمان راازاعداد کوچک تر از صفر و خود صفر وبزرگتر از نه قرار داده ایم
مانند کد زیر:
if (button >='0' && button <='9')
دستور:
(num1=num1*10+(button-‘0’):
اگه مقدار اولیه نباشه مقدار رو میریزه توی متغیر NUM1 و اگه عددی در متغیر باشه اون رو ضربدر ده میکنه تا تبدیل به دهگان
بشه و در آخر عدد جدید رو بعنوان یکان ذخیره میکنه.
مانند کد زیر:
num1 = num1*10 + (button -'0');
دستور:
(Lcd.setCursor(0,0):
این خط برای مشخص کردن موقعیت مکانی کلمه ما بر روی lcd است
مانند کد زیر:
lcd.setCursor(0,0);
دستور:
(Lcd.print(num1):
این دستور متغیر num1 را پرینت می کند
مانند کد زیر:
lcd.print(num1);
دستور:
( if (num1 !=0 && (button==’-‘ || button==’+’ || button==’*’ || button==’/’):
در این شرط ما متغییر num1 را هرچه به جز 0 را هرچی بدهیم متغیر button ما اجرا می کند
مانند کد زیر:
if (num1 !=0 && (button=='-' || button=='+' || button=='*' || button=='/'))
دستور:
(operation = button):
در این خط ما متغییر operationرا مساوی button قرار داده ایم
مانند کد زیر:
operation = button;
دستور:
(lcd.print(operation):
پرینت متغییر operation ما می باشد
مانند کد زیر:
lcd.print(operation);
دستور :
(break):
این دستور برنامه را خارج می کند
مانند کد زیر:
break;
دستور:
if (button ==’C’){break:
در این شرط ما متغییر button ما را مساوی (c) قرار داده ایم که هر زمان کلید (c) زده شد از برنامه خارج می شود
مانند کد زیر:
if (button =='C'){break;}
دستور:
(switch(operation):
سوئئیچ کردن عملیات ها
مانند کد زیر:
switch(operation)
دستور:
(case ‘+’):
این خط عملیات جمع را انجام می دهد
برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.
case '+': total = num1+num2; break;
سورس کامل پروژه:
//معرفی کتابخانه کیپد به آردوینو #include <Keypad.h> //معرفی کتابخانهlcd به آردوینو #include <LiquidCrystal.h> //معرفی پایه های lcd به آردوینو LiquidCrystal lcd(7,8,9,10,11,12); long num1,num2 ; double total; char operation,button; //در کد زیر 4 سطر استفاده کرده ایم const byte ROWS = 4; //در کد زیر 4 ستون استفاده کرده ایم const byte COLS = 4; //معرفی کلید های کیپد char keys[ROWS][COLS] = { {'1','2','3','/'}, {'4','5','6','*'}, {'7','8','9','-'}, {'C','0','=','+'} }; //پایه هایی که ما از کیپد به برد آردوینو متصل کردیم byte rowPins[ROWS] = {A2,A3,A4,A5}; //پایه هایی که ما از کیپد به برد آردوینو متصل کردیم byte colPins[COLS] = {2,3,4,5}; //سپس دستور زیر را برای معرفی کیپد به آردوینو می نویسیم Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); void setup() { //معرفی نوع lcd به آردوینو lcd.begin(16,2); } void loop() { // این دستور برای شرط تکرار ما می باشد while(1) { //این دستور متغیر button را مساوی keypad قرار میدهد button = customKeypad.getKey(); // اگر کاربر می خواهد در هنگام نوشتن شماره اول، مجددا تنظیم مجدد کند if (button=='C') { num1=0; num2=0; total=0; operation=0; lcd.clear(); } // اگر کاربر عددی را فشار داده، 1 کاراکتر در یک زمان از کوجک تر از 0 تا بالاتر از 9 را نشان می دهد if (button >='0' && button <='9') { num1 = num1*10 + (button -'0'); //این خط برای مشخص کردن نوشته بر روی lcd است lcd.setCursor(0,0); //این خط برای پرینت مورد نظر مان است lcd.print(num1); } //در این شرط بیان میکند که هرچه به غیر از صفر را اجرا کند if (num1 !=0 && (button=='-' || button=='+' || button=='*' || button=='/')) { //در این قسمت عملی که کاربر می خواهد را انجام دهد را اجرا کند operation = button; //در این خط جای نوشته مورد نظر را مشخص می کنیم lcd.setCursor(0,1); //پرینت خط مورد نظر lcd.print(operation); // زمانی که کد ها اجرا شد و به این دستور رسید برنامه خارج می شود break; } } // حلقه بی نهایت while(1) { //اگر کلید (c ) در keypad زده شد از برنامه خارج می شود if (button =='C'){break;} //عملی که می خواهیم انجام دهیم را مساوی keypad قرار داده ایم button = customKeypad.getKey(); // اگر دکمه (c ) زده شد شرط زیر انجام شود if (button=='C') { num1=0; num2=0; total=0; operation=0; //پاک کردنlcd lcd.clear(); //خارج شدن break; } // گرفتن کاراکتر از صفحه کلید برای شماره 2 if (button >='0' && button <='9') { num2 = num2*10 + (button -'0'); //دستور زیر برای مشخص کردن نوشته مورد نظر می باشد lcd.setCursor(1,1); //پرینت خط مورد نظر lcd.print(num2); } // اگر فشار دکمه '=' بود، پایان جاده آن است. فراخوانی subathreading () زیر محاسبه می کند و نتایج ما را چاپ می کند if (button == '=' && num2 !=0) { domath(); //خارج شدن break; } } while(1) { // پس از همه انجام می شود این حلقه منتظر کلید C برای فشار دادن است تا بتواند برنامه را بازنشانی کند و شروع به کار کند if (button =='C'){break;} button = customKeypad.getKey(); if (button =='C') { //دستور زیر ال سی دی را پاک می کند lcd.clear(); //دستور زیر مختصات جمله مارا تعیین می کند lcd.setCursor(0,0); num1=0; num2=0; total=0; operation=0; //خارج شدن break; } } } void domath() { //سوئیچ (عملیات) switch(operation) { //جمع کردن case '+': total = num1+num2; break; //منها کردن case '-': total = num1-num2; break; //تقسیم کردن case '/': total = (float)num1/(float)num2; break; //ضرب کردن case '*': total = num1*num2; break; } //دستور زیر برای محاسبه کردن عمل ریاضی و چاپ آن بر روی ال سی دی می باشد lcd.setCursor(0,1); lcd.print('='); lcd.setCursor(1,1); lcd.print(total); }
جمع بندی:
در اولین پروژه راه اندازی کی پد و نمایشگر 2*16 توسط آردوینو می توانیم در قفل های درب خانه استفاده کرد به این صورت که هر وقت
رمز مخصوص خود را زدید درب باز شود
می توان به کمک فرستنده بر روی آن به عنوان کنترل از راه دور استفاده کرد
در پروژه دوم هم که از آن به عنوان ماشین حساب استفاده کرده ایم
موفق و پیروز باشید
امیدوارم از مطلب لذت برده باشید حتما سر به اینستاگرام سر بزنید
- در صورت مشکل در لینک دانلود یا خود فایل حتما در بخش خرابی لینک برامون بنویسید تا در سریع ترین زمان رسیدگی کنیم
- توجه فرمایید که اعلام گزارش خربی باعث بهتر شدن خدمات ما به شما خواهد بود
- برای دریافت لینک دانلود یک بار ثبت نام کنید و به صورت مستقیم دانلود کنید
پسورد فایل : robotafzar.com گزارش خرابی لینک

درباره امیرحسین تاراج بر
دانشجوی الکترونیک دانشگاه سراسری تهران و در زمینه ی آردوینو - رزبری پای در حال فعالیت هستم به ساخت رباتیک و کار های فنی علاقه مندم و در ربات افزار مشغول به کار هستم
نوشته های بیشتر از امیرحسین تاراج بر
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.