ArduinoMatrixScroller เป็น Library ของ Arduino ที่มีน้ำหนักเบา (lightweight) ซึ่งช่วยให้สามารถแสดงข้อความแบบเลื่อน (scrolling text) ในแนวนอนได้อย่างราบรื่นบน LED matrix ขนาด 12×8 ที่ติดตั้งมาในตัวของ Arduino UNO R4 (รุ่น WiFi และ Minima)
Library นี้ช่วยจัดการการทำงานของ LED matrix ในระดับ low-level และมี API ที่ใช้งานง่ายเพื่อแสดงข้อความตัวอักษรและตัวเลขแบบเลื่อน โดยไม่ต้องจัดการ frame buffers, timing หรือการตั้งค่าทิศทางการแสดงผล (display orientation) ด้วยตนเอง
แรงจูงใจ (Motivation):
Arduino UNO R4 มาพร้อมกับ LED matrix บนบอร์ด แต่การรองรับอย่างเป็นทางการยังจำกัดอยู่เพียงการแสดงผลแบบภาพนิ่ง (static frame) การเขียนโปรแกรมเพื่อให้ข้อความเลื่อนได้นั้นจำเป็นต้องใช้ Code ระดับ low-level ที่ซับซ้อน ทั้งในเรื่องการเลื่อนคอลัมน์ (column shifting), การควบคุม timing และการแก้ไขทิศทางภาพ
ArduinoMatrixScroller ถูกสร้างขึ้นเพื่อให้เป็นโซลูชันที่นำกลับมาใช้ใหม่ได้และมีความน่าเชื่อถือสำหรับการแสดงข้อความแบบเลื่อนบนแพลตฟอร์ม UNO R4
คุณสมบัติ (Features):
- การเลื่อนข้อความในแนวนอนที่ราบรื่น
- API ที่เรียบง่ายด้วย 3 methods
- รองรับตัวอักษร ASCII (A–Z, a–z, 0–9, ช่องว่าง)
- อัปเดตข้อความแบบ Real-time ผ่าน Serial Monitor
- ทิศทางของ LED ที่ถูกต้อง (ไม่มีปัญหาภาพสะท้อน)
- ความเร็วในการเลื่อนที่เหมาะสมที่สุด (80 ms ต่อ frame)
ฮาร์ดแวร์ที่จำเป็น:
- Arduino UNO R4 WiFi หรือ Arduino UNO R4 Minima
- LED matrix ขนาด 12×8 ในตัว (onboard)
ซอฟต์แวร์ที่จำเป็น
- Arduino IDE
- Arduino UNO R4 board package
- Arduino_LED_Matrix (มาพร้อมกับ board package)
หลักการทำงาน
- Library ใช้ Font ขนาด 5×7 pixel ที่ออกแบบเอง
- ตัวอักษรแต่ละตัวจะถูกแสดงผลทีละคอลัมน์และเลื่อนผ่าน LED matrix buffer ขนาด 12 คอลัมน์
- หน้าจอจะถูกรีเฟรชตามช่วงเวลาที่กำหนดเพื่อให้การเลื่อนข้อความราบรื่นและอ่านง่าย
การจัดการทิศทาง (orientation mapping) และการควบคุม timing ทั้งหมดจะถูกจัดการภายใน Library
ตัวอย่าง Code:
#include <MatrixScroller.h>
MatrixScroller scroller;
void setup() {
scroller.begin();
scroller.setText("HELLO WORLD");
}
void loop() {
scroller.update();
}
ตัวอย่างการรับค่าทาง Serial
#include <MatrixScroller.h>
MatrixScroller scroller;
void setup() {
Serial.begin(115200);
scroller.begin();
scroller.setText("HELLO UNO R4");
}
void loop() {
scroller.update();
if (Serial.available()) {
String text = Serial.readStringUntil('\n');
text.trim();
if (text.length() > 0) {
scroller.setText(text);
}
}
ตัวอักษรที่รองรับ:
- ตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่: A–Z
- ตัวอักษรภาษาอังกฤษตัวพิมพ์เล็ก: a–z
- ตัวเลข: 0–9
- ช่องว่าง
ตัวอักษรที่ไม่รองรับจะแสดงผลเป็นช่องว่าง
การประยุกต์ใช้งาน:
- การแสดงสถานะและการแจ้งเตือน
- การแสดงผล Debug output
- การสาธิตการใช้งาน LED matrix เพื่อการศึกษา
- ส่วนประกอบ UI แบบฝังตัวอย่างง่าย
หมายเหตุ:
- ความเร็วในการเลื่อนถูกกำหนดไว้ที่ 80 ms ต่อ frame และสามารถปรับแต่งได้ใน Library header หากจำเป็น
- ไม่จำเป็นต้องใช้ Servo หรือฮาร์ดแวร์ภายนอกอื่น ๆ