กลับไปหน้ารวมไฟล์
arduino-keypad-4x4-c9022d.md

ใช้ Keypad Module กับ Arduino: ตั้งแต่พื้นฐานจนถึงการใช้งานจริง

ในโลกของ Embedded Systems การรับอินพุตจากผู้ใช้เป็นหนึ่งในองค์ประกอบที่สำคัญมาก Keypad หรือคีย์แพด เป็นอุปกรณ์มาตรฐานที่เหล่าวิศวะชอบใช้ เพราะทนทาน ประหยัดขา I/O และใช้งานง่าย บทความนี้จะพาน้องๆ ลงลึกถึงการทำงานของ Keypad แบบต่างๆ และเทคนิคการเขียนโปรแกรม Arduino แบบมืออาชีพเพื่อควบคุมมัน


ทำไมต้องใช้ Keypad Matrix?

ในการออกแบบวงจร ถ้าเราต้องการปุ่ม 16 ปุ่มแล้วต่อแบบธรรมดา เราต้องใช้ขา Arduino ถึง 16 ขา ซึ่งเปลืองทรัพยากรมาก แต่ถ้าเราใช้โครงสร้างแบบ Matrix (แถวและคอลัมน์) เราสามารถลดการใช้ขาลงเหลือแค่ 8 ขา (สำหรับ 4x4) ได้ โดยอาศัยหลักการสแกนสัญญาณไล่ไปตามแถวและคอลัมน์

ประเภท Keypad ยอดนิยม

สำหรับโปรเจค Arduino เราสามารถเลือก Keypad ขนาดต่างๆ ให้เหมาะกับการใช้งานได้:

1. Keypad 4x4 เป็นโมเดลยอดฮิตที่สุด มีตัวเลข 0-9 และตัวอักษร A-D รวมถึงสัญลักษณ์ * และ # เหมาะกับโปรเจคที่ต้องการปุ่มฟังก์ชันเพิ่มเติม

รูปที่ 1: Keypad 4x4 แบบมาตรฐาน

2. Keypad 3x4 หน้าตามันเหมือนปุ่มโทรศัพท์มือถือรุ่นเก่าๆ นั่นแหละ เหมาะกับการใช้งานที่เน้นรับค่าตัวเลขเป็นหลัก เช่น เครื่องคิดเลขหรือระบบใส่รหัสผ่าน

รูปที่ 2: Keypad 3x4 (สไตล์โทรศัพท์)

3. Keypad 1x4 มักใช้ในงานที่ต้องการปุ่มควบคุมทิศทางหรือปุ่มเมนูพื้นฐาน (เช่น ขึ้น, ลง, ตกลง, ยกเลิก) มีขนาดกะทัดรัดและติดตั้งง่าย

รูปที่ 3: Keypad แถวเดียว 1x4

การกำหนดขา (Pin Configuration)

หัวใจสำคัญของการใช้ Keypad คือการระบุขา แถว (Rows) และ คอลัมน์ (Columns) ให้ถูกต้อง โดยทั่วไป Keypad แบบเมมเบรนจะมาพร้อมสายริบบอนที่บอกตำแหน่งขาไว้ ดังรูป

รูปที่ 4: การจัดเรียงขาของ Keypad 4x4
รูปที่ 5: แผนภาพวงจรภายในแสดงการเชื่อมต่อแบบ Matrix

สำหรับการใช้งานในสภาพแวดล้อมที่ทนทานสูง (เกรดอุตสาหกรรม) สามารถเลือก Keypad คุณภาพดีที่มีความรู้สึกกดดีกว่าแบบเมมเบรนทั่วไปได้

รูปที่ 6: Keypad คุณภาพสูงสำหรับงานอุตสาหกรรม
รูปที่ 7: Keypad ที่มีการก่อสร้างทนทานเป็นพิเศษ

การวิเคราะห์ตรรกะซอฟต์แวร์ (Code Logic Analysis)

เวลาเขียนโปรแกรมใช้งานไลบรารี <Keypad.h> นี่มันมีหลักการทำงานเบื้องหลังที่ตั๊กๆ น่าสนใจเลยนะ มาดูกัน

  1. การสแกน (Scanning): โปรแกรมจะเซ็ตขา "แถว (Row)" เป็น OUTPUT และขา "คอลัมน์ (Column)" เป็น INPUT พร้อมเปิด Internal Pull-up Resistors ให้เรียบร้อย
  2. การตรวจจับ (Detection): เมื่อถึงเวลาที่กำหนด โปรแกรมจะส่งสัญญาณ LOW ไปที่แถวที่ 1 แล้วตรวจดูว่าคอลัมน์ไหนกลายเป็น LOW บ้าง ถ้าตรวจเจอ แสดงว่าปุ่มตรงจุดตัดแถว-คอลัมน์นั้นถูกกดแล้วจ้า
  3. การดีบาวนซ์ (Debouncing): ไลบรารีมีดีเลย์เล็กๆ ซ่อนไว้เพื่อป้องกันสัญญาณรบกวนจาก "การสั่นของหน้าสัมผัสโลหะ" เวลากดปุ่ม ทำให้ได้ค่าที่แม่นยำขึ้น ห้ามช็อตนะตัวนี้!

ตัวอย่างโครงสร้างโค้ดพื้นฐาน:

#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'}
};

// เชื่อมขา Arduino กับ Keypad
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};

// สร้างออบเจ็กต์ Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

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

void loop(){
  char key = keypad.getKey(); // อ่านค่าปุ่มที่ถูกกด

  if (key){
    Serial.println(key); // แสดงผลบน Serial Monitor
  }
}

สรุปและดาวน์โหลด

การเลือกคีย์แพดที่ใช่ ขึ้นอยู่กับงานที่ทำเลยวัยรุ่น ถ้าทำโปรเจกต์ต้นแบบแบบประหยัดงบ Membrane Keypad ก็จัดไป แต่ถ้าจะทำพวกตู้ ATM หรือระบบรักษาความปลอดภัย ต้องเลือกคีย์แพดโลหะหรือพลาสติกเกรดดีๆ ถึงจะทนทานไปยาวๆ

สามารถดาวน์โหลดโค้ดตัวอย่างเต็มๆ และโปรเจกต์ที่เกี่ยวข้องได้จาก GitHub ของเรา สู้งานนะน้อง!

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
  - "1x Arduino Web Editor"
author: "jehankandt"
category: ""
components:
  - "1x Button Pad 4x4 - LED Compatible"
  - "1x Arduino UNO"
description: "มาแกะกล่องเจ้า Keypad 4x4 กันดีกว่า ว่าจะเอามาทำโปรเจคอะไรได้บ้าง ตึงๆ ทั้งรับรหัสลับ สั่งงานมอเตอร์ หรือจะเล่นกับ Interrupt ก็จัดไป ตามพี่มาเลย!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/24da9134-7f0c-47ad-8977-49c1b008a398.ino"
encryptedPayload: "U2FsdGVkX1/q0LUDjX1y2npVp/EGr6+Cw+puhyR/z+2E2bltrGm+c6P+NJbr7JKMX9CaXAtUqZf9+ZrArK5Xrm/NpWC7KkF1ChAEXONRsu5KnUZzzzbNsldoCgawOqa6"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-keypad-4x4-c9022d_cover.jpg"
lang: "en"
likes: 3
passwordHash: "d21f8f44793ef7f8ba6fde4bb64ded392c97ea6afd02e87fcf3c5060072bb8d3"
price: 435
seoDescription: "Learn how to use an Arduino Keypad 4x4 for your projects with step-by-step wiring and coding tutorials."
tags:
  - "kids"
title: "มาลุยกับ Keypad 4x4 บน Arduino กัน! งานง่ายแต่หล่อ วัยรุ่นต้องลอง"
tools: []
videoLinks: []
views: 20779