Buat Penerangan Marquee LED Dinamis dengan Arduino Nano dan NeoPixels
Komponen dan Perlengkapan
Arduino Nano R3
×
1
NeoPixel strip
×
1
Aplikasi dan Layanan Online
Arduino IDE
Tentang Proyek Ini
Penerangan Marquee Animasi Sederhana DIY
Ini adalah tutorial sederhana untuk menambahkan penerangan animasi pada kotak arcade Anda atau proyek lain. Penerangan ini dapat digunakan untuk (back-)lighting marquee dan banyak tujuan lainnya.
Anda membutuhkan Arduino Nano (atau papan kompatibel), satu strip NeoPixel, dan 3 kabel.
Pembuatan
Lihat video di bawah untuk proses pembuatan:
Setup Singkat
Hardware: Pasang tiga kabel dari Arduino Nano ke strip NeoPixel: 5V, sinyal digital (saya memilih pin 2 pada Arduino) dan ground.
Tips: Gunakan potongan heat shrink untuk mengikat kabel bersama, terutama strip LED (pastikan sambungan solder dilindungi). Ini akan mencegah sambungan longgar.
Kode: Tentukan jumlah LED pada strip yang terhubung dalam kode sketch, unggah ke Arduino dan uji. Saya menggunakan animasi 'berjalan', berkedip dan memacu dalam sketch, hanya menggunakan warna putih. Anda dapat menyesuaikan kode untuk berbagai macam animasi dan menggunakan banyak warna. Atau gunakan backlight sederhana, sesuai selera Anda.
Pembuatan: Saya memotong 2 potongan karton yang pas di kotak saya. Satu potongan digunakan sebagai latar belakang untuk menempelkan strip neopixel. Strip lainnya ditempelkan di bawah bagian bawah marquee untuk mencegah cahaya dari neopixel langsung bersinar ke bawah. Setelah itu saya harus memotong beberapa tepi kecil agar pas di kotak saya.
Saya menempelkan beberapa potongan gaffa tape pada karton untuk membuatnya hitam. Saya menempelkan strip neopixel pada karton dan menempelkan kabel serta nano ke bagian belakang karton.
Masukkan 2 bagian ke dalam kotak dan pasang kabel USB dari nano ke sumber daya 5V. Di kotak saya, terhubung ke port USB pada Raspberry Pi.
Kemudian tempelkan marquee asli kembali atau buat sendiri untuk menyesuaikan pembuatan Anda. Saya membuat yang sederhana, mencetaknya pada kertas foto dan memotongnya agar pas dengan marquee.
Tips: Hasil akhir akan lebih baik jika desain Anda dicetak pada film oleh perusahaan cetak profesional.
Library
Sketch membutuhkan satu library:
Adafruit NeoPixel library
Lisensi
Bagian dari sketch ditemukan di internet, semua kredit diberikan kepada pencipta. Bebas gunakan kode untuk penggunaan pribadi, bukan untuk komersial. Anda dapat menghubungi saya di ericBcreator@gmail.com.
Kode
Kode penerangan marquee animasi
Kode penerangan marquee animasiArduino
/* ********************************************************************** * Penerangan marquee dengan Neopixels oleh ericBcreator * skrip sederhana untuk penerangan (arcade) marquee ********************************************************************** * pembaruan terakhir 20181021 oleh ericBcreator * * Terinspirasi dari artikel oleh sandyjmacdonald * https://sandyjmacdonald.github.io/2015/12/02/picade-errata/ * * komponen: * - Neopixel strip * - Arduino Nano * * Kode ini gratis untuk penggunaan pribadi, bukan untuk komersial. * Harap biarkan header ini utuh. * * kontak: ericBcreator@gmail.com ********************************************************************** */ // // include library // #include <Adafruit_NeoPixel.h> #define PIN 2 // tentukan pin tempat strip terhubung // // setup variabel dan inisialisasi strip neopixel // int numOfLeds = 11; // jumlah LED pada strip int minBrightness = 80; // kecerahan minimum untuk memacu dan berkedip (0-255) int maxBrightness = 255; // kecerahan maksimum untuk memacu dan berkedip (0-255) int walkingLedsDelay = 250; // delay dalam ms untuk LED berjalan int flashDelay = 250; // delay dalam ms untuk LED berkedip int numOfFlashLoops = 3; // jumlah kali LED berkedip int numOfPulseLoops = 10; // jumlah kali LED memacu dari min ke max int pulseDelay = 20; // delay dalam ms saat memacu dari min ke max dan sebaliknya Adafruit_NeoPixel strip = Adafruit_NeoPixel(numOfLeds, PIN); // // setup // void setup() { strip.begin(); } // // main loop // void loop() { walkingLeds(); // tampilkan LED berjalan flashLeds(); // berkedipkan LED for (int i = 0; i < numOfPulseLoops; i++) // pacau LED pulseBrightness(); } // // fungsi // void walkingLeds() { setLedColorsToZero(); strip.setBrightness(maxBrightness); strip.show(); for (int x = numOfLeds; x > 0; x--) { strip.setPixelColor(x, strip.Color(255, 255, 255)); strip.show(); delay(walkingLedsDelay ); strip.setPixelColor(x, 0); strip.show(); } } void flashLeds() { setLedColors(); for (int i = 0; i < numOfFlashLoops; i++) { strip.setBrightness(maxBrightness); strip.show(); delay(flashDelay ); strip.setBrightness(minBrightness); strip.show(); delay(flashDelay ); } } void pulseBrightness() { setLedColors(); for (int i = minBrightness; i < maxBrightness; i++) { strip.setBrightness(i); strip.show(); delay(pulseDelay); } for (int i = maxBrightness; i > minBrightness; i--) { strip.setBrightness(i); strip.show(); delay(pulseDelay); } } void setLedColors() { for (int x = 0; x < numOfLeds; x++) strip.setPixelColor(x, strip.Color(255, 255, 255)); } void setLedColorsToZero() { for (int x = 0; x < numOfLeds; x++) strip.setPixelColor(x, strip.Color(0, 0, 0)); }