Isi kandungan:
- Bekalan:
- Langkah 1: Bekalan
- Langkah 2: Setup Perkakasan
- Langkah 3: Menetapkan Arduino
- Langkah 4: Menggabungkan Kod
- Langkah 5: Buat Sesuatu Berguna
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 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. 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. 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!Langkah 4: Menggabungkan Kod
Langkah 5: Buat Sesuatu Berguna