آموزش راه اندازی کی پد 4 در 4 ماتریسی با آردوینو (با پروژه نمونه)

فهرست مطالب

مقدمه

کی پد وسیله ایست که می توان از آن  برای دریافت اطلاعات ورودی از سوی کاربر استفاده کرد.

در این پروژه ابتدا نحوه راه اندازی کی پد 4*4 با آردوینو را می آموزیم و سپس  با استفاده از کیپد یک ماشین حساب ساده خواهیم ساخت.

آنچه در این آموزش یاد می گیرید

  • معرفی کیپد
  • انواع کیپد
  • کیپد چگونه کار میکند
  • نحوه راه اندازی کیپد با آردوینو
  • انواع روش های راه اندازی کیپد
  • ساخت ماشین حساب

کی پد چیست و چگونه کار می کند؟

از گذشته تا کنون برای ورود اطلاعات به دستگاه ها و سیستم ها از روش های مختلفی مانند دکمه، صوت، تصویر و … استفاده می شود

یکی از روش های کارآمد برای ورود اطلاعات به سیستم استفاده از کیپد است. – به همین دلیل کیپد ها را در اطراف خود بسیار می بینیم. مانند صفحه کلید کامپیوتر شما که خود نوعی کیپد بزرگ است.

کیپد ها از 2 ورق پلاستیکی  که دارای خطوط سیمی می باشد ساخته شده اند که در نقاط مشخص شده این خطوط به یکدیگر رسیده و با استفاده تکنیک های خاصی روی یکدیگر قرار میگیرند.

انواع کیپد

کیپد ها در انواع مختلفی تولید می شوند اما متداول ترین اندازه آن ها 3*4 و 4*4 است.

این اعداد نشان گر تعداد سطر و ستون های کیپد ها هستند برای مثال کیپد 3*4 شامل 4 سطر و 3 ستون می شود.

کیپد چگونه کار میکند

برای دریافت اطلاعات از 12 دکمه نیازمند استفاده از 12 عدد پین دیجیتال از میکروکنترلر (آردوینو) خود هستیم و این یعنی هدر رفتن تعداد بسیاری از پین ها اما با استفاده از کیپد فقط به 7 عدد پین دیجیتال نیاز داریم. نحوه عملکرد کیپد را می توانید در تصویر زیر مشاهده کنید.

نام گذاری پین های کیپد بر اساس تعداد سطر و ستون آنها می باشد و از این رو می توانید 2 نمونه از نام گذاری آنها را در تصویر زیر مشاهده کنید.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

آردوینو UNO R3 × 1
کی پد فلت 4 در 4 ماتریسی × 1
سیم جامپر نری به نری × 1

نرم افزارهای مورد نیاز

آردوینو IDE

آموزش راه اندازی کی پد با آردوینو

برای اتصال کیپد ها به آردوینو از 4 روش ماتریکسی ، تبدیل کننده ها ،مقاومتی و ترکیبی ماتریکسی مقاومتی استفاده میشود.

در روش اول تمام پایه های کیپد را باید به آردوینوی خود متصل کنیم.

در روش دوم از IC های خاص استفاده می کنیم.

در روش سوم با استفاده از یک ماتریکس از مقاومت ها تمام پایه های کیپد را به یکدیگر متصل کرده و در انتها به پین آنالوگ آردوینو متصل میکنیم.

در روش چهارم که ترکیبی از روش های اول و سوم می باشد. هر ستون را جداگانه به پایه آنالوگ متصل می کنیم.

مزیت و معایب روش ها در جدول زیر آمده است.

روش اول روش دوم روش سوم روش چهارم
سرعت عملکرد بسیار بالا بسیار بالا پایین متوسط
تعداد پین های استفاده شده بسیار بالا پایین فقط 2 پین فقط یک پین متوسط
کد نویسی متوسط متوسط آسان متوسط
اتصال سخت افزاری متوسط متوسط مشکل ( نیازمند هویه کاری) متوسط
هزینه پایین بالا متوسط پایین
توجه

در این آموزش، راه اندازی کیپد و ساخت ماشین حساب را با استفاده از روش اول خواهیم آموخت.

سیم بندی

در ادامه می توانید سیم کشی هر کدام از این چهار روش را به تفکیک مشاهده کنید.

کد

کتابخانه مورد نیاز را می توانید از لینک زیر دریافت کنید.

https://github.com/Chris–A/Keypad

توجه

اگر نیاز به راهنمایی بیشتر برای نصب کتابخانه بر روی آردوینو دارید، می توانید به آموزش نصب کتابخانه بر آردوینو مراجعه کنید.

در ابتدا باید بررسی کنیم که کیپد به درستی به آردوینو متصل شده باشد. برای این کار ابتدا کد زیر را بر روی آردوینو خود آپلود کرده و سیم کشی را مطابق با روش اول انجام میدهیم.
نکته

این کد را میتوانید درون فایل کتابخانه نیز پیدا کنید.

/* @file CustomKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates changing the keypad size and key values.
|| #
*/

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte colPins[ROWS] = {5, 4, 3, 2}; // Pins used for the rows of the keypad
byte rowPins[COLS] = {9, 8, 7, 6}; // Pins used for the columns of the keypad

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( BuildKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

void setup(){
  Serial.begin(9600);
}
void loop(){
  char customKey = customKeypad.getKey();
  
  if (customKey){
    Serial.println(customKey);
  }
}
بعد از آپلود کد و باز کردن سریال مانیتور و فشار دادن هر کدام از دکمه های کی پد باید عدد متناظر با هر دکمه را مشاهده کنید. درصورتی که عدد متناظر با هر دکمه نمایش داده نشد میتوانید در بخش تعریف کردن پین ها شماره پین ها را تغییر دهید تا به دکمه های مورد نظر خود دست یابید.

ساخت یک ماشین حساب

برای ساخت ماشین حساب نیازمند یک نوع کی پد هستیم که دارای تمامی اعداد 0 تا 9 و حداقل 5 کلید جداگانه برای عملگرهای ریاضی باشد.

سیم بندی

کی پد را مطابق تصویر زیر به آردوینو متصل کنید.

کد

کد زیر را بر روی آردوینوی خود آپلود کنید و از ماشین حساب خود لذت ببرید. دقت کنید باید حتما مرحله قبل (راه اندازی با آردوینو) را بدرستی انجام داده باشید.

نکته

در صورتی که شماره دکمه های خود را در قسمت قبل تغییر دادید به همان صورت در پروژه ماشین حساب نیز تغییر دهید.

/*   
modified on 7 Jul 2020
Home
*/ #include <Keypad.h> const byte ROWS = 4; // four rows const byte COLS = 4; // four columns float firstNumber = 0; float secondNumber = 0; float result = 0; bool section = false; int type = 0; // Map the buttons to an array for the Keymap instance char hexaKeys[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte colPins[ROWS] = {5, 4, 3, 2}; // Pins used for the rows of the keypad byte rowPins[COLS] = {9, 8, 7, 6}; // Pins used for the columns of the keypad // Initialise the Keypad Keypad customKeypad = Keypad(BuildKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup() { Serial.begin(9600); // Initialise the serial monitor } void loop() { // Read the pushed button int button = int(customKeypad.getKey()) - 48; if (0 <= button && button <= 10) { Serial.print(button); if (section == false) { firstNumber = firstNumber * 10 + button; } else { secondNumber = secondNumber * 10 + button; } } else { switch (button) { case 17://A section = true; type = 1; Serial.print('+'); break; case 18://///B section = true; type = 2; Serial.print('-'); break; case 19:////C section = true; type = 3; Serial.print('*'); break; case 20:////D section = true; type = 4; Serial.print('/'); break; case -6:////* section = false; type = 0; Serial.println(' '); break; case -13://///# Serial.print(" = "); switch (type) { case 1: result = (firstNumber + secondNumber); break; case 2: result = (firstNumber - secondNumber); break; case 3: result = (firstNumber * secondNumber); break; case 4: result = (firstNumber / secondNumber); break; } type = 0; Serial.println(result); firstNumber = 0; secondNumber = 0; section = false; break; } } }

تعداد خانه های سطری و ستونی کیپد به این صورت تعریف می شود.

const byte ROWS = 4; // four rows
const byte COLS = 4; // four columns

نحوه چیدمان خانه ها در کیپد به صورت زیر مشخص می شود.

char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

شماره پایه های آردوینو که به کیپد متصل میشود نیز به صورت زیر است:

byte colPins[ROWS] = {5, 4, 3, 2}; // Pins used for the rows of the keypad
byte rowPins[COLS] = {9, 8, 7, 6}; // Pins used for the columns of the keypad

استفاده از کتابخانه مربوطه جهت مشخص کردن شماره پایه ها به نام انتخابی پایه ها:

Keypad customKeypad = Keypad(BuildKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

تبدیل مقادیر کارکتر به مقادیر عددی:

  int button = int(customKeypad.getKey()) - 48;

با استفاده از دستور شرطی، بخشی از کیپد که شامل اعداد 0-9 می شود، با توجه به اولویت ورود اطلاعات در حافظه ذخیره می شود:

if (0 <= button && button <= 10) {
    Serial.print(button);
    if (section == false) {
      firstNumber = firstNumber * 10 + button;
    } else {
      secondNumber = secondNumber * 10 + button;
    }
در نهایت با توجه به تصویر زیر سیم کشی را انجام داده و در داخل سریال مانیتور اطلاعات را مشاهده می کنید.

آموزش های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.