สารบัญ:

Sound Reactive Cheap Ir Led Strip: 4 ขั้นตอน
Sound Reactive Cheap Ir Led Strip: 4 ขั้นตอน

วีดีโอ: Sound Reactive Cheap Ir Led Strip: 4 ขั้นตอน

วีดีโอ: Sound Reactive Cheap Ir Led Strip: 4 ขั้นตอน
วีดีโอ: วิธีสร้างแถบ LED แบบโต้ตอบสำหรับเพลง / ง่ายมาก 2024, กรกฎาคม
Anonim
Sound Reactive ราคาถูก Ir Led Strip
Sound Reactive ราคาถูก Ir Led Strip
Sound Reactive ราคาถูก Ir Led Strip
Sound Reactive ราคาถูก Ir Led Strip
Sound Reactive ราคาถูก Ir Led Strip
Sound Reactive ราคาถูก Ir Led Strip

Sound Reactive ราคาถูก Ir Led Strip

แนวคิดเกิดขึ้นหลังจากแถบไฟ LED มาจาก AliExpress และพวกเขาไม่ใช่นีโอพิกเซล แต่เป็นแถบ LED RGB ที่มี 44krys หรือประเภทรีโมท 24 ปุ่ม โง่มาก ฉันสั่งผิดอัน ฉันต้องการให้พวกเขาสำหรับงานปาร์ตี้ แต่มีรีโมท! !! นาอา. ฉันก็เลยพับแขนเสื้อและค้นหามัน

มีเว็บเซิร์ฟเวอร์ IR ที่ใช้ esp ที่แมปปุ่มระยะไกลเดียวกันบนพินตัวส่งสัญญาณ IR ที่เชื่อมต่อกับไฟ LED IR

แต่ฉันต้องการบางอย่างที่ต่างออกไป เช่น เสียงตอบสนอง อีกครั้งฉันได้รับบทช่วยสอนมากมายด้วย ws1811 หรือ neopixels และบางอันถึงแม้จะมี MOSFET และ LED แต่ฉันไม่มีเวลาดังนั้นฉันจึงลองใช้วิธี Dumb ของ Mapping Audio แม้ว่า A0 PIN ของ esp และการทำแผนที่เอาต์พุตในที่เก็บข้อมูลเพื่อเปิดใช้งานการรวมปุ่ม IR ระยะไกลบางส่วนส่วนใหญ่เป็น rgb เท่านั้น แต่ฉันพนันได้เลยว่าคุณจะทำให้ดีกว่าฉัน

เสบียง

1. แถบ LED ชัดเจนพร้อมแหล่งจ่ายไฟ

2. esp8266 / โหนด mcu

3. Ir Emitter นำ

4. ตัวต้านทาน

5. สายการเขียนโปรแกรม

6. Arduino IDE

7. หัวแร้ง (บัดกรีพื้นฐานบางอย่าง)

8. 7805 ic (สำหรับการใช้ไฟ LED เป็นแหล่งจ่ายไฟพิเศษ)

9. โมดูลไมโครโฟนหรือ aux y split สำหรับอินพุตเสียง

ขั้นตอนที่ 1: เตรียม Esp

  • ก่อนอื่น เชื่อมต่อ Nodemcu กับคอมพิวเตอร์หรือแล็ปท็อป
  • ตอนนี้ติดตั้งไดรเวอร์ของ nodemcu (google it)
  • หลังจากเปิดแล้ว Arduino IDE (แน่นอนว่าคุณต้องดาวน์โหลดและติดตั้ง) คลิกที่ "เครื่องมือ" บนแถบเครื่องมือ Arduino คลิกที่ "บอร์ด" เลือก "ตัวจัดการบอร์ด" และค้นหา esp8266 ติดตั้ง (จะใช้เวลาสักครู่กว่าจะเสร็จสิ้น)
  • ตอนนี้ เลือก "ร่าง" จากแถบเครื่องมือ Arduino เลือก "รวมไลบรารี" จากนั้นเลือก "จัดการไลบรารี" ค้นหา "IRremoteESP8266" และติดตั้ง
  • ตอนนี้การกำหนดค่าทำได้จาก "เครื่องมือ" เท่านั้น เราต้องไปที่ "บอร์ด" เลือก "NodeMcu 1.0 (ESP 12-E)" หรือรุ่นอื่นของ ESP8266

ขั้นตอนที่ 2: การเตรียมและทดสอบ IR LED

การเตรียมและทดสอบ IR LED
การเตรียมและทดสอบ IR LED

ก่อนอื่น เราต้องติดตั้งไลบรารี irLED สำหรับโดยเฉพาะ

มานี่

ระบุแถบนำของคุณทั้ง 24 คีย์หรือ 44 คีย์ (ใหญ่กว่า) ระยะไกล

เพื่อรับรหัสรีโมท ไปที่นี่

เมื่อติดตั้งไลบรารี่แล้ว เราจำเป็นต้องเตรียม IR LED โดยเชื่อมต่อตามที่แสดงในภาพ เชื่อมต่อ IR LED จากนั้นอัปโหลด Sketch ต่อไปนี้และชี้ IR LED ไปยังคอนโทรลเลอร์ แถบ LED ควรกะพริบ (เปิดและปิด) // ใช้งานได้ทั้งแบบ 24 และ 44 คีย์รีโมต

นี่คือรหัสที่จะทำเช่นนั้น

#define IR_OFF 0xF740BF // รหัส ir แบบแยกส่วนใน 32 บิต#define IR_ON 0xF7C0 #include<IRremoteESP8266.h IRsend irsend(4); // IR pin โมฆะการตั้งค่า () { irsend.begin (); } วงเป็นโมฆะ () { irsend.sendNEC (IR_ON, 32); ล่าช้า (5000); irsend.sendNEC(IR_OFF, 32); ล่าช้า (5000); }

ขั้นตอนที่ 3: การเดินสายไฟและการเตรียมไมโครโฟน

การเดินสายไฟและการเตรียมไมโครโฟน
การเดินสายไฟและการเตรียมไมโครโฟน
การเดินสายไฟและการเตรียมไมโครโฟน
การเดินสายไฟและการเตรียมไมโครโฟน

เราจะใช้ขาอนาล็อกของ Espe8266 A0 เท่านั้นสำหรับรับอินพุตเป็นสัญญาณอนาล็อกและใช้เพื่อทริกเกอร์ ir led ตามเสียง

เชื่อมต่อพินออกกับ a0

เชื่อมต่อ 5V กับ Vin (AS node mcu ไม่มีเอาต์พุต 5v)

เพียงเท่านี้เราจะจัดตำแหน่ง LED IR ที่เชื่อมต่อกับขา D2 ให้ตรงกับตัวรับของแถบ LED

NS

ขั้นตอนที่ 4: อัปโหลดโค้ดและพร้อมที่จะร็อค

อัปโหลดรหัสและพร้อมที่จะร็อค
อัปโหลดรหัสและพร้อมที่จะร็อค
อัปโหลดรหัสและพร้อมที่จะร็อค
อัปโหลดรหัสและพร้อมที่จะร็อค

#include #include#define ไมโครโฟนเสียงพิน A0 int; เสียงภายใน1; const int irPin = 4; //d2IRsend irsend (irPin); ตั้งค่าเป็นโมฆะ () { Serial.begin (9600); pinMode (ไมโครโฟนพิน, INPUT); pinMode(irPin, OUTPUT);} // ir led Codes #define IR_BPlus 0xFF3AC5 // #define IR_BMinus 0xFFBA45 // #define IR_ON 0xFF827D // #define IR_OFF 0xFF02FD // #define IR_R 0xFF1AE5 // #define IR_G 0xFF9A65 // กำหนด IR_B 0xFFA25D // #define IR_W 0xFF22DD // #define IR_B1 0xFF2AD5 // #define IR_B2 0xFFAA55 // #define IR_B3 0xFF926D // #define IR_B4 0xFF12ED // #define IR_B5 0xFF0AF5 // #define IRB75 0xFFB24D // #define IR_B8 0xFF32CD // #define IR_B9 0xFF38C7 // #define IR_B10 0xFFB847 // #define IR_B11 0xFF7887 // #define IR_B12 0xFFF807 // #define IR_B13 0xFF18E7 // #define IR_B14 0xFFF807 // #define IR_B13 0xFF18E7 // #define IR_B14 0 / #define IR_B16 0xFFD827 // #define IR_UPR 0xFF28D7 // #define IR_UPG 0xFFA857 // #define IR_UPB 0xFF6897 // #define IR_QUICK 0xFFE817 // #define IR_DOWNR 0xFF08F7 // #define IR_DOWNG 0xFFE817 // กำหนด IR_DOWNR 0xFF08F7 // #define IR_DOWNG 0xFFE7 // กำหนด กำหนด IR_SLOW 0xFFC837 // #define IR_DIY1 0xFF30CF // #define IR_DIY2 0xFFB04F // #define IR_DIY3 0xFF708F // #define IR_AUTO 0xFFF00F // #define IR_DIY4 0xFF10EF // #define IR_DIY5 0xFF906F // #define IR_DIY6 0xFF50AF // #define IR_FLASH 0xFFD02F // #define IR_JUMP3 0xFF20DF // #define IR_JUMP7 0xFFA05F IR // #define #IR_FADEx0DF3 // กำหนด IR_JUMP3 0xFF20DF / วงเป็นโมฆะ () { เสียง = analogRead (ไมโครโฟนพิน); // รับสัญญาณเสียงอินพุตอ่าน Serial.print (เสียง); // ป้อนการอ่านสัญญาณเสียงไปยัง Serial display Serial.print(" "); ถ้า (เสียง > 415) { เสียง 1 = แผนที่ (เสียง 415, 750, 140, 255); // จับคู่ค่าความถี่ที่สูงกว่าซึ่งอยู่เหนือออฟเซ็ตเป็นมาตราส่วน 150 - 255 } อย่างอื่นถ้า (เสียง > 340 && เสียง < 415) // การอ่านค่าออฟเซ็ตเป็นสเกลศูนย์..ที่นี่ค่าออฟเซ็ตในช่วง 340 - 415 (ค่าชดเชยที่ 1.45v)..มันขึ้นอยู่กับส่วนประกอบที่ใช้ในวงจร.. { sound1 = map(sound, 340, 415, 0, 9); } อื่น ๆ ถ้า (เสียง 240) { irsend.sendNEC (IR_FLASH, 32); irsend.sendNEC(IR_QUICK, 32); irsend.sendNEC(IR_QUICK, 32); irsend.sendNEC(IR_QUICK, 32); irsend.sendNEC(IR_QUICK, 32); irsend.sendNEC(IR_QUICK, 32); irsend.sendNEC(IR_QUICK, 32); } else if ((sound1) > 200) { irsend.sendNEC(IR_G, 32); irsend.sendNEC(IR_B, 32); ล่าช้า (120);} else if (sound1 > 160) { irsend.sendNEC(IR_R, 32); irsend.sendNEC(IR_B, 32); ล่าช้า (120); } else if (sound1 > 120) { irsend.sendNEC(IR_B, 32); ล่าช้า (120); } else if (sound1 > 80) { irsend.sendNEC(IR_B, 32); ล่าช้า (120); } else if (sound1 > 40) { irsend.sendNEC(IR_G, 32); ล่าช้า (120); } else if (sound1 > 10) { irsend.sendNEC(IR_R, 32); ล่าช้า (120);} อื่น ๆ { irsend.sendNEC (IR_FADE7, 32); ล่าช้า (120); } Serial.println(เสียง1); ล่าช้า (50); }

แนะนำ: