آموزش راهاندازی کیپد ۳×۴ و ۴×۴ با آردوینو
آموزش راهاندازی کیپد ۳×۴ و ۴×۴ با آردوینو | در دنیای رباتیک و هوش مصنوعی، کیپد (Keypad) یکی از اصلیترین واسطههای ورودی برای کنترل دستگاهها و رباتهاست. در این مقاله، بهطور گامبهگام به شما نشان میدهیم چگونه میتوانید یک کیپد ۳×۴ (۱۲ کلید) و کیپد ۴×۴ (۱۶ کلید) را با استفاده از میکروکنترلر آردوینو راهاندازی کنید. در ادامه با آموزشگاه خانه رباتیک ایران همراه باشید.
کیپدها بهصورت ماتریسی طراحی میشوند؛ در هر ردیف چندین پین متصل به ردیف، و در هر ستون چند پین متصل به ستون. با استفاده از اسکن ماتریس، میتوان با تعداد کم پین، صدها کلید را کنترل کرد.
بررسی ساختار کلیدها و ماتریسسازی
ساختار ماتریسی
در هر کیپد، ردیفها و ستونها با یکدیگر متقاطع میشوند؛ وقتی یک کلید فشار داده میشود، ردیف و ستون متقاطع شده فعال میشوند.
مثال: در کیپد ۳×۴، ردیف ۱ و ستون ۳ بر همپیوسته است؛ وقتی کلید “۳” فشار داده میشود، پین ردیف ۱ به سطح پایین (یا بالا) میرود.
کلیدهای استاندارد
کیپد ۳×۴: ۱۲ کلید (۰–۹ + A–C)
کیپد ۴×۴: ۱۶ کلید (۰–۹ + *, # + A–D)
نحوهی اتصال فیزیکی
آموزش راهاندازی کیپد ۳×۴ و ۴×۴ با آردوینو
کیپد ۳×۴
۴.۲ کیپد ۴×۴
پیشنهاد: اگر در کیپد مقاومت داخلی وجود نداشته باشد، از مقاومت ۱۰ kΩ به عنوان pull‑down در ردیفها یا pull‑up در ستونها استفاده کنید.
نصب و پیکربندی کتابخانه Keypad.h
نصب کتابخانه
باز کردن Arduino IDE
Sketch → Include Library → Manage Libraries…
جستجو برای Keypad
روی Install کلیک کنید.
البته میتوانید این کتابخانه را از سایت خانه رباتیک ایران هم دانلود کنید.
کد نمونه برای کیپد ۳ در ۴
|
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ |
#include const byte ROWS = ۳; // تعداد ردیف const byte COLS = ۴; // تعداد ستون char keys[ROWS][COLS] = { {'۱','۲','۳','A'}, {'۴','۵','۶','B'}, {'۷','۸','۹','C'} }; byte rowPins[ROWS] = {۲,۳,۴}; // پینهای ردیف byte colPins[COLS] = {۵,۶,۷,۸}; // پینهای ستون Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup(){ Serial.begin(۹۶۰۰); Serial.println("Keypad 3x4 آماده است"); } void loop(){ char key = keypad.getKey(); if (key){ Serial.print("کلید فشرده شد: "); Serial.println(key); } } |
توضیح کوتاه: این کد بهصورت ساده کلید فشردهشده را در سریال مانیتور چاپ میکند. میتوانید آن را برای ورودیهای دیگر (دوربین، موتور، لودهای متحرک) گسترش دهید.
کد نمونه برای کیپد ۴ در ۴
|
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ |
#include const byte ROWS = ۴; const byte COLS = ۴; char keys[ROWS][COLS] = { {'۱','۲','۳','A'}, {'۴','۵','۶','B'}, {'۷','۸','۹','C'}, {'*','۰','#','D'} }; byte rowPins[ROWS] = {۲,۳,۴,۵}; byte colPins[COLS] = {۶,۷,۸,۹}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup(){ Serial.begin(۹۶۰۰); Serial.println("Keypad 4x4 آماده است"); } void loop(){ char key = keypad.getKey(); if (key){ Serial.print("کلید فشرده شد: "); Serial.println(key); } } |
نکته: در این مثال، کلیدهای * و # نیز اضافه شدهاند که میتوانید برای دستورات خاص استفاده کنید.
نکات و ترفندهای اضافی
مقاومت داخلی (Pull‑Up/Pull‑Down): اگر در کیپد مقاومت داخلی وجود ندارد، میتوانید از مقاومت ۱۰ kΩ به عنوان pull‑down استفاده کنید تا خطای خواندن نادرست کاهش یابد.
Debounce (تغییر پایدار): کتابخانهی Keypad بهصورت پیشفرض debounce را مدیریت میکند، اما در صورت نیاز میتوانید مقدار DEBOUNCE_TIME را تغییر دهید.
استفاده در پروژههای بزرگتر: میتوانید کلید فشردهشده را به یک queue یا stack ارسال کنید و در بخش دیگری از برنامه پردازش کنید.
کاهش مصرف برق: اگر در مدارهای کممصرفی فعالیت میکنید، میتوانید از مود «sleep» در آردوینو استفاده کنید و فقط زمانی که کلید فشرده شد، آردوینو را فعال کنید.
پرسشهای متداول (FAQ)
آیا میتوانم از کیپد ۴ در ۴ در برد Mega استفاده کنم؟
بله، فقط مطمئن شوید پینهای ردیف و ستون را به درستی تنظیم کنید.
چگونه میتوانم از چند کیپد بر روی یک برد آردوینو استفاده کنم؟
میتوانید با استفاده از multiplexing و یک ماژول I²C expanders (مانند PCF8574) تعداد ورودیها را افزایش دهید.
آیا کتابخانه Keypad بهطور خودکار debounce را انجام میدهد؟
بله، کتابخانه بهطور پیشفرض یک مقدار debounce معقول دارد.
اگر در مانیتور سریال چیزی نبینم، چه کار کنم؟
مطمئن شوید baud rate (9600) با IDE تنظیم شده است و ورودی کیپد به درستی متصل است.

