🔢 کیپد ۴×۴ (4x4 Matrix Keypad)
| اسم انگلیسی | 4x4 Matrix Keypad |
|---|---|
| در ووکوی (Wokwi) | wokwi-membrane-keypad |
| دسته | 🎛️ کلید، دکمه و ورودی |
| در شبیهساز فارسی | مود آردوینو · رایگان |
کیپد ماتریسی ۴×۴ (4x4 Matrix Keypad) شانزده دکمه دارد ولی فقط هشت سیم، چون دکمهها در چهار سطر و چهار ستون چیده شدهاند و آردوینو با فعال کردن نوبتی سطرها میفهمد کدام تقاطع فشرده شده است. با آن قفل رمزدار، ماشینحساب، منوی دستگاه و دستگاه فروش خودکار میسازی.
کیپد ۴×۴ در ووکوی (Wokwi)
شناسهی کیپد غشایی در ووکوی wokwi-membrane-keypad است با پایههای R1 تا R4 (سطرها) و C1 تا C4 (ستونها). وسط شبیهسازی با موس روی دکمهها کلیک کن:
{
"version": 1,
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "wokwi-membrane-keypad", "id": "keypad1", "top": -330, "left": 40, "attrs": {} }
],
"connections": [
[ "keypad1:R1", "uno:9", "orange", [] ],
[ "keypad1:R2", "uno:8", "orange", [] ],
[ "keypad1:R3", "uno:7", "orange", [] ],
[ "keypad1:R4", "uno:6", "orange", [] ],
[ "keypad1:C1", "uno:5", "purple", [] ],
[ "keypad1:C2", "uno:4", "purple", [] ],
[ "keypad1:C3", "uno:3", "purple", [] ],
[ "keypad1:C4", "uno:2", "purple", [] ]
]
}
| پایهی کیپد | پین آردوینو |
|---|---|
| R1، R2، R3، R4 | 9، 8، 7، 6 |
| C1، C2، C3، C4 | 5، 4، 3، 2 |
روی کیپد واقعی هم هشت پایه معمولاً به همین ترتیب از چپ به راست است: اول چهار سطر، بعد چهار ستون. مقاومت لازم نیست، چون کتابخانه پولآپ داخلی ستونها را روشن میکند. کیپد ۴×۴ در تینکرکد فارسی رایگان است.
سیمکشی با آردوینو (مدار واقعی)
کیپد غشایی واقعی یک کابل تخت با هشت سوکت دارد. با هشت جامپر نر به نر سوکتها را به هدر آردوینو برسان:
| پایهی کیپد (از چپ) | آردوینو Uno |
|---|---|
| ۱ تا ۴ (سطرهای R1 تا R4) | 9، 8، 7، 6 |
| ۵ تا ۸ (ستونهای C1 تا C4) | 5، 4، 3، 2 |
اگر مطمئن نیستی کدام پایه سطر است، با مولتیمتر در حالت بوق دو پایه را بگیر و یک دکمه را فشار بده: دکمهی 1 پایهی اول (R1) را به پایهی پنجم (C1) وصل میکند. کیپد غشایی نازک است؛ کابلش را تند تا نکن، چون مسیرهای چاپی داخلش میشکنند و یک سطر کامل از کار میافتد. اگر پایهی آزاد کم داری، ستونها را میتوانی روی A0 تا A3 هم بگذاری؛ این پایهها بهصورت دیجیتال هم کار میکنند.
کد نمونه: وارد کردن عدد
// 4x4 keypad: type a number, # = enter, * = clear
#include <Keypad.h>
const byte ROWS = 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] = {9, 8, 7, 6}; // R1..R4
byte colPins[COLS] = {5, 4, 3, 2}; // C1..C4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
long number = 0;
void setup() {
Serial.begin(9600);
Serial.println("Type digits, # = enter, * = clear");
}
void loop() {
char key = keypad.getKey();
if (!key) return; // nothing pressed
if (key >= '0' && key <= '9') {
if (number < 10000000) number = number * 10 + (key - '0');
Serial.print("number: ");
Serial.println(number);
} else if (key == '#') {
Serial.print("entered: ");
Serial.println(number);
number = 0;
} else if (key == '*') {
number = 0;
Serial.println("cleared");
} else {
Serial.print("letter key: ");
Serial.println(key);
}
}
هر رقم، عدد قبلی را ده برابر میکند و رقم تازه را به آن اضافه میکند؛ key - '0' کاراکتر رقم را به عدد تبدیل میکند. از همین الگو برای گرفتن دما، زمان تایمر یا رمز عددی استفاده کن.
اشتباههای رایج
- سطر و ستون جابهجا: اگر کلیدها جای هم چاپ میشوند، ترتیب
rowPinsوcolPinsرا با سیمکشی مقایسه کن. - پایهی 0 و 1: وصل کردن کیپد به پایههای سریال، با سریال مانیتور تداخل دارد.
- مقایسه با عدد:
getKeyکاراکتر برمیگرداند؛key == 1هیچوقت درست نیست، بایدkey == '1'بنویسی. - delay طولانی: اگر
loopچند ثانیه منتظر بماند، فشارهای کوتاه گم میشوند؛ کیپد را بدون مکث بخوان.
آموزشهای مرتبط
- کیپد ۴×۴ با آردوینو و قفل رمزدار با سروو
- پروژهی قفل رمزدار (Password Lock) در تینکرکد فارسی
- دستگاه فروش خودکار (Vending Machine)
- LCD 16×2 I2C برای نمایش عدد واردشده
سؤالهای رایج
چرا کیپد حرف اشتباه چاپ میکند؟
معمولاً ترتیب پایهها در آرایههای rowPins و colPins با سیمکشی یکی نیست، یا سطر و ستون جابهجا شدهاند. اگر با فشار 2 عدد 4 میآید، سطرها و ستونها جای هم نشستهاند.
کیپد ۴×۴ چند پایهی آردوینو میگیرد؟
هشت پایه: چهار سطر و چهار ستون. اگر پایه کم داری، میشود کیپد را با یک ماژول I2C یا با یک پایهی آنالوگ و چند مقاومت هم خواند.