[Arduino] แสดงตัวอักษรบน Dot Matrix MAX7219 8x8 4 ชุด

Teerapong Singthong 👨🏻‍💻
iamgoangle
Published in
3 min readMay 22, 2019

ปล. จุดที่ปรากฏบน LED Matrix ตัวที่ 2 จากซ้าย น่าจะเป็นปัญหาจากทางฮาร์ดแวร์เอง เวลาจ่ายไฟให้แถวที่ 7 ไฟแถว 8 ดังแสดงด้วย

วันนี้เราจะมาลองสร้างชุดโปรแกรมสำหรับแสดงผล ออกทาง LED Dot Matrix ขนาด 8x8 จำนวน 4 ชุด หรือ 256 pixel กันครับ

Output พวก LED ที่อยู่ในโลกของวงจรอิเล็กทรอนิกส์นั้น มีอยู่มากมายอยู่รอบตัวเราครับ เช่น LED, RGB Diode, 7-Segment และ Dot Matrix

หน้าตาของ LED Dot Matrix ที่มาพร้อม Driver MAX7219

LED Matrix Driver MAX7219 IC Driver Module + LED 3mm Dot Matrix 8x8 ขนาด 30mm x 30mm

ราคานั้น 100–250 บาท แล้วแต่ร้าน ถ้าเป็นบ้านหม้อ 250 บาท แต่ถ้าสั่งออนไลน์จากจีนราคา 100–180 บาทประมาณนี้ ซึ่งข้อดีของการซื้อแบบนี้เลย เราได้โมดูล และ ชิพเซท ที่พร้อมใช้งาน ไม่ต้องมาบักกรีเองเพื่อเชื่อมทั้ง 4 ตัวเข้าด้วยกัน ซึ่งมันค่อนข้างซับซ้อนมาก หากจะทำเอง

MAX7219 IC Driver

Manual

ข้อมูลเพิ่มเติม MAX7129 ถือเป็นพระเอกของงานนี้เลยครับ แต่เดิมนั้นถ้าผมเข้าใจไม่ผิดนะ (ขอรื้อฟื้นความหลังสมัยเรียนอิเล็กทรอนิกส์สักนิด) เขาใช้ในวงการ 7 Segment กรณีต่อหลายๆจุด หรือ บอร์ดไฟที่ต้องการตัวเลขหลายๆหลักเข้าด้วยกัน

โดยรายละเอียดว่าแต่ละขาของไอซีตัวนี้ทำงานยังไง ผมขอข้าม เพราะ ผมก็ลืมไปหมดแล้ว…ฮ่าาา

ติดตั้ง Library (สำหรับ Mac)

เปิด Arduino IDE จากนั้น เลือก Manage Libraries แล้วทำการอัพโหลดเข้าไป หรือ ง่ายกว่านั้น git clone ไปที่ /Users/<your_user>/Documents/Arduino/libraries

LedControl

เลือกตัวไหนก็ได้ จากนั้นลองออกแบบ Dot Matrix bytes[] ด้วยโปรแกรม

Dot Matrix Editor

เป็นโปรแกรมช่วยออกแบบstatus 0 | 1 บน Dot matrix จำลองบนเวป แล้วทำการแปลง เป็น byte[] ให้เราไปใช้งานต่อ ถ้าไม่ใช้โปรแกรมช่วย เราต้องนั่ง point 0, 1 บน matrix เอง เช่น ตำแหน่ง [1, 1] = 1 จะเป็นการบอกสถานะไฟติด ที่ column 1 แถว 1 ประมาณนี้

https://xantorohara.github.io/led-matrix-editor/

Circuit

Example Code

Demo

จากตัวอย่างเป็นโปรเจคง่ายๆในการแสดงข้อความไปยัง dot matrix บนบอร์ด Arduino UNO R3 นอกจากนี้ยีงมี Library ของอีกค่ายที่ผมแนะนำ แต่มันยังมีบั๊กอยู่ ซึ่ง วิธีการ มีดังนี้

MD_MAX72XX = 2.6.0
MD_Parola = 2.6.4

เปิดไฟล์ MD_MAX72.h และทำการแก้ ตามโค๊ดด้านล่าง [Ref]

/**
\def USE_PAROLA_HW
Set to 1 (default) to use the Parola hardware modules. The
software was originally designed to operate with this hardware type.
*/
#define USE_PAROLA_HW 0
และ/**
\def USE_FC16_HW
Set to 1 to use FC16 hardware module kits.
FC16 modules are similar in format to the ICStation modules but are wired differently.
Modules are identified by a FC-16 designation on the PCB
*/
#define USE_FC16_HW 1

จากนั้นทดสอบโค๊ดง่ายๆ

รับค่าทาง Serial monitor

ขอให้สนุกกับการคราฟงานใหม่ๆครับ ~~

--

--

Teerapong Singthong 👨🏻‍💻
iamgoangle

Engineering Manager, ex-Solution Engineering Lead at LINE | Tech | Team Building | System Design | Architecture | SWE | Large Scaling System