Inspirasi untuk proyek ini adalah berbagai kurva yang dihasilkan oleh perpotongan silinder dan bidang! Saya ingin membuat pameran cahaya LED, tetapi saya telah membangun beberapa kubus LED baru-baru ini. Saya ingin melakukan sesuatu yang berbeda, baik dari segi perangkat keras maupun perangkat lunak. Dan saya pikir ini akan menjadi lingkungan yang menyenangkan untuk diprogram –sesuatu yang memiliki potensi sebesar kubus, tetapi yang sangat berbeda!
Saya memilih untuk menggunakan LED terprogram APA106 8mm untuk menara ini. Mereka lebih mahal dari LED RGB reguler, tetapi jauh lebih mudah untuk bekerja baik dari segi perangkat keras maupun perangkat lunak. Tidak ada shift register - semuanya dikontrol oleh dua baris data. Dan tidak ada ISR (interrupt service routine) dan tidak ada multiplexing antara lapisan LED - LED ini selalu menyala.
Saya memutuskan untuk membangun silinder/menara saya sebagai seperangkat 12 cincin yang ditumpuk di atas satu sama lain. Cincin-kincin ini berdiameter 8 inci, dan setiap cincin berisi 24 LED yang berjarak 1 inci (sebenarnya π * 8 / 24 tetapi dekat dengan satu inci). Cincin-kincin itu sendiri dipisahkan oleh 1 inci, jadi LED berjarak 1 inci ke kedua arah. Batang akrilik digunakan untuk mengikat cincin-cincin bersama-sama untuk membentuk menara.
LED APA106 dapat menarik 60 ma pada kecerahan maksimal dan putih, dalam kasus terburuk, menara ini bisa menarik 17 ampere! Namun LED ini sangat terang sehingga saya jarang mengatur kecerahan lebih dari 10% dalam perangkat lunak. Dan membuat seluruh menara putih sebenarnya tidak pernah dilakukan. Jadi dalam praktiknya, saya tidak pernah mengalami masalah menggunakan port USB untuk menyediakan dayanya. Dan jika Anda ingin menggunakan sumber daya terpisah, 2 ampere tampaknya bekerja dengan baik.
Konstruksi
Saya menemukan beberapa cincin logam berdiameter 8 inci di Amazon yang saya pikir akan menjadi dasar yang baik untuk cincin LED saya. Sebenarnya merupakan kejutan menyenangkan ketika saya menemukan bahwa saya dapat menyolder padanya dengan mudah! Istilah "mudah" adalah relatif - cincin itu berat dan membutuhkan banyak panas untuk membuatnya cukup panas, jadi pai listrik 40 watt saya diubah ke tingkat maksimal, dan biasanya harus menunggu 5-10 detik sebelum solder meleleh. Saya basahi cincin dengan solder terlebih dahulu sebelum mencoba menyolder LED padanya, dan selalu menggunakan clip heatsinks pada kaki LED.
Tapi saya sedang terlalu maju. Sebelum Anda bisa mulai menyolder LED ke cincin, Anda perlu melakukan lead-forming pada 24 LED sesuai dengan diagram di bawah ini
Sebagai bagian dari operasi lead-forming, saya membuat lipatan kecil di ujung kabel ground. Ini memudahkan untuk mengidentifikasi, dan juga memudahkan untuk melampirkannya ke cincin.
Langkah persiapan lain sebelum menyolder LED ke cincin adalah menandai 24 ruang merata pada cincin tempat LED akan ditempatkan. Saya juga menemukan bahwa perlu memegang cincin secara vertikal saat melampirkan LED. Saya akhirnya menggunakan kontraption di bawah ini untuk memegang cincin agar tidak bergerak,
Setelah beberapa LED disolder ke cincin, perlu untuk menghubungkan kabel data-in ke kabel data-out seperti yang ditunjukkan di bawah ini. Perhatikan bahwa clip-on heat sinks selalu digunakan untuk melindungi LED.
Setelah semua LED berada di cincin, Anda harus memiliki satu kabel data-in untuk cincin keseluruhan, dengan kabel data-out di seberangnya siap untuk pergi ke cincin di atasnya. Pada titik ini, kita siap untuk menghubungkan semua kabel +5 volt bersama-sama dengan sepotong kabel tembaga timah 22 gauge yang diurus. Urus sepotong kabel panjang 26 inci dengan memajang satu ujung di tangga dan menarik ujung lainnya dengan kerikil keras. Lalu lampirkan ke LED seperti yang ditunjukkan di bawah ini.
Ketika Anda telah memiliki cincin yang selesai, Anda dapat mengujinya, menggunakan skets pengujian yang saya sertakan. Pengujian penting - jauh lebih mudah untuk memperbaiki LED yang rusak atau solder dingin sekarang daripada saat itu berada di tengah menara yang selesai! Pengujian dilakukan dengan menghubungkan pin data-in yang terbuka ke pin6 UNO. Skets pengujian yang disertakan sedikit berbeda dari yang ada dalam video ini, tetapi harus menunjukkan kepada Anda jika cincin berfungsi dengan baik.
Sekarang Anda harus membuat 11 cincin lagi. Ini banyak pekerjaan, tetapi dengan sedikit latihan, Anda dapat menyelesaikan tugas pembuatan satu cincin dalam beberapa jam.
Penting bahwa LED di setiap cincin sejajar dengan rekan-rekannya di cincin lain. Jika LED berjarak dengan sempurna, ini bukan masalah, tetapi saya memiliki cukup banyak variasi kecil dalam jarak sehingga saya menemukan perlu menggunakan satu cincin sebagai templat untuk yang lain, selalu menempatkan pin data-in yang terbuka (yang tidak terhubung ke pin data-out) di tempat yang sama. (Jika Anda memperhatikan menara saya dengan seksama, dua cincin pertama tidak sejajar satu sama lain dengan baik. Tetapi setelah itu, saya menggunakan pendekatan templat ini dengan hasil yang sangat ditingkatkan.)
Setelah Anda memiliki setidaknya empat cincin yang dibangun, Anda dapat memulai proses penggalangan menara. Penggalangan awal empat cincin bawah mungkin adalah bagian paling kritis dari konstruksi. Kita tidak ingin membuat Menara Pisa yang miring! Untuk menyatukan cincin, Anda akan membutuhkan spasi 22mm tinggi untuk menciptakan ruang 1 inci antara cincin. Saya menggunakan plastik cetak 3D hitam untuk spasi saya, tetapi doweling 1/4 inci juga akan bekerja sama baiknya. Untuk memegang spasi agar tidak bergerak, saya menggunakan sedikit Blue Tack, perekat sementara.
Cincin-cincin diikat bersama-sama untuk membentuk menara menggunakan enam batang akrilik panjang 12 inci. Penting untuk menempatkan semuanya dengan tepat sebelum menerapkan batang-batang ini. Setelah batang-batang ditempel panas ke cincin, hampir tidak mungkin untuk membuat perubahan apa pun, jadi tempatkan semuanya di tempat yang Anda inginkan terlebih dahulu. Setelah semuanya berada di tempat, Anda dapat membalikkan menara ke samping dan tempel batang akrilik ke cincin dengan panas. Foto di bawah ini menunjukkan empat cincin pertama dengan tiga batang pertama yang terpasang. Tiga lagi kemudian dipasang untuk total enam. Batang-batang ditempatkan antara LED dengan 4 LED di antara setiap batang.
Setelah semua batang terpasang ke cincin, spasi dapat dihilangkan dan kemudian digunakan kembali sebagai cincin tambahan saat cincin lain ditambahkan. Ketika semua 12 cincin berada di tempat, kita siap untuk menghubungkan ground, +5v, dan garis data antara cincin. Ini dilakukan menggunakan kabel tembaga timah 22 gauge. Rel daya dihubungkan dengan semua 12 cincin secara paralel.
Terdapat dua garis data, masing-masing dengan 144 LED - satu untuk 6 cincin atas (yang akhirnya pergi ke pin 6 UNO) dan satu untuk 6 cincin bawah (yang akhirnya pergi ke pin 7 UNO). Setiap garis data dimulai dari cincin terendah dan berjalan ke cincin teratas. Saya awalnya berencana hanya memiliki satu garis data, tetapi pada cincin 8, saya mulai melihat beberapa flash cahaya aneh yang tidak diinginkan. Saya pikir pada awalnya mungkin karena rel daya, tetapi menambahkan beberapa kapasitor di seluruh rel tidak membantu, jadi saya terpaksa membagi menara menjadi dua garis data. Itu memecahkan masalah.
Jadi di atas adalah gambar menara yang selesai. Arduino UNO dipasang di bawah. Saya sebenarnya menggunakan 4 batang akrilik sisa saya untuk menggantungkan UNO, menggunakan lem panas untuk menempelkan semuanya bersama-sama. Pendekatan alternatif mungkin adalah memasang menara pada dasar dengan UNO di dalamnya. Terdapat 4 koneksi ke UNO, Ground dan +5v rel yang terhubung ke semua 12 cincin, dan dua garis data ke pin 6 dan 7.
Perangkat Lunak
LED terprogram seperti APA106 mudah digunakan karena ada beberapa perpustakaan yang menangani timing pulsa data yang digunakan untuk mengontrolnya. Untuk proyek-proyek sebelumnya yang saya lakukan dengan LED APA106 (kubus RGB 5x5x5 kedua saya dan proyek seni segitiga), saya menggunakan perpustakaan NeoPixel populer dari Adafruit. Tetapi untuk menara ini, saya memilih perpustakaan FastLED. Punya banyak fitur hebat ditambah beberapa fungsi matematika cepat yang saya pikir akan berguna. Ini juga memungkinkan saya untuk dengan mudah mengganti palet pelangi 43 langka yang cukup kasar saya dengan palet 256 langkah. Punya ratusan fungsi, palet yang telah ditentukan, dan hal lain yang belum saya gunakan untuk proyek ini, tetapi membuatnya menjadi pilihan yang hebat untuk proyek ini dan proyek masa depan. Dan fitur lain dari FastLED yang saya temukan sangat berguna adalah kemampuannya untuk dengan mudah melakukan fade.
Saya selalu suka memiliki fungsi yang memungkinkan saya untuk dengan mudah menentukan LED dan warnanya. Dengan menara ini, perlu berupa setColor(baris, kolom, warna), di mana baris adalah cincin mana yang berada dan kolom adalah posisi mana pada cincin tersebut. Rutin ini menangani semua konversi dari garis data mana LED berada dan posisi apa dalam rantai data.
Salah satu alat canggih dalam perpustakaan FastLED adalah kelas objek dari semua warna bernama web. Anda cukup menentukan warna sebagai CRGB::HotPink, di mana CRGB adalah kelas dan HotPink adalah anggota dari kelas tersebut. Tetapi anggota kelas sulit untuk terus diketik dan mengganggu untuk dilewatkan ke fungsi sebagai parameter, jadi saya menggunakan pernyataan #define untuk mengatur palet kecil warna bernama yang dapat saya sebut hanya dengan namanya tanpa CRGB::.
Saya memiliki fungsi lain yang mengatur warna LED tertentu sebagai hue palet pelangi dari 0 hingga 255. Di antara dua fungsi ini, saya dapat dengan mudah menentukan 10 warna bernama atau menghasilkan palet pelangi halus dari hues untuk setiap LED di menara.
Fungsi dasar lainnya yang saya buat adalah rotate(cincin, arah), yang memutar konten dari setiap cincin di sekitar cincin itu. Setiap pemanggilan adalah satu langkah, tetapi rutin ini dapat digunakan untuk memutar konten seluruh menara, atau memutar bagian-bagian menara di arah yang berlawanan, dll., menciptakan banyak efek menarik.
Satu hal lain yang mungkin saya sebutkan tentang perpustakaan FastLED adalah bahwa ia secara langsung mendukung LED APA106 yang saya gunakan. Meskipun perpustakaan NeoPixel dari Adafruit juga bekerja dengan APA106, saya harus bereksperimen dengan pengaturan untuk mendapatkannya dengan benar. Dengan FastLED, pengaturan otomatis hanya dengan menentukan APA106 sebagai LED yang Anda gunakan.
Seperti yang saya katakan di awal, salah satu efek yang lebih menarik yang dapat Anda buat dengan menara ini adalah perpotongan antara silinder dan bidang. Awalnya saya memikirkan untuk mencoba menyelesaikannya secara langsung dengan matematika. Namun ada masalah apakah UNO cukup cepat dan ternyata melakukannya dalam tabel cukup mudah, jadi saya mengambil pendekatan terakhir. Dasarnya tabel ini menyala perpotongan bidang dengan menara pada 18 sudut berbeda, dan ketinggian di mana perpotongan terjadi dapat bervariasi. Anda akan melihat hasilnya di beberapa tempat dalam pameran.
Saya menggunakan pendekatan tabel yang sama untuk membuat berbagai perpotongan silinder dengan bola. Itu bekerja, meskipun tidak seefektif perpotongan dengan bidang. Ada satu efek dalam pameran yang menggunakannya. Kedua tabel ini disimpan dalam memori program, sehingga tidak menghabiskan RAM.
Terdapat tiga skets untuk UNO yang disertakan dalam paket perangkat lunak:
1) tes cepat untuk satu cincin.
2) pratinjau 45 detik dari pameran
3) pameran 8 menit dengan 16 efek atau animasi berbeda
Ketiganya ditunjukkan di sini dalam video dalam tulisan ini (meskipun tes cincin sedikit berbeda dari yang ada dalam video).
Satu hal terakhir tentang perangkat lunak. Di akhir loop utama, di mana berbagai animasi dipanggil, saya telah menambahkan reset perangkat lunak. Ini biasanya tidak akan diperlukan, tetapi saya memiliki bug di mana saja dalam perangkat lunak saya. Tanpa reset, setelah berjalan melalui banyak putaran semua animasi, program macet. Mungkin saya memiliki sesuatu yang tidak keluar dari tumpukan di RAM ketika seharusnya. Ini bahkan mungkin menjadi masalah dalam perpustakaan FastLED. Tetapi saya tidak pernah menemukannya, dan reset perangkat lunak memastikan operasi yang lancar, meskipun bukan solusi yang paling elegan.
Kode
Kode Arduino untuk Seni Menara LED
Perangkat Lunak untuk Seni Menara
Kode Arduino untuk Seni Menara LEDArduino
Unduhan ini adalah satu file zip dengan 3 skets: 1) tes cincin untuk menguji satu cincin dari pin 6 2) pameran cepat - pratinjau 45 detik 3) pameran yang berlangsung 8 menit sebelum berulang
Tidak ada pratinjau (hanya unduhan).
Perangkat Lunak untuk Seni MenaraArduino
Unduhan ini adalah satu file zip dengan 3 skets: 1) tes cincin untuk menguji satu cincin dari pin 6 2) pameran cepat - pratinjau 45 detik 3) pameran yang berlangsung 8 menit sebelum berulang