NSE-MJB1 (8)
ماژول برد آنالوگ جویستیک ۲۴,۹۹۰ تومان۱۲۹,۰۰۰ تومانهر عدد
بازگشت به محصولات

ماژول صفحه کلید ماتریسی چهار در چهار

4×4 Matrix Keypad Module

در بعضی از پروژه ها لازم است تا میکرو کنترلر اطلاعاتی را توسط کاربر جهت تنظیم کردن ، دریافت کند. به طور نمونه یک میکرو کنترلر 40 پایه  (مثل ATmega32) دارای 32 خط ورودی و خروجی می باشد. بنابراین برای اتصال 16 کلید فشاری به شکل ساده ، به نصفی از ورودی و خروجی ها نیاز دارد.

ما می توانیم با استفاده از یک پورت هشت بیتی یک ماتریس ۴*۴ از کلید ها را به میکرو متصل کنیم.

با این ماژول

۲۴,۹۹۰ تومان۱۱۹,۰۰۰ تومانهر عدد

شناسه محصول: (NSE-KP44-SCH)

Size and packaging guidelines

یکا (واحد) علامت اختصاری شرح انگلیسی مقدار
1 متر m Meter 1
1 سانتی متر cm Canti Meter 2-^10
1 میلی متر mm Mili Meter 3-^10
1 اینچ in Inch 2.54cm
2 اینچ in Inch 5.08cm
3 اینچ in Inch 7.62cm
5 اینچ in Inch 12.7cm
تعداد قیمت تخفیف
5-10 ۲۴,۴۹۰ تومان هر عدد 2%
11-100 ۲۳,۷۴۱ تومان هر عدد 5%
101+ ۲۳,۲۴۱ تومان هر عدد 7%
24 افرادی که اکنون این محصول را تماشا می کنند!

تصاویر محصول

4x4 Matrix Keypad Module

ماژول صفحه کلید ماتریسی 4x4

هر روز که در مسیر اداره، دانشگاه، مدرسه یا … نیاز به پول پیدا می‌کنید سریع با مراجعه به یک دستگاه ATM یا خود پرداز پول دریافت می‌کنید. تا حالا چقدر به کیپد های این دستگاه‌ها دقت کرده بودید؟ همین کیپد های کوچک روزانه کار انسان‌های زیادی را راه می‌اندازد.

اگر شما بخواهید اطلاعات را به میکروکنترلر وارد کنید راه‌های زیادی دارید. مثلا از طریق پورت سریال (مطالعه آموزش پورت سریال)، استفاده از SPI و … . یکی از راه‌های ساده این است که با استفاده از کلید اطلاعات را میکروکنترلر بدهید. اما هر کلید یک پین از میکروکنترلر را مصرف می‌کند.

در بعضی از پروژه ها لازم است تا میکرو کنترلر اطلاعاتی را توسط کاربر جهت تنظیم کردن ، دریافت کند. به طور نمونه یک میکرو کنترلر 40 پایه  (مثل ATmega32) دارای 32 خط ورودی و خروجی می باشد. بنابراین برای اتصال 16 کلید فشاری به شکل ساده ، به نصفی از ورودی و خروجی ها نیاز دارد. ولی می توان به چندین روش متفاوت کلید های زیادی را حتی با یک ورودی تشخیص داد.

تصور کنید که بخواهید با استفاده از ۱۶ کلید اطلاعات را به میکرو وارد کنید. در این صورت دو پورت ۸ بیتی کاملا مصرف می‌شود و اگر پروژه‌ی شما به ادوات جانبی زیادی نیاز داشته باشد احتمالا با مشکل کمبود پورت مواجه خواهید شد. گذشته از این ۱۶ کلید جدا از هم فضای زیادی روی بورد مصرف می‌کند. پس باید به فکر راه کاری بهتر بود. چنین مشکلاتی باعث ابداع صفحه کلید‌های ماتریسی شد.

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

در غیر این صورت هیچ گونه اتصالی بین سطرها و ستون‌ها وجود ندارد. همان طور که در شکل بالا مشاهده می‌کنید. ۴ سطر و ۴ ستون وجود دارد که هیچ گونه اتصالی به هم دیگر ندارند. برای مثال اگر کلید s1 فشرده شود. سطر ۱ و ستون ۱ به هم دیگر وصل می‌شوند. برای اتصال این صفحه کلید کوچک به میکروکنترلر در بدترین حالت ۸ پین مصرف می‌شود. یعنی تا این جا توانستیم نصف پین‌ها را آزاد کنیم.

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

کیپدهای ماتریسی از نمونه صفحه کلیدهایی هستند که شما در موبایل، ماشین حساب، مایکرویو، اجاق، قفل در و … می‌بینید. شاید بتوان گفت که این صفحه کلید در همه جا وجود دارد! در پروژه‌های الکترونیک، این صفحه کلید یکی از بهترین روش‌هایی است که با استفاده از آن می‌توانید به کاربران این فرصت را دهید تا با پروژه شما ارتباط برقرار کنند. به علاوه، این صفحه کلید اغلب برای دسترسی به منو، وارد کردن رمز و کنترل کردن ربات لازم است.

کیپدهای مختلفی وجود دارد، اما ما در این پروژه به بررسی کیپدهای ممبرین 4×4 می‌پردازیم. بیایید کیپد 4×4 را به عنوان نمونه باهم بررسی کنیم. همان‌طور که در تصویر بالا می‌بینید، این کیپد 16 کلید دارد و پشت هر کلید سوئیچ ممبرین خاصی قرار گرفته است. همه سوئیچ‌های این کیپدها با مسیرهای هادی بهم متصل شده‌اند و زیر این پدها یک ماتریس 4×4 را تشکیل می‌دهند.

NSE-KP44-SCH3

اگر از 16 کلید این کیپد استفاده کنید، به 17 پایه ورودی نیاز خواهید داشت ( برای هر کلید یک پایه و یک پایه برای زمین). با این حال، با این آرایش ماتریس، شما تنها به 8 پایه میکروکنترلر (4 سطر و 4 ستون) برای اسکن کردن همه کلیدها نیاز خواهید داشت.

نحوه کار و نحوه اسکن کردن کیپد 4×4

نحوه عمکلرد کیپدها بسیار ساده است. با فشردن یک کلید، یکی از خط‌های سطر به یکی از خط‌های ستون وصل می‌شود. برای مثال همان‌طور که در انیمیشن زیر مشاهده می‌کنید، با فشردن کلید 4، ستون 1 و سطر 2 به یک‌دیگر متصل می‌شوند.

همان‌طور که در تصویر بالا می‌بینید، با فشردن هر کلید، ستون و سطر مربوطه به هم متصل می‌شوند.

  • میکروکنترلر، سطرها را خروجی و ستون‌ها را ورودی در نظر می‌گیرد.
  • سپس به یکی از سطرها مقدار HIGH می‌دهد.
  • بعد از آن، خطوط ستون را یکی یکی بررسی می‌کند.
  • اگر اتصال یک ستون LOW بماند، کلید آن سطر فشرده نشده است.
  • اگر همین ستون HIGH شود، میکروکنترلر تشخیص می‌دهد کدام سطر و ستون HIGH شده است.
  • در آخر، متناسب با سطر و ستون شناسایی شده، کلید فشرده شده را تشخیص می‌دهد.

اتصال کیپد به آردوینو ساده است. در ابتدا، پایه 1 صفحه کلید را به پایه دیجیتال 9 آردوینو متصل کنید و به همین ترتیب اتصالات را انجام دهید یعنی پایه  2 کیپد را به پایه 8 آردوینو وصل کنید و این روند را ادامه دهید.

نصب کتابخانه کیپد

برای اینکه بفهمید کدام کلید فشرده شده است، باید سطرها و ستون‌ها را دائما اسکن کنید. خوشبختانه کتابخانه Keypad.h پیچیدگی‌های غیر ضروری را برای شما کم کرده است تا با دستورات ساده بتوانید تشخیص دهید که کدام یک از کلیدها فشرده شده است. با کلیک بر روی لینک زیر می‌‎توانید این کتابخانه دانلود کنید:

برای نصب کتابخانه مسیر زیر را دنبال کنید:

Sketch > Include Library > Manage Libraries…

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

NSE-KP44-A1

کلمه keypad را در Library manager جستجو کنید. با این کار، کتابخانه‌های متعددی ظاهر می‌شود. شما باید کتابخانه نوشته شده توسط Mark Stanley, Alexander Brevig را پیدا و نصب کنید.

NSE-KP44-A2

کد آردوینو

دستورات زیر به شما نشان می‌دهد که چگونه کلید فشرده شده کیپد 4×4 را تشخیص دهید. حتی می‌توانید از این دستورات به عنوان مبنایی برای سایر پروژه‌های خود استفاده کنید.

// WWW.NIKISITE.COM
#include <Keypad.h>

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

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}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad

//Create an object of keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
Serial.begin(9600);
}

void loop(){
char key = keypad.getKey();// Read the key

// Print if key pressed
if (key){
Serial.print(“Key Pressed : “);
Serial.println(key);
}
}


خروجی این کد بر روی سریال به شکل زیر خواهد بود:

NSE-KP44-A3

توضیحات کد:

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

پس از آن، شما باید آرایه 2 بعدی keys[ROWS][COLS] را که نقشه کیپد را مشخص می‌کند، تعریف کنید. زمانی‌که یک کلید خاص از صفحه کلید فشرده شود، کاراکتر متناظر با آن کلید بر روی سریال مانیتور نمایش داده می‌شود. در کدهای بالا، کاراکترهایی که داخل آرایه آورده شده‌اند، به همان شکلی هستند که بر روی کیپد قرار دارند. با این حال، شما می‌توانید کاراکترهای مختلفی تعریف کنید. به عنوان مثال اگر می‌خواهید یک ماشین حساب بسازید، تنها کافی است آرایه را به شکل زیر تعریف کنید:

char keys[ROWS][COLS] = {

  {‘1′,’2′,’3′,’4’},

  {‘5′,’6′,’7′,’8’},

  {‘9′,’0′,’+’,’-‘},

  {‘.’,’*’,’/’,’=’}

};

پس از تعریف آرایه، باید یک شئ از کتابخانه Keypad ایجاد کنید. ساختار Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS ) پنج پارامتر دارد:

    makeKeymap(keys): این پارامتر، نقشه داخلی کیپد را مقداردهی می‌کند تا با نقشه‌ای که توسط کاربر تعریف شده است، یکسان باشد.

    rowPins  و  colPins: این دو پارامتر، پایه‌های آردوینو هستند که به سطرها و ستون‌های صفحه کلید متصل شده‌اند.

    ROWS  و  COLS: این دو پارامتر، تعداد سطرها و ستون‌های صفحه کلید هستند.

زمانی‌که شی کیپد ایجاد شد، می‌توانید با استفاده از دستور ساده ()getKey بفهمید که کدام یک از کلیدها فشرده است.

توابع مفید در کتابخانه Keypad

در کتابخانه Keypad، توابع مفیدی وجود دارد که شما می‌توانید از آن‌ها برای ساخت شئ Keypad استفاده کنید. برخی از آن‌ها را می‌توانید در ادامه مشاهده کنید:

    ()char waitForKey: این تابع همیشه منتظر است تا یک کلید فشرده شود. هشدار! این تابع همه کدها را تا زمانی که یک کلید فشرده شود، متوقف می‌کند. این موضوع به این معنا است که اگر شما از LED و LCD استفاده کنید، به استثنای وقفه‌ها، خبری از LED چشمک زن و به روزرسانی شدن نمایشگر LCD نخواهد بود.

    ()KeyState getState: این تابع، حالت فعلی هر کلید را برمی‌گرداند. 4 حالت کلید عبارت اند از: IDLE, PRESSED, RELEASED و HOLD.

    ()boolean keyStateChanged: این تابع شما را از تغییر وضعیت هر کلید با خبر می‌کند. یعنی هر زمان که کلیدی، حتی به صورت اتفاقی، روی کیپد فشرده شود ، این تابع شما را از این تغییر وضعیت مطلع می‌کند.

    setHoldTime(unsigned int time): به‌وسیله این تابع می‌توان مدت زمانی‌ (برحسب میلی ثانیه) را که یک کاربر باید یک کلید را نگه دارد تا حالت HOLD برای کلید تشخیص داده شود، تنظیم کرد.

    setDebounceTime(unsigned int time): با این تابع، شما می‌توانید مدت زمان Debounce را برحسب میلی ثانیه تنظیم کنید. یعنی هر زمان که کلیدی فشرده شود، با استفاده از این تابع می‌توانید از خطایی که به دلیل نوسانات کلید به وجود می‌آید، جلوگیری کنید.

    addEventListener(keypadEvent): با استفاده از این تابع می‌توانید هر نوع تغییری در صفحه کلید از جمله فشرده شدن، نگه داشتن و رها شدن کلیدها را تشخیص دهید.

 

لیست المان های NSE-KP44

Quantity CodeSymbol
16Push ButtonsSW
81x8 SIL Straight Male as Key Pin Header
4cm x 4cmSingle Side with Solder Mask and HelperPCB
				
					/**
  Arduino Calculator

  By Farhad Nikkhah
  https://www.NikiSite.com
  https://www.nikisite.com/product/nse-kp44/
  
*/

#include <LiquidCrystal.h>
#include <Keypad.h>

/* Display */
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);

/* Keypad setup */
const byte KEYPAD_ROWS = 4;
const byte KEYPAD_COLS = 4;
byte rowPins[KEYPAD_ROWS] = { 5, 4, 3, 2 };
byte colPins[KEYPAD_COLS] = { A3, A2, A1, A0 };
char keys[KEYPAD_ROWS][KEYPAD_COLS] = {
  { '1', '2', '3', '+' },
  { '4', '5', '6', '-' },
  { '7', '8', '9', '*' },
  { '.', '0', '=', '/' }
};

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KEYPAD_ROWS, KEYPAD_COLS);

uint64_t value = 0;

void showSpalshScreen() {
  lcd.print("www.NikiSite.com");
  lcd.setCursor(3, 1);
  String message = "Calculator";
  for (byte i = 0; i < message.length(); i++) {
    lcd.print(message[i]);
    delay(50);
  }
  delay(2000);
}

void updateCursor() {
  if (millis() / 250 % 2 == 0) {
    lcd.cursor();
  } else {
    lcd.noCursor();
  }
}

void setup() {
  Serial.begin(115200);
  lcd.begin(16, 2);

  showSpalshScreen();
  lcd.clear();
  lcd.cursor();

  lcd.setCursor(1, 0);
}

char operation = 0;
String memory = "";
String current = "";
uint64_t currentDecimal;
bool decimalPoint = false;

double calculate(char operation, double left, double right) {
  switch (operation) {
    case '+': return left + right;
    case '-': return left - right;
    case '*': return left * right;
    case '/': return left / right;
  }
}

void processInput(char key) {
  if ('-' == key && current == "") {
    current = "-";
    lcd.print("-");
    return;
  }

  switch (key) {
    case '+':
    case '-':
    case '*':
    case '/':
      if (!operation) {
        memory = current;
        current = "";
      }
      operation = key;
      lcd.setCursor(0, 1);
      lcd.print(key);
      lcd.setCursor(current.length() + 1, 1);
      return;

    case '=':
      float leftNum = memory.toDouble();
      float rightNum = current.toDouble();
      memory = String(calculate(operation, leftNum, rightNum));
      current = "";
      lcd.clear();
      lcd.setCursor(1, 0);
      lcd.print(memory);
      lcd.setCursor(0, 1);
      lcd.print(operation);
      return;
  }

  if ('.' == key && current.indexOf('.') >= 0) {
    return;
  }

  if ('.' != key && current == "0") {
    current = String(key);
  } else if (key) {
    current += String(key);
  }

  lcd.print(key);
}

void loop() {
  updateCursor();

  char key = keypad.getKey();
  if (key) {
    processInput(key);
  }
}
				
			
Keypad
ایرانی - طراحی ایرانی – تولید ایرانی – حمایت ایرانی
وزن 0.1 کیلوگرم
ابعاد 4 × 4 سانتیمتر
مالک

نیکی سایت

کنترل ها

,

لایه ها

یک لایه

طراح

فرهاد نیکخواه

کد محصول

NSE-KP44

انواع ارائه مدار

, , ,

نوع مدار

DIP

تعداد لایه های فیبر مدار چاپی

یک لایه

لایه محافظ

دارد

لایه راهنما

دارد

طراحی بردبورد

ندارد

کاتالوگ

دارد

نقشه شماتیک

دارد

نوع فایل

Altium Designer, PDF, ZIP

کشور سازنده

ایران

0 reviews
0
0
0
0
0

نقد و بررسی‌ها

پاک‌کردن فیلترها

هنوز بررسی‌ای ثبت نشده است.

.فقط مشتریانی که این محصول را خریداری کرده اند و وارد سیستم شده اند میتوانند برای این محصول دیدگاه(نظر) ارسال کنند.

در تهران فقط

پیک موتوری

تحویل حضوری

روشهای ارسال تهران و شهرستان ها

اداره پست جمهوری اسلامی ایران

پست سفارشی، پیشتاز، بین‌المللی، تیپاکس و پست پیشتاز خارج از کشور

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

در اداره پست جمهوری اسلامی ایران، برای ارسال مرسولات، روش‌های مختلفی وجود دارد که عبارتند از:

۱. پست سفارشی: این روش برای ارسال کالاهای کوچک و سبک و با ارزش کمتر از ۱۰۰ هزار تومان استفاده می‌شود. در این روش، هزینه ارسال بر اساس وزن و مسافت محاسبه می‌شود و زمان تحویل ۳ تا ۷ روز کاری است.

۲. پیشتاز: این روش برای ارسال کالاهایی با ارزش بیشتر از ۱۰۰ هزار تومان و یا کالاهایی که به سرعت باید تحویل داده شوند، استفاده می‌شود. در این روش، هزینه ارسال بر اساس وزن و مسافت محاسبه می‌شود و زمان تحویل ۱ تا ۳ روز کاری است.

۳. بین‌المللی: این روش برای ارسال کالاهایی به خارج از کشور استفاده می‌شود. در این روش، هزینه ارسال بر اساس وزن و مسافت و هزینه گمرکی محاسبه می‌شود و زمان تحویل بسته به مقصد و روش ارسال، متفاوت است.

۴. تیپاکس: این روش برای ارسال کالاهایی است که به سرعت باید تحویل داده شوند. در این روش، هزینه ارسال بر اساس وزن و مسافت و زمان تحویل مورد نظر مشتری محاسبه می‌شود.

۵. پست پیشتاز خارج از کشور: این روش برای ارسال کالاها به خارج از کشور استفاده می‌شود و هزینه ارسال بر اساس وزن و مسافت و هزینه گمرکی محاسبه می‌شود.

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