โปรเจกต์นี้ได้แรงบันดาลใจมาจาก OSU!Catch the beat หลักการคือจับลูกบอลที่ตกลงมาในเมทริกซ์ 8x8 เริ่มเกมมาด้วย 10 ชีวิต หายไป 1 ชีวิตถ้าจับพลาด แต่ได้คืนมา 2 ชีวิตถ้าจับได้! เมื่อความเร็วเพิ่มขึ้น น้องจะตามจังหวะทันมั้ย? มาลองดู!
Retro Rhythm: The Catch The Beat Experience
ได้แรงบันดาลใจจากโหมดยอดฮิต OSU!Catch กันเลยทีเดียว! Arduino Catch The Beat นี่เอาเกมจังหวะความเร็วสูงมาใส่ลงในตาราง LED $8\times8$ ธรรมดาๆ โดยใช้ โพเทนชิโอมิเตอร์แบบหมุน (Rotary Potentiometer) เป็นตัวควบคุม น้องต้องเลื่อน "ตัวจับ" ไปตามแถวล่างสุดของเมทริกซ์เพื่อสกัดกั้น "จังหวะ" (พิกเซล LED) ที่ตกลงมาก่อนที่มันจะถึงพื้น เรียกได้ว่าเป็นคลาสเรียนขั้นเทพสำหรับเรื่อง การแมปอินพุตแบบเรียลไทม์ (Real-Time Input Mapping) และ การตรวจจับการชน (Collision Detection) บน Arduino เลยล่ะ
กลไกเกมและการปรับความยาก
เกมนี้ถูกออกแบบมาให้เล่นเป็นช่วงสั้นๆ แต่ติดหนึบ!
- ระบบชีวิต: เริ่มเกมมาด้วย 10 ชีวิต ถ้าจับลูกบอลตกหล่นไปนึง เสียชีวิตไป 1 แต่ถ้าจับได้สำเร็จ จะได้ 1 คะแนน และได้ชีวิตคืนมา 2 ชีวิต (แต่ไม่เกินค่าสูงสุดนะ)
- ความเร็วที่เพิ่มขึ้น: ทุกๆ 4 คะแนนที่ได้ นาฬิกาภายในเกมจะเร่งขึ้น พิกเซลที่ตกลงมาจะเคลื่อนที่เร็วขึ้นเรื่อยๆ ต้องใช้รีเฟล็กซ์ที่เฉียบคมและมือที่นิ่งกับโพเทนชิโอมิเตอร์
- เสียงตอบรับ: มี ออดแบบแพสซีฟ (Passive Buzzer) คอยให้เสียงเอฟเฟกต์แบบชิปจูนเวลาจับได้ จับพลาด และเสียงไซเรน "เกมโอเวอร์" ที่น่ากลัว
การควบคุมแบบแม่นยำ: จากโพเทนชิโอมิเตอร์สู่เมทริกซ์
ความท้าทายทางเทคนิคหลักอยู่ที่การแปลงสัญญาณอนาล็อกให้เป็นตารางดิจิทัล:
- การปรับให้เรียบแบบอนาล็อก: ข้อมูลดิบ 10-bit ($0-1023$) จากโพเทนชิโอมิเตอร์ถูก "แมป" ลงมาให้เหลือแค่ 8 คอลัมน์ของเมทริกซ์ โค้ดใช้บัฟเฟอร์ซอฟต์แวร์เล็กๆ เพื่อให้แน่ใจว่าตัวจับจะไม่ "กระพริบ" ระหว่างคอลัมน์เพราะสัญญาณรบกวนทางอิเล็กทรอนิกส์
- ไดรเวอร์เมทริกซ์: โดยใช้ไลบรารี LedControl และชิปไดรเวอร์ MAX7219 โปรเจกต์นี้สามารถเรนเดอร์จังหวะที่ตกลงมาได้โดยไม่กระพริบ แม้ในความเร็วเกมระดับสุดขั้ว
- ตรรกะของเฟรม: ลูปเกมจัดการสามสถานะที่แตกต่างกัน: ตำแหน่ง "ตัวจับ" (แถวล่างสุด), "จังหวะที่ตกลงมา" (การเกิดแบบสุ่ม), และ "การตรวจสอบการชน" (เมื่อจังหวะซ้อนทับกับตัวจับ)
สร้างตู้เกมอาร์เคดของตัวเอง
เมื่อน้องเล่นจนชำนาญบนเบรดบอร์ดแล้ว โปรเจกต์นี้เหมาะมากที่จะเอาไปทำเป็น ตู้เกมอาร์เคดขนาดเล็ก (Miniature Arcade Cabinet) โดยการพิมพ์โครงตู้ด้วย 3D printer และใช้ปุ่มหมุน "Trimmer" ขนาดใหญ่ขึ้น น้องจะได้ของตกแต่งโต๊ะที่เอาไว้ท้าทายเพื่อนร่วมงานหรือเพื่อนๆ ได้เลย โปรเจกต์นี้แสดงให้เห็นว่าอุปกรณ์ฮาร์ดแวร์ง่ายๆ เมื่อจับคู่กับตรรกะที่ฉลาดๆ ก็สามารถสร้างประสบการณ์เกมที่ดึงดูดและดูโปรได้มากแค่ไหน
วิธีทำโปรเจกต์นี้:
ขั้นตอนที่ 1: เช็คการเชื่อมต่อ Arduino.

ขั้นตอนที่ 2: คัดลอกและวางโค้ดในสเก็ตช์ใหม่ของ Arduino IDE.
ขั้นตอนที่ 3: เชื่อมต่อ LED matrix, ออด และโพเทนชิโอมิเตอร์เข้ากับ Arduino.
ขั้นตอนที่ 4: เล่นเกมให้สนุกเลย ^^