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

به آموزش آردوینو ( قسمت چهاردهم – کی پد ماتریسی) خوش اومدید.

بازبینی اول : در تاریخ ۱۴۰۰/۰۵/۲۳ انجام شد!

کی پد ماتریسی

صفحه کلیدها در پایین ترین سطح خود به صورت ماتریسی از سطرها و ستون‌ها تشکیل شده اند که keypad نام دارند. برد از طریق پورت‌ها می تواند به این سطرها و ستون‌ها دسترسی داشته باشد. یعنی ما می توانیم با استفاده از یک پورت هشت بیتی یک ماتریس ۴*۴ از کلید ها را به میکرو متصل کنیم. وقتی یک کلید فشار داده می شود یک سطر و ستون به هم متصل می‌شوند.

پیاده سازی پروژه

پایه های ۰ تا ۳ از برد آردوینو رو به پایه های C4 تا C1 کیپد و پایه های ۴ تا ۷ برد آردوینو رو به پایه های R4 تا R1 کیپد متصل کنید

پایه های ۸ تا ۱۳ برد آردوینو رو برای اتصال به LCD کاراکتری در نظر گرفتیم.

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

نصب کتاب خانه های مورد نیاز

برای نصب کتابخانه Keypad.h مراحل زیر رو طی میکنیم:

از منوی Sketch منوی Include library و بعدش گزینه Manage libraries رو کلیک میکنم .در پنجره باز شده توی کادر جستجو اسم کتابخانه مورد نظرمون رو وارد می کنیم.

کد های دستوری

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

برای نمایش کاراکتر های کیپد از LCD کاراکتری استفاده میکنیم که آن را در قسمت نهم آموزش دادیم.پس باید کتابخانه LiquidCrystal  رو فراخوانی کنیم.

یک شی بنام lcd تعریف کردیم و دقیقا محل قرار گرفتن پایه های LCD رو روی برد آردوینو تعریف میکنیم.

متغیر های ROWS و COLS  هم تعداد سطر ها و ستون های کیپد رو مشخص میکنند.

#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
const byte ROWS = 4;
const byte COLS = 4;

سپس یک آرایه دوبعدی تعریف میکنیم و تمام ۱۶ تا کاراکتر مورد نظر را داخل آرایه مقدار دهی میکنیم.

char keys[ROWS][COLS] = {
  {'۱','۲','۳','A'},
  {'۴','۵','۶','B'},
  {'۷','۸','۹','C'},
  {'*','۰','#','D'}
};

یک آرایه یک بعدی بنام rowPins برای تعریف سطرها و یک آرایه یک بعدی دیگه بنام colPins برای تعریف ستون های کیپد ۴*۴ اختصاص میدیم.

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

byte rowPins[ROWS] = {7, 6, 5, 4}; 
byte colPins[COLS] = {3, 2, 1, 0};

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

در تابع setup پایه A0 برد آردوینو رو بعنوان خروجی تعریف میکنیم تا بتونیم بهش Buzzer (که آن را در قسمت هشتم آموزش دادیم) را متصل کنیم.

LCD کاراکتری رو پاک میکنیم و با دستور lcd.print عبارت “shasirobot.ir”  روی LCD نمایش میدیم و بعد از تاخیر کوتاه متن را پاک میکنیم.

void setup()
{
 pinMode (A0, OUTPUT);
 lcd.begin(16, 2);
 lcd.clear();
 lcd.print(" amokh.ir");
 delay(2000);
 lcd.clear();
}

در تابع loop با دستور keypad.getKey به محض فشرده شدن کلید ، عدد یا حروف تعریف شده داخل متغیر key  قرار میگیره و براحتی با دستور lcd.print روی ال سی دی کاراکتری نمایش میدیم.

void loop(){
  char key = keypad.getKey();/
  
  if (key){
    lcd.clear();
    lcd.setCursor(0, 0); 
    lcd.print("key:");
    lcd.setCursor(4, 0); 
    lcd.print(key);
    digitalWrite(A0, HIGH);  
    delay(250);
    digitalWrite(A0, LOW); 
  }
}

کد کامل پروژه

#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
const byte ROWS = 4;
const byte COLS = 4;

char keys[ROWS][COLS] = {
  {'۱','۲','۳','A'},
  {'۴','۵','۶','B'},
  {'۷','۸','۹','C'},
  {'*','۰','#','D'}
};

byte rowPins[ROWS] = {7, 6, 5, 4}; 
byte colPins[COLS] = {3, 2, 1, 0};

void setup()
{
 pinMode (A0, OUTPUT);
 lcd.begin(16, 2);
 lcd.clear();
 lcd.print("amokh.ir");
 delay(2000);
 lcd.clear();
}

void loop(){
  char key = keypad.getKey();/
  
  if (key){
    lcd.clear();
    lcd.setCursor(0, 0); 
    lcd.print("key:");
    lcd.setCursor(4, 0); 
    lcd.print(key);
    digitalWrite(A0, HIGH);  
    delay(250);
    digitalWrite(A0, LOW); 
  }
}

پایان آموزش آردوینو  ( قسمت چهاردهم – کی پد ماتریسی)

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

قبلا حساب کاربری ایجاد کرده اید؟
گذرواژه خود را فراموش کرده اید؟
Loading...