พวกเราคงเคยเห็น LED Cube หลากหลายแบบกันมาบ้างแล้ว พอไฟติดทีไรก็มองหาลวดลายตระการตาเสมอ บางคนถึงขั้นอยากลงมือทำเจ้าก้อนไฟสุดอลังการนี้ขึ้นมาสักชิ้นเลยล่ะ
ในคู่มือนี้ พี่จะสอนวิธีทำ LED Cube (4x4x4) ให้น้องๆ กัน พี่ใช้ LED สีฟ้า แต่น้องจะใช้สีอื่นก็ได้ตามใจชอบ โปรเจกต์นี้ใช้เวลาทำเกือบสองวัน – วันแรกทำโครงสร้าง อีกวันเขียนโค้ด โปรเจกต์นี้ออกแบบมาสำหรับ Arduino Nano เป็นพิเศษ แต่ตอนแรกเจ้า Nano มันดันมีปัญหาเวลา upload โค้ด พอลองหลายรอบก็รู้ว่าเป็นที่บอร์ด ไม่ใช่โค้ดพี่ผิด! ตอนแรกพี่ใช้ Arduino Uno ไปก่อน แต่สุดท้ายก็แก้ปัญหา Nano ได้และใช้มันจนสำเร็จ


อุปกรณ์ที่ต้องใช้
- Arduino Nano – จะใช้ Arduino Mega 2560 เพื่อจัดการพอร์ต I/O ก็ได้นะ
- LED (x64) – LED ขนาดมาตรฐานทั่วไป แนะนำ 3mm หรือ 5mm
- ตัวต้านทาน (Resistor) (x4) - 220Ω – ตัวต้านทานจำกัดกระแส ป้องกัน LED เน่าตอนไฟเข้า
เครื่องมือและอุปกรณ์ประกอบ
- หัวแร้ง – แบบทั่วไป
- ตะกั่วบัดกรี
- คีมตัด
- คีมปากกลม
- แหนบ
- ไม้บรรทัด – 15 ซม.
- ลวดโลหะ – ยาว 4 นิ้ว หนา 20 gauge
- ลวดสายไฟ
- สตริปบอร์ด
- แผ่นกระดาษแข็ง / แผ่นไม้ / เทมเพลตพิมพ์ 3D (เอาไว้ทำจิก)
วิธีประกอบ
เคล็ดลับของ LED Cube สวยๆ คือความสมมาตร ดังนั้นขั้นตอนทำจิก (jig) สำคัญมาก!



- ทำจิก (Jig): ใช้ไม้บรรทัดวาดตารางบนกระดาษแข็งหรือแผ่นไม้ ให้มี 9 ช่อง แต่ละช่องขนาด 1"x1" เจาะรูตรงจุดที่เส้นตัดกัน ขนาดรูต้องเท่ากับเส้นผ่านศูนย์กลางของ LED จะได้จัดเรียง LED ให้อยู่ในระนาบเดียวกันเป๊ะๆ
- ต่อแต่ละชั้น: วาง LED ลงในจิก งาขาแอโนด (ขาบวก) ให้ขนานกับระนาบ วางลวดโลหะทับบน LED แล้วบัดกรีลวดเข้ากับแอโนดของ LED วางลวดอีกสองเส้นที่ด้านบนและล่าง แล้วบัดกรีเข้ากับลวดทั้งสี่เส้นเพื่อเพิ่มความแข็งแรง ทำซ้ำสำหรับอีกสามชั้นที่เหลือ
- ต่อคอลัมน์: วางลวดโลหะ 16 เส้น (ยาว 4 นิ้ว) เรียงเป็นตารางเหมือนที่วาดไว้ บัดกรีขาแคโทด (ขาลบ) ของ LED ในตำแหน่งแนวตั้งเดียวกันเข้าด้วยกัน (เชื่อมชั้นที่ 1 ถึงชั้นที่ 4 ในตำแหน่งเดียวกัน)
ก้อนไฟของน้องต้องออกมาคล้ายๆ ในรูปด้านบนนะ อย่าลืมสู้งานนะน้อง!
การเชื่อมต่อและตรรกะของระบบ
จะควบคุมหลอด LED ทั้ง 64 ดวงด้วยพอร์ตที่มีอยู่อย่างจำกัด เราต้องใช้เทคนิค มัลติเพล็กซ์ (Multiplexing) โดยควบคุม "เลเยอร์ (Layer)" และ "คอลัมน์ (Column)" แยกกัน ขา Arduino ที่ใช้ควบคุมเลเยอร์มีดังนี้:
- เลเยอร์ 01 (ชั้นล่างสุด) - A0
- เลเยอร์ 02 - A1
- เลเยอร์ 03 - A2
- เลเยอร์ 04 (ชั้นบนสุด) - A3
ส่วนคอลัมน์ทั้ง 16 จะเชื่อมกับขา Digital Pins ของ Arduino เพื่อกำหนดว่าหลอด LED ตัวไหนในเลเยอร์ที่กำลังทำงานอยู่จะติดสว่าง

การทำงานอาศัยหลักการ ความต่อเนื่องของการมองเห็น (Persistence of Vision หรือ POV) ครับ:
- โปรแกรมจะเปิดแต่ละเลเยอร์ให้ทำงานทีละชั้นด้วยความเร็วสูงมาก
- ขณะที่เลเยอร์หนึ่งกำลังทำงาน (เช่น A0 เป็น HIGH) โปรแกรมจะส่งสัญญาณไปที่ขาคอลัมน์เพื่อเลือกเปิด LED ที่ต้องการในเลเยอร์นั้น
- เมื่อวนครบทั้ง 4 เลเยอร์ด้วยความเร็วมากกว่า 60 ครั้งต่อวินาที ดวงตาของเราก็จะมองเห็นราวกับว่า LED ทั้งหมดติดพร้อมกัน จนเกิดเป็นรูปทรง 3D ขึ้นมา
จัดไปวัยรุ่น!
ผลลัพธ์สุดท้าย
สู้งานนะน้อง! ถ้ามีคำถามหรือข้อเสนอแนะเกี่ยวกับโปรเจกต์นี้ ก็คอมเมนต์ไว้ด้านล่างได้เลย