Buat dan Program Animasi Matriks LED RGB WS2812 8x8 & 16x16 dengan Arduino dan Excel
Komponen dan Perlengkapan
Arduino UNO
×
1
Matriks LED RGB WS2812 8x8
×
1
Kabel Jumper Machan/Femina
Hitam-Gnd, Merah-5v, Hijau-Data
×
3
Baterai 9V (Generik)
×
1
Konektor Jack Baril 9V
×
1
Header Machan 5 Posisi – 1 Baris – Panjang (0,1")
Hanya tiga pin yang diperlukan
×
1
Alat dan Mesin yang Diperlukan
Pakuin (Generik)
Kabel Solder, Tanpa Timbal
Tentang Proyek Ini
Saat pertama kali membeli matriks LED RGB WS2812 8x8, saya harap dapat mengaddressnya sebagai sistem koordinat XY tradisional. Sebaliknya, 64 LED dirangkaian serangkaian menjadi delapan baris delapan. Saya menemukan bahwa utilitas Excel Kevin Darrah, yang awalnya dirancang untuk matriks 16×16, dapat disesuaikan untuk mengontrol array 8×8. Dengan memodifikasi spreadsheet dan sketsa Arduino yang menyertainya, saya menciptakan alat serbaguna yang memungkinkan Anda memprogram animasi LED tanpa library eksternal.
Buku kerja Excel yang diperbarui, LED_Utility.xlsm, sekarang mendukung:
Penugasan RGB individual untuk setiap LED.
Perubahan properti dinamis melalui skrip VBA.
Pemindahan XY untuk mensimulasikan gerakan.
Paleta bawaan untuk pemilihan warna cepat.
Dukungan dual untuk matriks 8×8 dan 16×16.
Di bawah Anda akan menemukan instruksi langkah demi langkah untuk membangun hardware, mengonfigurasi utilitas Excel, dan mengunggah sketsa Arduino. Setiap proyek membangun pada yang terakhir, memperkenalkan konsep seperti loop, kondisional, dan fungsi modular.
Rangkap Hardware
Pasang matriks 8x8 ke Arduino UNO menggunakan header 5-pin:
Pasang DIN ke pin 8 pada Arduino.
Hubungkan +5V ke pin 5V.
Ground ke pin GND.
Untuk pengaturan ini, koordinat (0,0) merujuk ke sudut kiri atas matriks.
Ringkasan Utilitas Excel
Buka LED_Utility.xlsm – berisi tiga lembar:
Eight – antarmuka matriks 8×8.
Sixteen – antarmuka matriks 16×16.
ColMap – referensi praktis dari kode RGB umum.
Buku kerja disetel ke mode read-only secara default untuk melindungi pekerjaan Anda. Gunakan File → Save As setelah menghasilkan kode untuk melestarikan desain Anda.
Fitur utama pada lembar Eight:
Show – menampilkan nilai RGB untuk sel yang dipilih (0–255).
Var Map – menerima input numerik atau variabel tetapi tidak menunjukkan output.
Wrap Map – menambahkan fungsi modulus untuk menangani overflow koordinat dan mendukung variabel untuk digunakan nanti.
Clear – mengosongkan kedua grid input.
Setiap tombol menghasilkan blok kode C++ yang Anda salin ke sketsa Arduino. Kode diformat untuk fungsi kustom mapLEDXY(), yang mengonversi koordinat XY ke indeks LED yang sesuai.
Sketsa Arduino
Sketsa inti (LED_Arduino.ino) berisi elemen berikut:
// Pin definition #define WS2812_pin 8 // Total LED count #define numberOfLEDs 64 // RGB buffer (3 bytes per LED) byte RGB[192]; // Forward declarations void RGB_update(int LED, byte RED, byte GREEN, byte BLUE); void mapLEDXY(int x, int y, byte RED, byte GREEN, byte BLUE); void clearLEDs();
Rutinitas mapLEDXY() memetakan pasangan koordinat ke array linial, mengingat pola kabel zig-zag yang umum pada matriks WS2812.
Setelah menyalin kode yang dihasilkan ke dalam fungsi loop(), unggah sketsa. Matriks akan merespons segera kepada instruksi.
Proyek 1 – Persegi Merah Statis
Buat persegi merah 3×3 di koordinat (2,2) hingga (4,4). Di Excel, sel yang sesuai diatur ke 255 untuk merah dan 0 untuk hijau/biru. Salin kode yang dihasilkan ke baris 40 sketsa:
Unggah dan lihat persegi menyala. Cobalah dengan mengosongkan grid, mengubah warna, atau menambahkan batas.
Proyek 2 – Persegi Dua Warna
Duplikat sketsa sebagai Colour_Sq.ino dan modifikasi lembar Excel untuk membuat persegi kedua yang lebih besar. Gunakan tombol Show untuk menghasilkan kode dan tempelkan ke sketsa. Tambahkan sederhana delay dan clearLEDs() untuk bergantian antara kedua bentuk.
Proyek 3 – Persegi Bertumbuh
Dalam sketsa Grow.ino, desain persegi dalam yang lebih kecil dan dielilingi dengan batas pilihan Anda. Hapus nilai persegi dalam, buat kode luar, dan tempelkan kedua blok ke sketsa. Hasilnya adalah animasi persegi yang berkembang dan menyusut.
Proyek 4 – Animasi Spiral
Untuk pola kompleks, enkapsulasi setiap frame dalam fungsi terpisah dan panggil dari loop(). Contoh Spiral.ino menggunakan lima fungsi pembantu untuk membangun spiral 5 lapis. Pendekatan modular ini menjaga loop utama tetap ringkas dan membuat edit di masa depan mudah.
Proyek 5 – Loop Kecerahan Variabel
Perkenalkan loop for untuk menganimasikan kecerahan:
Gunakan fitur Wrap Map di spreadsheet untuk menangani overflow koordinat.
Penggunaan Matriks 16×16
Semua konsep di atas dapat diterapkan langsung ke matriks 16×16. Ganti LED_Arduino.ino dengan LED_Arduino16.ino dan beralih ke lembar Sixteen di buku kerja. Penyesuaian yang diperlukan adalah definisi numberOfLEDs dan perhitungan RGBlocation dalam mapLEDXY().
Ekstensi & Tips
Meskipun panduan ini difokuskan pada array 8×8 dan 16×16, metodologi yang sama berlaku untuk ukuran lain (misalnya, 8×32). Untuk setiap ukuran baru, perbarui konstanta numberOfLEDs dan modifikasi perhitungan indeks agar cocok dengan pola kabel matriks. Simpan buku kerja dalam mode read-only untuk menghindari kehilangan kode kustom secara tidak sengaja. Pertimbangkan untuk menggunakan papan yang lebih kecil, seperti Arduino Nano, jika konsumsi daya menjadi perhatian.