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

آموزش اتصال کیپد به برد آردوینو (راه اندازی کیپد Arduino)

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

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

اتصال آردوینو با صفحه کلید 4×4 بسیار ساده است. 4 ستون صفحه کلید را به پایه های دیجیتال 4، 5، 6 و 7 در آردوینو و 4 ردیف را به پایه های دیجیتالی 8، 9، 10 و 11 وصل کنید. این کار را می توان با لحیم کردن سیم ها به صفحه کلید، استفاده از کانکتورها یا هدرها برای ایجاد اتصالات یا توسط لحیم کاری انجام داد.

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

کد آردوینو راه اندازی صفحه کلید

کد کامل در انتهای این روش قرار داده شده است. در اینجا قسمت های مهم کد را بررسی میکنیم.

#include <Keypad.h>

این خط کتابخانه Keypad را فراخوانی می کند که عملکردهایی را برای ارتباط صفحه کلید با آردوینو فراهم می کند، اما قبل از گنجاندن آن در کد، باید این کتابخانه را در Arduino IDE نصب کنید.

به منوی sketch>include library> management libraries بروید. سپس keypad را جستجو کنید. به دنبال Keypad by Mark Stanley, Alexander Brevig بگردید. در آنجا روی دکمه install کلیک کنید.

نصب کتابخانه Keypad

const byte ROWS = 4; //4 ردیف
const byte COLS = 4; //4 ستون

ثابت‌های ROWS و 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}; // پین های مربوط به ردیف ها
byte colPins[COLS] = {5, 4, 3, 2}; // پین های مربوط به ستون ها

در مرحله بعد، یک آرایه کاراکتر دو بعدی به نام “keys” برای ذخیره برچسب های دکمه صفحه کلید ایجاد می شود. آرایه های rowPins و colPins به ترتیب برای ذخیره شماره پین های متصل به سطرها و ستون های صفحه کلید استفاده می شوند.

//یک آبجکت از کتابخانه کیپد ایجاد میکنیم
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

آبجکت Keypad با استفاده از تابع makeKeymap ایجاد می شود و از آرایه “keys”، آرایه “rowPins”، آرایه “colPins” و تعداد سطرها و ستون ها استفاده می کند.

void setup(){
  Serial.begin(9600);
}
void loop(){
  char key = keypad.getKey();// خواندن کلید
  // پرینت کردن کلید فشرده شده
  if (key){
    Serial.print("Key Pressed : ");
    Serial.println(key);
  }
}

در تابع setup() ارتباط سریال با نرخ باود 9600 آغاز می شود.

در تابع loop() از متد getKey() برای خواندن  کلید فشرده شده از روی صفحه کلید استفاده می شود و در صورت فشار دادن کلید، کلید فشرده شده با استفاده از تابع Serial.println() روی سریال مانیتور چاپ می شود.

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

پس از بارگذاری کد در آردوینو، مانیتور سریال را با نرخ باود 9600 باز کنید. اکنون چند کلید روی صفحه کلید را فشار دهید و متوجه خواهید شد که آن مقادیر در سریال مانیتور نمایش داده می شود.

این کد هر آنچه را که روی کیپد فشار میدهید در سریال مانیتور چاپ میکند:

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
#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}; //اتصال پایه های ردیف
byte colPins[COLS] = {5, 4, 3, 2}; //پین های مربوط به ستون ها
//ایجاد یک آبجکت از کتابخانه کیپد
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
  Serial.begin(9600);
}
void loop(){
  char key = keypad.getKey();// خواندن کلید
  // بررسی میکنیم آیا کلیدی فشرده است؟
  if (key){
    Serial.print("Key Pressed : ");
    Serial.println(key);
  }
}

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

اتصال کیبورد به آردوینو (راه اندازی کیبورد پروژه آردوینو)
اتصال کیبورد به آردوینو (راه اندازی کیبورد پروژه آردوینو)

در این پروژه ما قصد داریم یک صفحه کلید 4*4 را به برد آردوینو Uno متصل کنیم. همه ما میدانیم که صفحه کلید یکی از مهم ترین ابزار های ورودی در مهندسی الکترونیک است. صفحه کلید ساده ترین و ارزان ترین راه برای ارسال دستورات یا دستورالعمل ها به یک سیستم الکترونیکی است. هر زمانی که یک کلید در ماژول صفحه کلید فشرده بشود، آردوینو Uno آن را تشخیص میدهد و کلید مربوط را در ال سی دی کاراکتری 16*2 نمایش میدهد.

همچنین ببینید : پروژه قفل امنیتی در با کیبورد عددی آردوینو با قفل دست ساز

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

  • آردوینو Uno
  • منبع تغذیه 5 V
  • خازن 100 پیکو فاراد
  • دکمه (2 قطعه)
  • مقاومت 1 کیلو اهم (2 قطعه)
  • ماژول صفحه کلید 4*4
  • ال ای دی
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

مدار راه اندازی کیپد با Arduino

مدار راه اندازی کیپد با Arduino

اتصالات مدار بسیار ساده ایی هستند. ما در ال سی دی کاراکتری 16*2 ، 16 پین داریم. اگر نور پس زمینه را در نظر نگیریم 14 پین باقی میماند. میتوانیم نور های پس زمینه را به برق وصل کنیم. در حال حاضر از این 14 پین، 8 پین داده D0-D7 هستند. 2 پین منبع تغذیه و 3 پین برای کنترل کنتراست کاراکتر ها و 3 پین کنترل اصلی هستند. ما میخواهیم ماژول صفحه کلید را به پین های 0-7 آردوینو Uno وصل کنیم.تمام 8 پین صفحه کلید به ترتیب متصل می شوند.

توضیحات کد پروژه

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

#include <LiquidCrystal.h> // کتابخانه ال سی دی کاراکتری
LiquidCrystal lcd(8, 9, 10, 11, 12, 13); //پین های RS,EN,D4,D5,D6,D7

در قسمت بعد کتابخانه کیپد را فراخوانی میکنیم و سپس دکمه های آن را تعریف میکنیم. >> دانلود کتابخانه Keypad.h

#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] = { 0, 1, 2, 3 }; // ردیف ها به پین 0 تا 3 متصل میشوند
byte colPins[COLS] = { 4, 5, 6, 7 }; // ستون ها به پین 4 تا 7 متصل میشوند

موارد موجود در فایل : شماتیک کامل ، فایل Hex ، فایل آردوینو ، و …

ثبت نام / ورود

4.4 (15 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

17 نظر

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

    1. سلام عزیز
      به همین شماره پایه های گفته شده در برد Uno در برد Nano هم میتوانید متصل کنید.

  2. سلام
    ممنونم از راهنماییتون
    اما نتونستم از اینتر و بک اسپیس استفاده کنم
    من به این شکل استفاده کردم
    char keys[ROWS][COLS] = {
    {‘1′,’2′,’3′,’A’},
    {‘4′,’5′,’6′,’B’},
    {‘7′,’8′,’9′,’C’},
    {‘BS’,’0′,’CR’,’D’}
    };
    هم داخل تک کوتیشن گزاشتم هم داخل دابل کوتیشن
    تو دابل کوتیشن که ارور میده
    تو تک کوتیشن هم کارکتر اخر چاپ میکنه
    کد های اسکی رو خوندم اما چیزی دستگیرم نشد
    ممنون میشم راهنمایی کنید به چه صورت استفاده کنم

    1. به جای CR این را قرار بدهید
      '\r\n'

  3. سلام
    ببخشید برای عملکرد دکمه هایی مثل enter , back space تو قسمت تعریف کارکترها چی باید بنویسیم

    1. سلام عزیز
      برای اینتر از CR و برای بک اسپیس از BS استفاده کنید. بهتر هست مروری به جدول کد های ascii داشته باشید.

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

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

    1. سلام جناب. منظورتون از مد ها رو بفرمایید

  5. سلام وقت بخیر مهندس اگه کیبورد لمسی داشته باشیم که یک ردیف و 4 ستون داشته باشه در اون صورت
    byte rowPins[ROWS]
    byte colPins[COLS]
    این دوتا به چه شکلی میشن؟

    1. سلام جناب. از این برنامه برای تست استفاده کنید.

      #define SCL_PIN 13
      #define SDO_PIN 12
        
      int keypad[16];
        
      void readKeypad() {
       for (int i = 0; i < 16; i++) {
         digitalWrite(SCL_PIN, LOW);
         keypad[i] = digitalRead(SDO_PIN);
         Serial.print(keypad[i]);
         digitalWrite(SCL_PIN, HIGH);
       }
       Serial.println("");
      }
        
      void setup() {
       Serial.begin(9600);
       pinMode(SCL_PIN, OUTPUT);
       pinMode(SDO_PIN, INPUT);
      }
        
      void loop() {
       readKeypad();
       delay(100);
      }
      
    1. مبلغ هارو هرجور حساب میکنم خیلی کمه . ولی در کانال عضو باشید تا از تخفیف ها و روزهای رایگان با خبر بشید :)

    2. سلام اگه بخوام اعداد رو روی سون سگمنت چهاذ تایی نشون بدم چطوری است ممنون میشم بگید

    3. سلام جناب. نیازمند تغییراتی کوچکی هست فقط باید به راه اندازی سون سگمنت با آردوینو مسلط باشید. میتونید مطالب سون سگمنت با آردوینو رو مشاهده کنید.

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

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