lamp.housecope.com
belakang

Bagaimana untuk menyambungkan jalur LED yang boleh dialamatkan WS2812B ke Arduino

Diterbitkan: 02.08.2021
0
2578

Perkembangan teknologi pencahayaan berasaskan LED berterusan dengan pesat. Baru semalam, reben RGB dikawal pengawal, yang kecerahan dan warnanya boleh dilaraskan menggunakan alat kawalan jauh, kelihatan seperti satu keajaiban. Hari ini, lampu dengan lebih banyak ciri telah muncul di pasaran.

Jalur LED berdasarkan WS2812B

Perbezaan antara jalur LED boleh alamat dan yang standard RGB perkara adalah nisbah kecerahan dan warna setiap elemen dilaraskan secara berasingan. Ini membolehkan anda mendapatkan kesan pencahayaan yang pada asasnya tidak boleh diakses oleh jenis peranti pencahayaan lain. Cahaya jalur LED boleh alamat dikawal dengan cara yang diketahui - menggunakan modulasi lebar denyut. Satu ciri sistem adalah untuk melengkapkan setiap LED dengan pengawal PWM sendiri. Cip WS2812B ialah diod pemancar cahaya tiga warna dan litar kawalan digabungkan dalam satu pakej.

Bagaimana untuk menyambungkan jalur LED yang boleh dialamatkan WS2812B ke Arduino
Penampilan LED dengan pemandu.

Unsur-unsur digabungkan menjadi pita kuasa secara selari, dan dikawal melalui bas bersiri - output elemen pertama disambungkan ke input kawalan kedua, dsb. Dalam kebanyakan kes, bas bersiri dibina pada dua baris, satu daripadanya menghantar strob (denyut jam), dan yang lain - data.

Kemunculan jalur alamat.
Kemunculan jalur alamat.

Bas kawalan cip WS2812B terdiri daripada satu baris - data dihantar melaluinya. Data dikodkan sebagai denyutan frekuensi malar, tetapi dengan kitaran tugas yang berbeza. Satu nadi - sedikit. Tempoh setiap bit ialah 1.25 µs, bit sifar terdiri daripada tahap tinggi dengan tempoh 0.4 µs dan tahap rendah 0.85 µs. Unit ini kelihatan seperti tahap tinggi untuk 0.8 µs dan tahap rendah untuk 0.45 µs. Letupan 24-bit (3-bait) dihantar ke setiap LED, diikuti dengan jeda tahap rendah selama 50 µs. Ini bermakna data akan dihantar untuk LED seterusnya, dan seterusnya untuk semua elemen rantai. Pemindahan data berakhir dengan jeda 100 µs. Ini menunjukkan bahawa kitaran pengaturcaraan pita telah selesai dan set paket data seterusnya boleh dihantar.

Data untuk mengurus pita alamat.
Data untuk mengurus pita alamat.

Protokol sedemikian memungkinkan untuk bertahan dengan satu talian untuk penghantaran data, tetapi memerlukan ketepatan dalam mengekalkan selang masa. Percanggahan dibenarkan tidak lebih daripada 150 ns. Di samping itu, imuniti bunyi bas sedemikian adalah sangat rendah. Sebarang gangguan amplitud yang mencukupi boleh dilihat oleh pengawal sebagai data. Ini mengenakan sekatan ke atas panjang konduktor dari litar kawalan. Sebaliknya, ini membolehkannya pemeriksaan kesihatan reben tanpa peranti tambahan.Jika anda menggunakan kuasa pada lampu dan menyentuh pad sesentuh bas kawalan dengan jari anda, sesetengah LED mungkin menyala secara rawak dan padam.

Spesifikasi elemen WS2812B

Untuk mencipta sistem pencahayaan berdasarkan pita alamat, anda perlu mengetahui parameter penting unsur pemancar cahaya.

Dimensi LED5x5mm
Kekerapan modulasi PWM400 Hz
Penggunaan semasa pada kecerahan maksimum60 mA setiap sel
Voltan bekalan5 volt

Arduino dan WS2812B

Platform Arduino, popular di dunia, membolehkan anda membuat lakaran (program) untuk menguruskan pita alamat. Keupayaan sistem cukup luas, tetapi jika ia tidak lagi mencukupi pada tahap tertentu, kemahiran yang diperolehi akan mencukupi untuk beralih tanpa rasa sakit ke C ++ atau bahkan kepada pemasang. Walaupun pengetahuan awal lebih mudah diperoleh pada Arduino.

Menyambungkan Reben WS2812B ke Arduino Uno (Nano)

Pada peringkat pertama, papan Arduino Uno atau Arduino Nano yang ringkas sudah memadai. Pada masa hadapan, papan yang lebih kompleks boleh digunakan untuk membina sistem yang lebih kompleks. Apabila menyambung secara fizikal jalur LED yang boleh dialamatkan ke papan Arduino, beberapa syarat mesti dipatuhi:

  • disebabkan oleh imuniti hingar yang rendah, konduktor penyambung talian data hendaklah sesingkat mungkin (anda harus cuba membuatnya dalam jarak 10 cm);
  • anda perlu menyambungkan konduktor data ke output digital percuma papan Arduino - ia kemudiannya akan ditentukan secara pemrograman;
  • disebabkan penggunaan kuasa yang tinggi, pita tidak perlu dikuasakan dari papan - bekalan kuasa berasingan disediakan untuk tujuan ini.

Wayar kuasa biasa lampu dan Arduino mesti disambungkan.

Gambar rajah pendawaian WS2812B.
Gambar rajah sambungan pita WS2812B.

Baca juga

Bagaimana untuk menyambungkan LED ke papan Arduino

 

Asas Kawalan Program WS2812B

Telah disebutkan bahawa untuk mengawal litar mikro WS2812B, perlu menghasilkan denyutan dengan panjang tertentu, mengekalkan ketepatan yang tinggi. Terdapat arahan dalam bahasa Arduino untuk pembentukan denyutan pendek kelewatanMikrosaat dan mikro. Masalahnya ialah resolusi arahan ini ialah 4 mikrosaat. Iaitu, ia tidak akan berfungsi untuk membentuk kelewatan masa dengan ketepatan yang diberikan. Anda perlu menukar kepada alat C ++ atau Assembler. Dan anda boleh mengatur kawalan jalur LED yang boleh dialamatkan melalui Arduino menggunakan perpustakaan yang dicipta khas untuk ini. Anda boleh memulakan perkenalan anda dengan program Blink, yang menjadikan elemen pemancar cahaya berkelip.

cepat dipimpin

Perpustakaan ini bersifat universal. Selain pita alamat, ia menyokong pelbagai peranti, termasuk pita yang dikawal oleh antara muka SPI. Ia mempunyai kemungkinan yang luas.

Pertama, perpustakaan mesti disertakan. Ini dilakukan sebelum blok persediaan, dan barisnya kelihatan seperti ini:

#include <FastLED.h>

Langkah seterusnya ialah mencipta tatasusunan untuk menyimpan warna setiap diod pemancar cahaya. Ia akan mempunyai jalur nama dan dimensi 15 - mengikut bilangan elemen (lebih baik untuk menetapkan pemalar kepada parameter ini).

Jalur CRGB[15]

Dalam blok persediaan, anda perlu menentukan pita yang mana lakaran akan berfungsi:

persediaan void() {

FastLED.addLeds< WS2812B, 7, RGB>(jalur, 15);

intg;

}

Parameter RGB menetapkan susunan jujukan warna, 15 bermaksud bilangan LED, 7 ialah nombor output yang ditetapkan untuk kawalan (ia juga lebih baik untuk menetapkan pemalar kepada parameter terakhir).

Blok gelung bermula dengan gelung yang menulis secara berurutan pada setiap bahagian tatasusunan Merah (cahaya merah):

untuk (g=0; g< 15; g++)

{jalur[g]=CRGB::Merah;}

Seterusnya, tatasusunan yang terbentuk dihantar ke lampu:

FastLED.show();

Kelewatan 1000 milisaat (saat):

kelewatan(1000);

Kemudian anda boleh mematikan semua elemen dengan cara yang sama dengan menulis hitam di dalamnya.

untuk (int g=0; g< 15; g++)

{jalur[g]=CRGB::Hitam;}

FastLED.show();

kelewatan(1000);

Lakaran untuk pita berkelip berdasarkan FastLed.
Lakaran untuk pita berkelip berdasarkan FastLed.

Selepas menyusun dan memuat naik lakaran, pita akan berkelip dengan tempoh 2 saat. Jika anda perlu menguruskan setiap komponen warna secara berasingan, maka bukannya garisan {jalur[g]=CRGB::Merah;} beberapa baris digunakan:

{

jalur[g].r=100;// tetapkan tahap cahaya unsur merah

jalur[g].g=11;// sama untuk hijau

jalur[g].b=250;// sama untuk biru

}

NeoPixel

Pustaka ini hanya berfungsi dengan gelang LED Cincin NeoPixel, tetapi ia kurang intensif sumber dan hanya mengandungi yang penting. Dalam bahasa Arduino, program ini kelihatan seperti ini:

#include <Adafruit_NeoPixel.h>

Seperti dalam kes sebelumnya, perpustakaan disambungkan, dan objek lenta diisytiharkan:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// di mana 15 ialah bilangan elemen dan 6 ialah output yang ditetapkan

Dalam blok persediaan, pita dimulakan:

persediaan void() {

lenta.begin()

}

Dalam blok gelung, semua elemen diserlahkan dengan warna merah, pembolehubah dihantar ke suapan dan kelewatan selama 1 saat dibuat:

untuk (int y=0; y<15; y++)// 15 - bilangan elemen dalam lampu

{lenta.setPixelColor(y, lenta.Color(255,0,0))};

tape.show();

kelewatan(1000);

Cahaya berhenti dengan rekod hitam:

untuk (int y=0; y< 15; y++)

{ lenta.setPixelColor(y, lenta.Color(0,0,0))};

tape.show();

kelewatan(1000);

Lakaran untuk program Blink berdasarkan NeoPixel.
Lakaran untuk program Blink berdasarkan NeoPixel.

Tutorial video: Contoh kesan visual menggunakan pita alamat.

Sebaik sahaja anda telah mempelajari cara menyalakan LED, anda boleh terus belajar cara mencipta kesan warna, termasuk Rainbow dan Aurora Borealis yang popular dengan peralihan yang lancar. LED boleh alamat WS2812B dan Arduino menyediakan kemungkinan yang hampir tidak terhad untuk ini.

Komen:
Tiada ulasan lagi. Jadilah yang pertama!

Kami menasihati anda untuk membaca

Bagaimana untuk membaiki lampu LED sendiri