Key Matrix: วิธีลดจำนวนขา GPIO ในโปรเจกต์ไมโครคอนโทรลเลอร์

สาย Maker อย่างเรา บางทีก็อยากจะหยิบเอาของเก่าๆ เช่น รีโมตทีวี โทรศัพท์บ้าน หรือเครื่องคิดเลขเก่า มาแฮ็กปุ่มกดเพื่อทำเป็นโปรเจกต์ใหม่ (เช่น แปลงเครื่องคิดเลขเป็นคีย์บอร์ด หรือทำเป็นแป้นรหัสผ่านประตู) แต่ปัญหาที่เจอประจำคือ... "ปุ่มมันเยอะเกินไป แต่ขาไมโครคอนโทรลเลอร์ (I/O Pins) มีไม่พอ!"

ไม่ต้องกังวลไปครับ! อุปกรณ์อิเล็กทรอนิกส์ส่วนใหญ่ในโลกนี้มีเทคนิคการต่อสายไฟที่เรียกว่า Key Matrix (หรือ Multiplexing) ที่ช่วยให้เราควบคุมปุ่มหลักสิบปุ่มได้ โดยใช้ขา I/O แค่ไม่กี่ขาเท่านั้น วันนี้เราจะมาเจาะลึกวิชานี้กัน


ทฤษฎี Key Matrix: ปุ่มเยอะแต่ใช้ขานิดเดียว

สมมติว่าคุณมีแป้นพิมพ์ตัวเลข 9 ปุ่ม ปกติคุณอาจจะคิดว่าต้องใช้ขา I/O ถึง 9 ขา แต่ถ้าเราต่อแบบ เมทริกซ์ (Matrix) เราจะจัดกลุ่มมันเป็นตาราง 3x3 (3 แถว แนวนอน และ 3 คอลัมน์ แนวตั้ง)

เรากำหนดให้ 3 ขาของบอร์ดเป็นขา "ปล่อยไฟ (Output)" สำหรับแต่ละแถว และอีก 3 ขาเป็นขา "รับไฟ (Input)" สำหรับคอลัมน์ เมื่อเราสลับปล่อยไฟทีละแถวอย่างรวดเร็ว (Scanning) แล้วเช็คว่ามีไฟวิ่งเข้าคอลัมน์ไหนไหม เราก็จะรู้ทันทีว่าปุ่มไหนถูกกดอยู่ สรุปคือ เราใช้ขาแค่ 6 ขา เพื่อคุมปุ่มถึง 9 ปุ่ม! ยิ่งปุ่มเยอะ เทคนิคนี้ยิ่งประหยัดขา I/O ได้มหาศาล

*ทริค: สำหรับขั้นแอดวานซ์ ถ้าเราใช้เทคนิคที่เรียกว่า Charlieplexing เราจะสามารถใช้ขา I/O จำนวน n ขา เพื่อคุมปุ่มได้ถึง (n² - n) ปุ่มเลยทีเดียว!

คลิกเพื่อดูภาพไดอะแกรมการต่อวงจร Matrix (View More)
Simple 3x3 Matrix Layout
Advanced Pin Layout
Calculator Matrix PCB
Spreadsheet Mapping
Carbon Traces on PCB

วิธีไล่สายไฟบนแผงวงจร (Reverse Engineering)

เวลาเราแกะอุปกรณ์เก่าๆ ลายวงจรมันจะไม่ได้เรียงสวยงามเหมือนตาราง 3x3 หรอกครับ วิธีแก้คือการใช้ มัลติมิเตอร์ (Multimeter) ตั้งค่าโหมดเช็คความต่อเนื่อง (Continuity) แล้วทำตามนี้:

  • จิ้มหัววัดไปที่ขาข้างนึงของปุ่มหมายเลข "1" แล้วเอาหัววัดอีกข้างไล่จิ้มหาปุ่มอื่นๆ ดูว่ามันเชื่อมกับปุ่มไหนบ้าง (เช่น มันอาจจะต่อเข้ากับปุ่ม 3, 5, 9)
  • จดข้อมูลที่ได้ลงใน Spreadsheet (Excel/Google Sheets)
  • ทำแบบนี้ไปเรื่อยๆ จนครบทุกปุ่ม สุดท้ายคุณจะได้แผนผังออกมาว่า ต้องเช็คไฟที่พอร์ตไหนถึงจะรู้ว่าปุ่มไหนโดนกด

เมื่อไล่ลายวงจรจนไปรวมกันที่ชิปหลักหรือพินสายแพรได้แล้ว เราก็แค่ขูดแผ่น PCB เล็กน้อยเพื่อบัดกรีสายไฟเข้ากับไมโครคอนโทรลเลอร์ของเราได้เลย

การเขียนโค้ดและข้อควรระวัง

ส่วนของโค้ดนั้นง่ายมากครับ คุณสามารถเขียนลูปเช็คขา I/O สลับไปมา หรือจะใช้ Library สำเร็จรูป (เช่น MatrixKeypad) ก็ได้ ไมโครคอนโทรลเลอร์ยุคนี้เร็วพอที่จะกวาดหาการกดปุ่ม (Scanning) แบบแทบไม่มีดีเลย์เลยทีเดียว

⚠️ ข้อควรระวัง:

  • หากอุปกรณ์เดิมมีการกด 2 ปุ่มพร้อมกันบ่อยๆ ควรต่อ "ไดโอด (Diode)" คั่นไว้ในวงจรเมทริกซ์ เพื่อกันกระแสไฟไหลย้อนกลับ (Ghosting)
  • ถ้าคุณยังอยากให้อุปกรณ์เดิมใช้งานได้อยู่ ต้องเช็คแรงดันไฟ (Voltage) ให้ดี! ถ้าอุปกรณ์เดิมใช้ไฟ 3.3V แต่คุณเอาบอร์ด 5V ไปต่อ ขอบอกเลยว่าชิปของอุปกรณ์เดิมพังแน่นอน! (อาจจะต้องกรีดตัดลายวงจรเดิมทิ้งไปเลยถ้าไม่ได้ใช้แล้ว)

คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา

อ้างอิงและเรียบเรียงโดย: Globalbyteshop Blog

แหล่งที่มาต้นฉบับ:
- Hackaday: Back To Basics: Hacking On Key Matrixes
- MatrixKeypad Library (GitHub)
- ข้อมูลเพิ่มเติมเรื่อง Charlieplexing (Wikipedia)

แท็ก


Blog posts

© 2026 บริษัท โกลบอลโทรนิค อินเตอร์เทรด จํากัด, ขับเคลื่อนโดย Shopify

    • PayPal

    เข้าสู่ระบบ

    ลืมรหัสผ่านใช่ไหม?

    ยังไม่มีบัญชีใช่ไหม?
    สร้างบัญชี