Data Sensor Paparan pada WS2811: 5 Langkah

Data Sensor Paparan pada WS2811: 5 Langkah

Isi kandungan:

Anonim

Tutorial ini akan menunjukkan kepada anda bagaimana untuk memvisualisasikan data dari sensor jarak HC-SR04 pada jalur ledakan WS2811.

Ia terdiri daripada Nodemcu Esp8266, WS2811 Led-Strip, sensor jarak HC-SR04 dan beberapa kabel.

Nikmati!

Bekalan:

Langkah 1: Bekalan

Untuk membuat projek ini, anda memerlukan yang berikut:

1) MCU Node 1x

2) HC - SR04 Sensor Mengukur Jarak Ultrasonik *

3) PC atau Mac untuk menyambungkan papan Arduino

4) Perisian Arduino

5) Wayar untuk menyambung perkakasan

Langkah 2: Setup Perkakasan

Pertama kita perlu membuat Ledstrip WS2812B yang boleh disambungkan. Dapatkan mesin pematerian dan tunggu sehingga ia cukup panas untuk digunakan. Strip wayar dan solder mereka seperti gambar di atas. Saya menggunakan hitam untuk Ground (GND), Red untuk + 5v dan putih untuk pin digital. Sambungkan wayar ke NodeMCU seperti ini:

Pins & Kabel WS2812B:

Ground - Gnd

+ 5V - 3V3

Pin Digital - Mana-mana (Saya Digunakan D5)

Selesai? Allright, sekarang sudah waktunya untuk menghubungkan sensor Jarak HC-SR04. Sensor ini sudah mempunyai pin supaya ia memerlukan sedikit masa. Sambungkan wayar ke NodeMCU seperti ini:

Pins & Kabel HC-SR04:

Ground - Gnd

Vcc - Vin

Echopin - D0

Trigpin - D1

Langkah 3: Menetapkan Arduino

WS2812B

Untuk program Arduino kita perlu menyambung NodeMCU ke mana-mana pc atau mac yang memiliki perisian Arduino dipasang. Untuk bermain dengan WS2812B Led-Strip kita perlu memuat turun Perpustakaan Fastled. Perpustakaan ini akan membantu mewujudkan animasi dan menyokong pelbagai petunjuk yang popular.

Memasang Perpustakaan:

1) Pergi ke http://github.com/FastLED/FastLED/releases dan muat turun pustaka (.zip fail)

2) Perisian Terbuka Arduino> Lakaran> Sertakan Perpustakaan> Tambah.zip perpustakaan

3) Navigasi ke lokasi fail.zip dan bukanya. (Seperti yang ditunjukkan dalam imej di atas)

4) Navigasi ke Sketch> Import Library menu. Anda kini perlu melihat perpustakaan.

Sekarang kita perlu menjalankan beberapa kod asas untuk melihat sama ada Led-Strip bekerja atau tidak. Ini juga permulaan kod kami.

/ menentukan nomor pin #include #define LED_PIN 5 // Connected Wire #define NUM_LEDS 10 // Number Leds on strip #define BRIGHTNESS 64 #define LED_TYPE WS2811 #define COLOR_ORDER GRB CRGB leds NUM_LEDS; #define UPDATES_PER_SECOND 100 persediaan tidak sah () {delay (3000); / // pengawalan keselamatan kuasa FastLED.addLeds (leds, NUM_LEDS).setCorrection (TypicalLEDStrip); FastLED.setBrightness (BRIGHTNESS); Serial.begin (115200); // Memulakan komunikasi bersiri} gelung kekosongan () {// Matikan merah yang diketuai pertama selama 1 saat leds 0 = CRGB:: Merah; FastLED.show (); kelewatan (1000); / / Set pertama dipimpin kembali ke hitam untuk 1 leds kedua 0 = CRGB:: Hitam; FastLED.show (); kelewatan (1000); }

Ini sepatutnya menjadikan kedut Led pertama berwarna merah.

HC-SR04

Untuk menggunakan Sensor HC-SR04 kita perlu menambah beberapa kod asas. Kod berikut akan membantu kami.

const int trigPin = D1; // trigPin disambungkan ke D1 const int echoPin = D0; // echoPin disambungkan ke D0

// mentakrifkan pembolehubah jangka panjang; jarak jauh; void setup () {pinMode (trigPin, OUTPUT); // Menetapkan trigPin sebagai Output pinMode (echoPin, INPUT); // Menetapkan echoPin sebagai Input Serial.begin (115200); // Memulakan komunikasi siri}

kekosongan gelung () {// Menghapus trigPin digitalWrite (trigPin, LOW); delayMicroseconds (2); // Menetapkan trigPin pada keadaan HIGH untuk 10 mikro detik digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); // Membaca echoPin, mengembalikan masa perjalanan gelombang bunyi dalam tempoh mikrosecond = pulseIn (echoPin, HIGH); // Mengira jarak jarak = tempoh * 0.034 / 2; // Mencetak jarak pada Serial.print Monitor Serial ("Jarak:"); Serial.println (jarak)

}

Sekarang kita mempunyai jarak yang dipanggil pembolehubah yang mana ia mengatakan jarak langkah-langkah HC-SR04.

Langkah 4: Menggabungkan Kod

Kini sudah tiba masanya untuk menggabungkan data sensor dari Sensor HC-SR04 dan menunjukkan sesuatu pada jalur Led WS2812b. Jika anda menggabungkan kod dari langkah sebelumnya, anda akan mendapat kod berikut.

// mentakrif nombor pin #include

#define LED_PIN 5 // Connected Wire #define NUM_LEDS 10 // Bilangan Leds #define BRIGHTNESS 64 #define LED_TYPE WS2811 // Type #define COLOR_ORDER GRB CRGB leds NUM_LEDS;

#define UPDATES_PER_SECOND 100

const int trigPin = D1; const int echoPin = D0; // mentakrifkan pembolehubah jangka panjang; jarak jauh;

void setup () {delay (3000); / // pengawalan keselamatan kuasa FastLED.addLeds (leds, NUM_LEDS).setCorrection (TypicalLEDStrip); FastLED.setBrightness (BRIGHTNESS); pinMode (trigPin, OUTPUT); // Menetapkan trigPin sebagai Output pinMode (echoPin, INPUT); // Menetapkan echoPin sebagai Input Serial.begin (115200); // Memulakan komunikasi siri}

kekosongan gelung () {// Menghapus trigPin digitalWrite (trigPin, LOW); delayMicroseconds (2); // Menetapkan trigPin pada keadaan HIGH untuk 10 mikro detik digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); // Membaca echoPin, mengembalikan masa perjalanan gelombang bunyi dalam tempoh mikrosecond = pulseIn (echoPin, HIGH); // Mengira jarak jarak = tempoh * 0.034 / 2; // Mencetak jarak pada Serial.print Monitor Serial ("Jarak:"); Serial.println (jarak);

// Tambah kod di sini

}

Ini adalah templat yang sempurna untuk mengelirukan dengan.

Lakukan sesuatu apabila jarak adalah sesuatu

Sekarang kita mahu membuat sesuatu berlaku pada jarak tertentu. Dengan menambah kod berikut adalah mungkin untuk menjalankan kod apabila jarak kurang daripada 20 sentimeter dari sensor.

jika (jarak <20) {// jarak (dari sensor) adalah <(kurang daripada) 20

/ // Sesuatu yang berlaku}

Ia juga mungkin untuk melakukan ini dengan lebih besar daripada, atau bahkan membuat kombinasi.

Langkah 5: Buat Sesuatu Berguna

Kini sudah tiba masanya untuk menggunakan pengetahuan anda untuk mereka bentuk dan mencipta sesuatu yang berguna. Saya cuba menunjukkan jumlah botol di dalam peti sejuk dengan memaparkannya di Led-Strip. (Lihat ilustrasi).

Dalam contoh ini WS2812B dilampirkan ke peti sejuk dan HC-SR04 diletakkan di bahagian dalam peti sejuk.

Strip Led berubah setiap kali botol diambil dari peti sejuk. Ia bertukar oren apabila lebih daripada 50% diambil. Dan semua leds bertukar merah ketika peti sejuk kosong.

Untuk merealisasikan ini saya membuat kod berikut:

// mentakrif nombor pin

#include

#define LED_PIN 5 #define NUM_LEDS 33 #define BRIGHTNESS 64 #define LED_TYPE WS2811 #define COLOR_ORDER GRB CRGB leds NUM_LEDS;

#define UPDATES_PER_SECOND 100

const int trigPin = D1; const int echoPin = D0; // mentakrifkan pembolehubah jangka panjang; jarak jauh;

void setup () {delay (3000); / // pengawalan keselamatan kuasa FastLED.addLeds (leds, NUM_LEDS).setCorrection (TypicalLEDStrip); FastLED.setBrightness (BRIGHTNESS); pinMode (trigPin, OUTPUT); // Menetapkan trigPin sebagai Output pinMode (echoPin, INPUT); // Menetapkan echoPin sebagai Input Serial.begin (115200); // Memulakan komunikasi siri}

kekosongan gelung () {// Menghapus trigPin digitalWrite (trigPin, LOW); delayMicroseconds (2); // Menetapkan trigPin pada keadaan HIGH untuk 10 mikro detik digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); // Membaca echoPin, mengembalikan masa perjalanan gelombang bunyi dalam tempoh mikrosecond = pulseIn (echoPin, HIGH); // Mengira jarak jarak = tempoh * 0.034 / 2; // Mencetak jarak pada Serial.print Monitor Serial ("Jarak:"); Serial.println (jarak);

// in de buurt if (distance <5) {leds 0 = CRGB:: Green; FastLED.show (); leds 1 = CRGB:: Hijau; FastLED.show (); leds 2 = CRGB:: Green; FastLED.show (); leds 3 = CRGB:: Green; FastLED.show (); leds 4 = CRGB:: Hijau; FastLED.show (); leds 5 = CRGB:: Hijau; FastLED.show (); leds 6 = CRGB:: Hijau; FastLED.show (); leds 7 = CRGB:: Hijau; FastLED.show (); leds 8 = CRGB:: Hijau; FastLED.show (); leds 9 = CRGB:: Green; FastLED.show (); }

jika (jarak> 5 & & jarak <10) {leds 0 = CRGB:: Hijau; FastLED.show (); leds 1 = CRGB:: Hijau; FastLED.show (); leds 2 = CRGB:: Green; FastLED.show (); leds 3 = CRGB:: Green; FastLED.show (); leds 4 = CRGB:: Hijau; FastLED.show (); leds 5 = CRGB:: Hijau; FastLED.show (); leds 6 = CRGB:: Hijau; FastLED.show (); leds 7 = CRGB:: Hijau; FastLED.show (); leds 8 = CRGB:: Hijau; FastLED.show (); leds 9 = CRGB:: Black; FastLED.show (); }

jika (jarak> 10 && jarak <15) {leds 0 = CRGB:: Hijau; FastLED.show (); leds 1 = CRGB:: Hijau; FastLED.show (); leds 2 = CRGB:: Green; FastLED.show (); leds 3 = CRGB:: Green; FastLED.show (); leds 4 = CRGB:: Hijau; FastLED.show (); leds 5 = CRGB:: Hijau; FastLED.show (); leds 6 = CRGB:: Hijau; FastLED.show (); leds 7 = CRGB:: Hijau; FastLED.show (); leds 8 = CRGB:: Black; FastLED.show (); leds 9 = CRGB:: Black; FastLED.show (); }

jika (jarak> 15 && jarak <20) {leds 0 = CRGB:: Hijau; FastLED.show (); leds 1 = CRGB:: Hijau; FastLED.show (); leds 2 = CRGB:: Green; FastLED.show (); leds 3 = CRGB:: Green; FastLED.show (); leds 4 = CRGB:: Hijau; FastLED.show (); leds 5 = CRGB:: Hijau; FastLED.show (); leds 6 = CRGB:: Hijau; FastLED.show (); leds 7 = CRGB:: Black; FastLED.show (); leds 8 = CRGB:: Black; FastLED.show (); leds 9 = CRGB:: Black; FastLED.show (); }

jika (jarak> 20 & & jarak <25) {leds 0 = CRGB:: Orange; FastLED.show (); leds 1 = CRGB:: Orange; FastLED.show (); leds 2 = CRGB:: Orange; FastLED.show (); leds 3 = CRGB:: Orange; FastLED.show (); leds 4 = CRGB:: Orange; FastLED.show (); leds 5 = CRGB:: Orange; FastLED.show (); leds 6 = CRGB:: Black; FastLED.show (); leds 7 = CRGB:: Black; FastLED.show (); leds 8 = CRGB:: Black; FastLED.show (); leds 9 = CRGB:: Black; FastLED.show (); }

jika (jarak> 25 && jarak <30) {leds 0 = CRGB:: Orange; FastLED.show (); leds 1 = CRGB:: Orange; FastLED.show (); leds 2 = CRGB:: Orange; FastLED.show (); leds 3 = CRGB:: Orange; FastLED.show (); leds 4 = CRGB:: Orange; FastLED.show (); leds 5 = CRGB:: Black; FastLED.show (); leds 6 = CRGB:: Black; FastLED.show (); leds 7 = CRGB:: Black; FastLED.show (); leds 8 = CRGB:: Black; FastLED.show (); leds 9 = CRGB:: Black; FastLED.show (); }

jika (jarak> 30 && jarak <35) {leds 0 = CRGB:: Orange; FastLED.show (); leds 1 = CRGB:: Orange; FastLED.show (); leds 2 = CRGB:: Orange; FastLED.show (); leds 3 = CRGB:: Orange; FastLED.show (); leds 4 = CRGB:: Black; FastLED.show (); leds 5 = CRGB:: Black; FastLED.show (); leds 6 = CRGB:: Black; FastLED.show (); leds 7 = CRGB:: Black; FastLED.show (); leds 8 = CRGB:: Black; FastLED.show (); leds 9 = CRGB:: Black; FastLED.show (); }

jika (jarak> 35 & & jarak <40) {leds 0 = CRGB:: Orange; FastLED.show (); leds 1 = CRGB:: Orange; FastLED.show (); leds 2 = CRGB:: Orange; FastLED.show (); leds 3 = CRGB:: Black; FastLED.show (); leds 4 = CRGB:: Black; FastLED.show (); leds 5 = CRGB:: Black; FastLED.show (); leds 6 = CRGB:: Black; FastLED.show (); leds 7 = CRGB:: Black; FastLED.show (); leds 8 = CRGB:: Black; FastLED.show (); leds 9 = CRGB:: Black; FastLED.show (); } jika (jarak> 40 && jarak <45) {leds 0 = CRGB:: Merah; FastLED.show (); leds 1 = CRGB:: Red; FastLED.show (); leds 2 = CRGB:: Black; FastLED.show (); leds 3 = CRGB:: Black; FastLED.show (); leds 4 = CRGB:: Black; FastLED.show (); leds 5 = CRGB:: Black; FastLED.show (); leds 6 = CRGB:: Black; FastLED.show (); leds 7 = CRGB:: Black; FastLED.show (); leds 8 = CRGB:: Black; FastLED.show (); leds 9 = CRGB:: Black; FastLED.show (); }

jika (jarak> 40 && jarak <44) {leds 0 = CRGB:: Merah; FastLED.show (); leds 1 = CRGB:: Black; FastLED.show (); leds 2 = CRGB:: Black; FastLED.show (); leds 3 = CRGB:: Black; FastLED.show (); leds 4 = CRGB:: Black; FastLED.show (); leds 5 = CRGB:: Black; FastLED.show (); leds 6 = CRGB:: Black; FastLED.show (); leds 7 = CRGB:: Black; FastLED.show (); leds 8 = CRGB:: Black; FastLED.show (); leds 9 = CRGB:: Black; FastLED.show (); leds 10 = CRGB:: Black; FastLED.show (); } jika (jarak> 45) {leds 0 = CRGB:: Merah; FastLED.show (); leds 1 = CRGB:: Red; FastLED.show (); leds 2 = CRGB:: Red; FastLED.show (); leds 3 = CRGB:: Red; FastLED.show (); leds 4 = CRGB:: Red; FastLED.show (); leds 5 = CRGB:: Red; FastLED.show (); leds 6 = CRGB:: Merah; FastLED.show (); leds 7 = CRGB:: Red; FastLED.show (); leds 8 = CRGB:: Red; FastLED.show (); leds 9 = CRGB:: Red; FastLED.show (); }}

Itu saja, terima kasih kerana menyertai dan saya suka melihat mana-mana projek anda!