Tentang proyek ini
Pendahuluan
Proyek ini menggunakan 45 LED yang dapat diprogram APA-106 yang dikendalikan oleh Arduino UNO. LED ini mirip dengan strip LED yang dapat diprogram secara individual, jadi kami menggunakan perpustakaan Neo-piksel Adafruit untuk mengontrolnya. Satu pin pada UNO memprogram seluruh tampilan, karena satu jalur data berjalan ke semua LED dalam satu rangkaian.
Inspirasi untuk desain ini adalah dua proyek saya sebelumnya. Kubus RGB 5x5x5 kedua saya (Kubus RGB 5x5x5 lainnya) menggunakan LED yang dapat diprogram APA-106 dan tersisa sekitar 75 tambahan. Saya bisa saja membuat kubus 4x4x4 dari mereka, tetapi saya telah membuat banyak kubus baru-baru ini - saatnya untuk sesuatu yang lain. Proyek Seni Motor Servo saya dibangun sebagai segitiga dan desain segitiga itu menciptakan banyak pola yang menarik. Jadi proyek ini menggunakan 45 LED APA-106 yang disusun dalam pola segitiga untuk lebih mengeksplorasi seni segitiga.
Ini adalah proyek yang cukup mudah baik dari perspektif perangkat keras dan perangkat lunak. Mari kita lihat dulu perangkat kerasnya, lalu perangkat lunaknya.
Perangkat Keras
Hardware hanya terdiri dari UNO dan 45 LED. LED ini sangat terang dengan daya penuh, jadi kecerahan seluruh layar saya setel pada 30 pada skala 0 hingga 255. Pada tingkat itu, UNO dan semua LED dapat diberi daya langsung dari input USB UNO, jadi catu daya 1 amp - 5 volt adalah opsional.
Langkah pertama dalam konstruksi adalah membuat lubang yang dibor di sepotong kayu lapis berukuran 1/4 inci. Papan itu sendiri berukuran 12 inci di setiap tepinya. LED berjarak 1 inci terpisah dalam segitiga sama sisi yang dibangun dengan hati-hati. LED berukuran 8 mm, jadi saya mengebor lubang berukuran 8 mm yang membuat LED pas - tidak bergerak sama sekali setelah ditekan.
Di atas di sebelah kiri adalah LED APA-106. Tali panjang digiling. Data keluar adalah petunjuk di sebelah kanan di sebelah tepi datar paket. Kabel pertama di sebelah kiri adalah data masuk, dan kabel berikutnya antara data masuk dan arde adalah +5V. 4 sadapan ini ditekuk seperti yang ditunjukkan di sebelah kanan. Kabel ground memiliki tikungan kedua di ujungnya - tujuannya hanya untuk mengidentifikasi kabel ground, karena sulit untuk melihatnya setelah semuanya ditekuk.
Gambar di atas menunjukkan bagaimana papan disambungkan. Pertama perhatikan bahwa garis data berwarna biru bergerak maju mundur saat LED dirantai bersama. Artinya pada baris ganjil data mengalir dari kiri ke kanan, sedangkan pada baris genap, data mengalir dari kanan ke kiri. Ini juga menyebabkan rel daya berbeda untuk baris ganjil versus baris genap. Untuk baris ganjil, kabel ground naik dan kabel +5v turun, lalu sebaliknya untuk baris genap.
Foto di atas menunjukkan kabel. Itu semua dilakukan dengan 22 gauge kawat tembaga kaleng telanjang. Saya mengumpulkan rel tanah di sebelah kiri dan rel +5V di sebelah kanan. Anda harus melakukan yang sebaliknya. Setiap sambungan jalur data di papan saya harus melalui rel listrik, tetapi jika Anda mengalihkan ground ke kanan dan +5v ke kiri, jalur data tidak perlu melewati apa pun!
Di atas adalah tampilan kabel dari dekat. Perhatikan bagaimana jalur data di sebelah kanan melintasi bagian atas rel listrik 5 volt.
Foto di atas menunjukkan papan yang sudah jadi. Saya menggunakan beberapa potongan plastik kecil sebagai penyangga UNO dan memasang UNO di papan dengan sedikit lem panas.
Foto di atas menunjukkan segitiga dalam sebuah kasus. Yang ini adalah cetakan 3D dari file .stl yang disertakan di sini. Anda juga bisa membuatnya dengan cukup mudah dari kayu lapis.
Perangkat Lunak
Perangkat lunak cukup mudah berkat perpustakaan neo-piksel Adafruit. Ini memberi kita setPixelColor(# dalam rantai, warna) untuk menentukan warna salah satu LED dan show() yang memperbarui seluruh tampilan ke perubahan terbaru. Perpustakaan menggunakan nomor 32 bit yang tidak ditandatangani untuk mewakili warna LED, masing-masing menyimpan 8 bit untuk intensitas merah, hijau, dan biru. Saya menggunakan skema ini secara langsung untuk mencerahkan dan meredupkan warna primer, tetapi untuk yang lainnya, saya menggunakan skema manajemen warna sederhana saya sendiri, yang dipinjam dari kubus LED saya. Ini adalah skema sederhana di mana angka 1 hingga 42 mewakili palet warna pelangi, menambahkan 0 untuk Hitam (semua mati) dan 43 untuk Putih (semua menyala).
Anda mungkin telah memperhatikan dalam diagram pengkabelan di atas bahwa penomoran LED dimulai dengan 0 di bagian atas dan angka dari kiri ke kanan demi baris. Ini adalah sistem penomoran yang saya gunakan untuk mengidentifikasi LED. Itu tidak bolak-balik seperti baris data, jadi saya membuat versi setPixelColor saya sendiri yang mengacu pada LED dengan penetapan nomor saya dan memungkinkan saya untuk menentukan warna menggunakan palet warna 0 hingga 43 saya.
Hampir semua animasi atau efek yang Anda lihat di video digerakkan oleh tabel. Satu meja memberi tahu Anda cara menyapu dari sudut atas. Dua tabel lain menerjemahkan efek itu ke dua sudut lainnya. Tabel lain memberi tahu Anda LED di segitiga luar, lalu di tengah, lalu segitiga paling dalam. Semua berbagai tabel ini disimpan dalam memori program daripada RAM. Saya awalnya khawatir bahwa semua tabel ini akan memakan terlalu banyak ruang program yang berharga. Tetapi menggunakan pendekatan tabel ini terbukti sangat efisien dan ruang program tidak pernah menjadi masalah.
Program atau sketsa dibagi menjadi empat file atau tab di Arduino IDE. Yang pertama adalah deklarasi, tabel dan setup rutin. Yang kedua adalah loop utama yang hanya memanggil daftar berbagai animasi. Yang ketiga adalah animasi itu sendiri. Keempat adalah fungsi tujuan umum atau subrutin yang mendukung semua animasi.
Dalam video di atas Anda melihat pertunjukan asli dengan 15 animasi. Itu berlangsung sekitar 3 menit sebelum mengulangi. Namun, sejak itu, saya telah memperluas pertunjukan untuk menyertakan sejumlah animasi baru yang dapat Anda lihat dalam video di bawah ini.
Semua animasi dalam video di atas semuanya dilakukan dengan panggilan ke satu subrutin yang disebut rotasi(). Segitiga terdiri dari segitiga luar 24 LED, dan segitiga tengah 15 LED dan dan segitiga dalam 6 LED. Penyebut dari ketiga bilangan ini adalah 120. Jadi dalam 120 langkah kita dapat memutar isi seluruh segitiga 360 derajat. Itulah yang dilakukan rutin rotate(). Ubah pola awal, ubah arah rotasi, ubah kecepatan rotasi, dan Anda mendapatkan semua efek yang Anda lihat dalam video di atas.
Pertunjukan di unduhan sekarang termasuk pertunjukan asli, serta semua animasi di atas, menghasilkan pertunjukan dengan 26 animasi yang berlangsung 5 menit sebelum diulang.
Kode
- Kode Arduino untuk Segitiga Seni
Kode Arduino untuk Segitiga SeniArduino
Ini adalah file zip dengan tes rutin, pertunjukan dengan 26 animasi, dan petunjuk untuk menggunakan pustaka Neo-pikselTanpa pratinjau (hanya unduh).
Suku cadang dan penutup khusus
File .stl untuk enklosur Skema