- ابزارآلات و آهنربا
-
ابزارآلات
- ابزار اندازه گیری (مولتیمتر، کولیس و . . .)
- ابزار سوراخکاری (مته، سه نظام، چهار نظام، پنج نظام و . . .)
- ابزار و تجهیزات کار (پیچ گوشتی، انبردست، سیمچین، پنس و . . .)
- برد بورد، فیبر خام و سوراخدار (فیبر مدار چاپی و PCB)
- پیچ و اسپیسر (پیچ و مهره رباتیک و اسپیسر پلاستیکی و فلزی)
- سیم و کابل (سیم افشان، فلت، باندی، کابل شارژ، پرینتر، و . . .)
- لحیمکاری (هویه، نوک هویه، پایه هویه، سیم لحیم، روغن لحیم و . . . )
- منبع تغذیه، باتری و جاباتری (باتری قلمی، نیم قلمی، کتابی و . . . )
-
ابزارآلات
- برد هوشمند
- پرینتر سه بعدی
- رباتیک و پروازی
- ماژول
- قطعات الکترونیک
- کیت الکترونیکی و انواع جعبه
- موتور
- اصناف مختلف
نحوه اتصال کیپد 3×4 و 3×3 به آردوینو

ماژولهای کیپد به خاطر قیمت پایین، دوام بالا و مقاومتی که در برابر آب دارند، میتوانند روش مناسبی برای افزودن دکمه به پروژههای آردوینو باشند بنابراین یاد داشتن نحوه اتصال کیپد به آردوینو در دستگاههایی که کاربران میبایست پسورد وارد کنند، بسیار اهمیت دارد.
ماژولهای کیپد در اندازههای مختلف تولید شدهاند که رایجترین آنها 12 کلیده (4×3) و 16 کلیده (4×4) هستند. ظاهر این ماژولها شبیه دکمههای به کار رفته در تلفنها میباشد به همین خاطر هر کسی میتواند از آنها استفاده کند.
به هر ترتیب، فرقی نمیکند که ماژولهای کیپد چند کلید دارند زیرا کاربرد آنها یکسان است. حال در بلاگ بهنام رباتیک میخواهیم ببینیم چگونه میتواند اقدام به راه اندازی کیپد با آردوینو کرد؛ پس با ما همراه باشید.
فهرست مطالب

لوازم مورد نیاز برای پروژه اتصال کیپد به آردوینو
ساختار ماژولهای کیپد
ماژولهای کیپد روی خود یک پوشش غشاء مانند نازک و انعطافپذیر دارند و معمولاً از شش لایه تشکیل شدهاند:

- لایه پوششی گرافیکی: این لایه معمولاً از جنس پلیاستر ساخته میشود زیرا این ماده نسبت به پلیکربنات انعطافپذیرتر است.
- برآمدگیهای فلزی: این برآمدگیها باعث به وجود آمدن بازخورد روی سطح ماژول میشوند.
- لایه بالایی مدار: این لایه که معمولاً از جنس پلیاستر ساخته میشود، دارای جوهر رسانای الکتریکی پوشیده شده از نقره است و به نوعی یک رابط میان انگشتان کاربر و مدار به شمار میرود.
- اسپیسر: این لایه پوشش رویی مدار را جدا میکند و به دکمهها اجازه میدهد تا همیشه آماده فشار داده شدن باشند.
- لایه زیرین مدار: این لایه که معمولاً از جنس پلیاستر ساخته میشود، دارای جوهر رسانای الکتریکی پوشه شده از نقره است و کارایی تقریباً شبیه لایه بالایی مدار دارد.
- لایه عقبی چسبنده: این لایه کیپد را به هر نوع سطحی که کاربر میخواهد، وصل میکند.
نکته: اگر لایه پشتی کیپد را جدا کنید، اتصالات آن را مشاهده خواهید کرد.

به منظور کاهش اتصالات ورودی و خروجی I/O، همانطور که میبینید، تمامی ردیفها و ستونها با سیم به همدیگر وصل شدهاند. اگر اینچنین نبود، میبایست 17 سیم در اختیار میداشتیم؛ 16 سیم برای دکمهها و 1 سیم نیز برای اتصال به زمین (GND) اما با این شیوه، به تنها 8 پین نیاز داریم تا تمامی کیپد 4×4 را کنترل کنیم. این تکنیک که بر مبنای آن کنترل چندین ورودی با کمترین پین را در اختیار میگیریم، مولتیپلکسینگ نام دارد.
کیپد ماتریکس چگونه کار میکند؟
کیپد ماتریکسی که ما داریم در اینجا در مورد آن صحبت میکنیم، از چندین دکمه فشاری ساخته شده که به صورت افقی و عمودی کنار هم قرار گرفتهاند. برای هر ردیف و هر ستون، یک پین وجود دارد بنابراین کیپد 4+4 تعداد 8 پین و کیپد 4+3 تعداد 7 پین دارد.
تصویر زیر نشان میدهد که ردیفهای افقی و عمودی داخلی چگونه به هم وصل شدهاند.

زمانی که دکمه فشار داده میشود، یکی از ردیفها به یکی از ستونها وصل میگردد و اجازه خواهد داد جریان از میان آنها عبور کند. مثلاً، وقتی دکمه 4 را فشار میدهیم، ستون شماره 1 و ردیف شماره 2 به هم متصل میشوند.
در ادامه پس از شناسایی اینکه کدام ستون و ردیف به هم وصل هستند، میتوانیم بگوییم که کدام دکمه فشار داده شده است.
اسکن کیپد
در ادامه میبینیم که چگونه یک میکروکنترلر ردیفها و ستونها را اسکن میکند تا ببیند کدام دکمه فشار داده شده است.
- هر ردیف به یک پین ورودی و هر ستون به یک پین خروجی وصل است.
- وقتی پینهای ورودی فشار داده میشوند، مقاومتهای داخلی پولآپ فعال شده و وضعیت پینها به HIGH تغییر میکند.
- در ادامه، میکروکنترلر به ترتیب پین هر ردیف را روی حالت LOW میگذارد و سپس بررسی میکند تا ببیند آیا پینهای ردیفها نیز LOW است یا خیر. به دلیل استفاده از مقاومتهای پولآپ، دکمهها وضعیت HIGH خواهند داشت مگر اینکه فشار داده شوند.
- چنانچه وضعیت یک پین LOW بود، بدان معناست که دکمه قرار گرفته در آن ردیف و ستون فشار داده شده است.
- سپس میکروکنترلر منتظر میماند تا دکمه از حالت فشرده خارج شود. در نهایت نقشه مدار دکمهها را جستجو میکند تا کاراکتری که به آن دکمه مربوط میگردد را بشناسد.
آشنایی با پینهای کیپد 4×4 و 3×4 قبل از شروع پروژه اتصال کیپد به آردوینو
این کیپدها کانکتور مادگی دارند. وقتی به جلوی آنها نگاه میکنید، پینهای ردیفی در سمت چپ قرار گرفتهاند و معمولاً هم در نزدیکی کانکتور به یک پوشش تیره مجهز شدهاند تا بتوانیم آنها را شناسایی کنیم. به این ترتیب، پینهای ماژولهای کیپد مانند تصویر زیر است.

چگونگی اتصال کیپد به آردوینو
حالا که تقریباً همه چیز را در مورد ماژولهای کیپد میدانید، میتوانید شروع به راه اندازی کیپد با آردوینو کنید.
وصل کردن ماژول به برد هوشمند بسیار آسان است زیرا اتصالات آردوینو نیز شبیه اتصالات کانکتور کیپد میباشند. بهتر است کار خود را با وصل کردن پین 1 کیپد به پین دیجیتالی شماره 9 آردوینو شروع کنید و این کار را با وصل کردن پینهای بعدی ادامه دهید.
آسانترین راه برای وصل کردن این پینها، استفاده از یک کابل 8 پین مادگی به مادگی میباشد.

نصب کتابخانهها برای اتصال کیپد به آردوینو
برای اینکه مشخص کنید کدام دکمه فشار داده شده، باید ردیفها و ستونها را مرتباً آنالیز نمایید. خوشبختانه کتابخانه Keypad.h برای راه اندازی کیپد با آردوینو نوشته شده تا پیچیدگیهایی که فکر میکردیم، از بین رفته باشند.
برای نصب کتابخانه نامبرده، به آدرس Sketch> Include Library> Manage Libraries بروید و منتظر مدیریت کتابخانه بمانید تا Keypad.h دانلود و لیست کتابخانههای در دسترس آپدیت شود.

حالا نوشتن کلمه keypad سرچ خود را فیلتر کنید. به دنبال نتیجه جستجو Keypad by Mark Stanley, Alexander Brevig بگردید. روی آن کلیک کرده و دکمه Install را بزنید.

کدنویسی پروژه اتصال کیپد به آردوینو
کدهای سادهای که در زیر میبینید، باعث میشود وقتی دکمهای را میفشارید، نتیجه آن در سریال مانیتور نمایان گردد.
کدهای لازم برای راه اندازی کیپد 4×3 با آردوینو
#include
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] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3}; //connect to the column pinouts of the keypad
//Create an object of keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
}
void loop(){
char key = keypad.getKey();// Read the key
// Print if key pressed
if (key){
Serial.print("Key Pressed : ");
Serial.println(key);
}
}
کدهای لازم برای راه اندازی کیپد 4×4 با آردوینو
#include
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad
//Create an object of keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
}
void loop(){
char key = keypad.getKey();// Read the key
// Print if key pressed
if (key){
Serial.print("Key Pressed : ");
Serial.println(key);
}
}
پس از وارد کردن کدهای داده شده، سریال مانیتور را با بادریت 9600 اجرا کنید. اینک برخی از دکمههای روی کیپدها را فشار دهید تا مقادیر آنها را در سریال مانیتور ببینید.

توضیحات کد پروژه اتصال کیپد به آردوینو
کدهای نوشته شده با کتابخانه Keypad.h و تعیین مقادیر ردیفها و ستونها آغاز میشوند. اگر شما از یک کیپد متفاوت استفاده میکنید، این مقادیر را تغییر دهید.
#include
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
در مرحله بعد، یک آرایه دو بعدی یعنی keys[ROWS][COLS] را تعریف میکنیم که شامل کاراکترهای قابل چاپ در زمان فشار دادن یک دکمه به خصوص میگردد. در این کدها، کاراکترها درست مانند نحوه قرارگیری دکمهها در کیپدها مرتب شدهاند.
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
با این حال، شما میتوانید آنها را آنطور که دوست دارید تغییر دهید. مثلاً اگر میخواهید یک ماشینحساب بسازید، فقط کافی است آرایه را عوض کنید.
char keys[ROWS][COLS] = {
{'1','2','3','4'},
{'5','6','7','8'},
{'9','0','+','-'},
{'.','*','/','='}
};
سپس دو آرایه جدید تعریف میشوند. این آرایهها اتصالات آردوینو با پینهای افقی و عمودی کیپد را مشخص میکنند.
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad
اینبار یک هدف کتابخانه کیپد میسازیم. این ساختارها پنج بخش دارند:
- makeKeymap(keys) نقشه کلیدی داخلی را با زمان فشار دادن دکمهها توسط کاربران را متوازن میکند.
- rowPins و colPins اتصالات آردوینو را با اتصالات پینهای عمودی و افقی کیپد مشخص میکنند.
- ROWS و COLS نیز ردیفها و ستونهای کیپد را نمایش میدهند.
//Create an object of keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
در بخش Setup، ابتدا پورت سریال را آغاز میکنیم.
void setup(){
Serial.begin(9600);
}
در بخش Loop هم از تابع getKey() بهره میبریم تا وقتی دکمهای فشار داده میشود، مقدار آن را شناسایی کنیم. سپس آن را روی سریال مانیتور پرینت خواهیم کرد.
void loop(){
char key = keypad.getKey();// Read the key
// Print if key pressed
if (key){
Serial.print("Key Pressed : ");
Serial.println(key);
}
}
چند تابع کاربردی برای پروژه اتصال کیپد به آردوینو
توابع کاربردی زیادی وجود دارند که شما میتوانید از آنها در این پروژه بهره ببرید. در ادامه برخی از آنها را مشاهده میکنید:
- char waitForKey(): این تابع باعث میشود تا کیپد منتظر بماند تا کاربری یکی از دکمهها را فشار دهد. فقط توجه داشته باشید که این تابع سایر کدها را مسدود میکند تا دکمهای فشار داده شود. این یعنی LED چشمک نخواهد زد، محتویات نمایشگر آپدیت نخواهد شد و . . .
- KeyState getState(): این تابع جریان هر کدام از دکمهها را بازمیگرداند. چهار حالت عبارتند از بیکاری (Idle)، فشار داده شده (Pressed)، رها شده (Released) و نگه داشته شده (Hold).
- boolean keyStateChanged(): این تابع به شما اجازه میدهد که ببینید چه زمانی حالت یک دکمه تغییر کرده است.
- setHoldTime(unsigned int time): این تابع تعداد میلیثانیهای که کاربر باید دکمهای را نگه دارد تا حالت نگه داشته شده (Hold) فعال گردد را مشخص میکند.
- setDebounceTime(unsigned int time): این تابع تعداد میلیثانیهای که کیپد منتظر میماند تا کاربر یکی از دکمهها را فشار دهد را مشخص میکند.
- addEventListener(keypadEvent): اگر کیپد استفاده شد، یک رویداد را فعال خواهد کرد.