Arduino Projects [EP.6] : Arduino รับข้อมูลจาก 4×4 Matrix Keypad

ในบทความนี้เราจะมาใช้Arduino รับข้อมูลจาก 4×4 Matrix Keypad กันครับ เพื่อนๆอาจจะเคยเห็นเจ้า 4×4 Matrix Keypad กันมาบ้าง ราคาไม่แพงครับตัวละไม่เกิน 90บาท (โดยส่วนใหญ่นะครับ) แต่เห็นแล้วอาจจะรู้สึกว่าโหดูใช้ยากอ่ะ วันนี้เราจะมาสอนการต่อและการใช้งาน Arduino เพื่อรับข้อมูลจาก 4×4 Matrix Keypad กันครับ

หน้าตามันจะประมาณนี้ครับ

matrix 4x4 keypad arduino

โดยวงจรภายในจะเหมือนมีSwitch 4 แถว 4 คอลัมน์ โดยปกติเราจะเขียนรับข้อมูล โดยอาศัยหลักการ Scan Switch ครับแต่ เราเอากันง่ายๆครับต่อตามผมพิมพ์ตามผม สงสัยให้ถามไว้ครับยินดีอธิบาย

การต่อทำได้ตามนี้ครับ

  1. สายจากขา 1 ของ Keypad ไปที่ขา 2 ของArduino
  2. จากขา 2 ของ Keypad ไปที่ขา 3 ของArduino
  3. จากขา 3 ของ Keypad ไปที่ขา 4 ของArduino
  4. จากขา 4 ของ Keypad ไปที่ขา 5 ของArduino
  5. จากขา 5 ของ Keypad ไปที่ขา 6 ของArduino
  6. จากขา 6 ของ Keypad ไปที่ขา 7 ของArduino
  7. จากขา 7 ของ Keypad ไปที่ขา 8 ของArduino
  8. จากขา 8 on the keypad ไปที่ขา 9 ของArduino

matrix_keypad Arduino

โหลด keypad 4×4 arduino library ได้ที่นี่

Source Code Arduino Matrix 4×4 KEYPAD

 

#include <HCMatrixKeypad.h>
/* Sets how many times the same key must be scanned before it is accepted as
   pressed (settled). If you get multiple key presses then increase this value
   (max 255)*/
#define DEBOUNCE 10
#define R1 9 /* DIO for keypad row 1 */
#define R2 8 /* DIO for keypad row 2 */
#define R3 7 /* DIO for keypad row 3 */
#define R4 6 /* DIO for keypad row 4 */
#define C1 5  /* DIO for keypad column 1 */
#define C2 4  /* DIO for keypad column 2 */
#define C3 3  /* DIO for keypad column 3 */
#define C4 2  /* DIO for keypad column 4 */
HCMatrixKeypad Keypad(DEBOUNCE, C1, C2, C3, C4, ROWMARKER, R1, R2, R3, R4);
void setup()
{
    Serial.begin(9600);
}
/* Main program */
void loop()
{
  /* Scans the keypad once. This line needs to be run repeatedly */
  Keypad.Scan();
  
  /* Has a new key been pressed  */
  if(Keypad.New_Key())
  {
    /* If so the send the key to the serial port */
    Serial.print("Key Pressed: Row ");
    Serial.print(Keypad.Read() / 10); /* 10's column is the keypad row number */
    Serial.print(" Col ");
    Serial.println(Keypad.Read() % 10); /* 1's column is the keypad column number */
  }
  
}
Facebook Comments