آموزش کار با keypad
این پست آموزشی قصد راهاندازی keypad با استفاده از آردوینو را داریم . با مرجع تخصصی آردوینو،دیجی اسپارک همراه باشید.
در بازار معمولا دو نوع کیپد فلت و معمولی موجود میباشد که تفاوت آنها در شکل ظاهری و ابعادشان میباشد و در عملکرد تفاوتی ندارند.
کیپد مجموعه از تاچ سوئیچ ها میباشد که به صورت سطری ،ستونی به طوری که تشکیل یک ماتریس دهند در کنار یک دیگر قرار گرفته اند همانند شکل زیر :
برای راه اندازی کیپد روشهای زیادی وجود دارد که در این آموزش به شرح یکی از روشهای ساده میپردازیم و در قسمتهای بعدی روشهای بهینه تری را آموزش میدهیم.
نمایی کلی از عملیاتی که باید انجام شود :
در روشی که در این پست قصد داریم به آموزش آن بپردازیم کیپد را همانند تصویر زیر به آردوینو متصل میکنیم.
سپس پینهای شماره ۱ ، ۲ ، ۳ و ۴ را در وضعیت ورودی و Pull Up قرار میدهیم.بعد از ین پینهای A , B ,C , D را خروجی میکنیم و در وضعیت ۱ منطقی قرار میدهیم. سپس مقدار LOW را میان پینهای A , B ,C , D شیفت میدهیم . یعنی همانند حالات زیر عمل میکنیم.
مراحل شیفت دهی :
مرحله اول:
A = LOW
B = HIGH
C = HIGH
D = HIGH
مرحله دوم:
A = HIGH
B = LOW
C = HIGH
D = HIGH
مرحله سوم :
A = HIGH
B = HIGH
C = LOW
D = HIGH
مرحله چهارم:
A = HIGH
B = HIGH
C = HIGH
D = LOW
و به همین ترتیب مراحل بالا را از مرحله یک به چهار انجام میدهیم و منتظر میشویم که کلیدی فشرده شود. اگر کلیدی فشرده شد یکی از ستون ها در وضعیت LOW قرار میگیرد و ما با داشتن شماره سطر و شماره ستون میتوانیم کلید فشرده شده را تشخیص دهیم.
|
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
#include <Bounce2.h>
#include <LiquidCrystal.h>
//تنظیمپایههایالسیدی
LiquidCrystal lcd(22,23,24,25,26,27,28);
#define c0 digitalRead(6)
#define c1 digitalRead(7)
#define c2 digitalRead(8)
#define c3 digitalRead(9)
//نماییکلیازکاراکتهایکیپدرابهصورتآرایهدرمیآوریم
charlayout[16]={'1','2','3','A',
'4','5','6','B',
'7','8','9','C',
'*','0','#','D'
};
//آرایهبالاییباآرایهپایینیداراییکمقدارمیباشدوتفاوتیندارازکدامیکاستفادهکنیم
/*
charlayout[16]={'1','2','3','A','4','5','6','B','7','8','9','C','*','0','#','D'};
*/
//پینهایمربوطبهسطرهارادریکآرایهذخیرهمیکنیم
introws[4]={2,3,4,5};
//پینهایمربوطبهستونهارادرونیکآرایهذخیرهمیکنیم
intcols[4]={6,7,8};
voidsetup()
{
lcd.begin(16,2);
lcd.print("digispark.ir");
Serial.begin(9600);
//تعریفکردنستونهابهصورتورودیودروضعیتپولآپکهبهستونهایکیپدمتصلمیشوند
pinMode(6,INPUT_PULLUP);
pinMode(7,INPUT_PULLUP);
pinMode(8,INPUT_PULLUP);
pinMode(9,INPUT_PULLUP);
///تعریف پینهاییکهبهسطرهایکیپدمتصلمیشند
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);
pinMode(3,OUTPUT);
digitalWrite(3,HIGH);
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
pinMode(5,OUTPUT);
digitalWrite(5,HIGH);
}
voidloop()
{
keyPad();
}
voidkeyPad()
{
intcol=-1;
introw=0;
intpos=-1;
//بهوسیلهیحلقهیزیرعملیاتشیفدادنراانجاممیدهیم
for(introw=0;row<=5;row++)
{
digitalWrite(rows[(row)],LOW);
if(!c0)
{
col=0;
}
elseif(!c1)
{
col=1;
}
elseif(!c2)
{
col=2;
}
elseif(!c3)
{
col=3;
}
if(col!=-1)
{
pos=row *4+col;
charc=layout[pos];
if(c=='#')
{
lcd.clear();
}
elseif(c=='*')
{
lcd.clear();
lcd.print("digispark.ir");
}
else
{
lcd.print(c);
}
col=-1;
}
while(!c0)
{
;
}
while(!c1)
{
;
}
while(!c2)
{
;
}
while(!c3)
{
;
}
digitalWrite(rows[(row-1)],HIGH);
}
}
|
در پروژهی بالا هنگامی که دستتان را بر روی کلید نگه دارید متوجه میشوید که برنامه متوقف میشود و تا زمانی که دستتان را از روی لید برنداشته باشید برنامه در توقف میباشد برای رفع این مشکلات و سایر مشکلات دیگر در جلسهی بعدی به آموزش پیشرفته کار با keypad خواهیم پرداخت.
آموزش جامع کار با کیپد
مقدمه : شرمنده دوستان که همچین مطلبی میزارم>>>ولی چون ممکنه دوستانی که تازه کار هستن به مشکل بربخورند>>> این مطلب هم چیز خاصی نداره ولی شاید بتونه کمک خیلی کوچیکی به تازه کارا بکنه.>>دوستان اگه پروژه avrداشتن ما درخدمیتیم برا انجامش>>>البته رایگان
اول عکس زیر رو ببینید>>> وقتی شما کیپد میخرید شکلش یه چیزی تو این مایه ها هستش>> حالا شاید مثلا نام برخی دکمه ها تو برخی کیپد ها با هم فرق داشته باشه یا اندازه کیپد ها با هم فرق داشته باشن و… که زیاد مهم نیست فعلا…
آموزش کار با کیپد
توضیح عکس بالا :
1 و 2) اون شکل صورتیه و سبزه! : اون 4 تا پایه به نام های R1-R2-R3-R4 و 4 تا پایه C1-C2-C3-C4 پایه هایی هستش که ما باهاش کیپد رو مدیریت میکنیم و این 8 تا پایه همون 8 تا پایه کیپد تو پروتئوس هستن(عکس زیر مربوط به کیپد تو پروتئوس هستش)
3) اون شکل قرمزه(قرمزته…) : اینم مربوط میشه به مقاومت پول آپ صفحه کلید>>>که به نظر من باید وصلش کنید>>یعنی مقاومت ها رو قرار بدید>>>که بهتره مقاومت 10K استفاده کنید>>>البته من خودم یه بار 1K استفاده کردم و مشکلی پیش نیومد.تو این شکل پایه V رو به منبع تغزیه 5 ولت یا 0 ولت(زمین یا همون منفی) وصل میکنیم که بسته به پروژتون و نحوه کد نویسی متفاوت هستش>>>خودتون تست کنید ببینید باید به کجا وصلش کنید>>>مشکلی پیش نمیاد.
مقاومت هاتون رو هم به پایه های R1 -R2-R3-R4 وصل کنید.
4) اونی که شکل نکشیدم دورش: اونا هم با توجه به دیتاشیتی که همراه کیپد بود مربوطه به LED >>> یعنی بهش LED وصل میکنی تا اگه رو دکمه های کیپد کلیک کردی اونا روشن بشن.
همون طور که تو عکس بالا مربوطه ما پایه مثبت LED هامون رو به پایه های L1-L2-L3-L4 وصل کرده و اون یکی پایه ها رو به CO وصل میکنیم.
انواع کیپد :
تو بحث کیپد از شکل و ظاهر و این که 4×4 هستش یا 4×3 و یا مربوط به ماشین حساب بگزریم میرسیم به مهم ترین بحثش که ، ما دوع کیپد معمولی و فلت داریم>>که تفاوتشون تو شکل و ظاهر و قیمت هستش و این که کید معمولی ارزون تر>> فضای بیشتری میگیره>>> و این که حتما باید در عمل ببینیدشون تا…. 
اینم یه شکل از کیپد معمولی
و اینم کیپد معمولی 4×3
و اینم یه شکل از کیپد فلت
مشکلات کار با کیپد :
سوال : کیپد من کار نمیکنه>وثتی روش کلیک میکنم چیزی رو LCD نشون نمیده>همینطوری برا خودش عدد نشون میده تو LCD و…
جواب :
1) اگه پايه پايه اي رو تو کد نويسي تعريف کردين که KEYPAD بايد بهش وصل بشه حالا اگه تمام پايه ها ي KEYPAD به ميکرو و پايه هاي تعريف شده وصل نباشن اين مشکل به وجود ميآيد.
2) اگه پول آپ KEYPAD رو فعال نکرده باشيد اين مشکل به وجود مياد(که در بالا توضيح دادمش)
3) مشکل از کد های پروژتون.
4) اگه از برد برد استفاده میکنید اتصالات رو حتما چند بار چک کنید تا حتما وصل باشن>>> تو کار با برد برد احتمابلا کیپد ها خیلی اضیتتون خواهند کرد.
دوستان میتونند مطالب زیر رو هم بخونند :
مشکل شبیه سازی کــیــپــد در پروتیوس









با سلام و درود فراوان