สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ฉันออกแบบและตั้งโปรแกรมการแสดงแสงสีในวันหยุดนี้เพื่อแสดงทุกที่ ฉันใช้แถบนำ WS2812B หนึ่งแถบที่มีความหนาแน่นของพิกเซล 30 พิกเซล/เมตร เนื่องจากฉันใช้ 5 เมตร ฉันมีไฟ LED ทั้งหมด 150 ดวง ฉันเก็บรหัสไว้อย่างเรียบง่าย เพื่อให้ใครก็ตามที่เพิ่งเริ่มใช้แถบ LED WS2812B สามารถติดตามโค้ดได้อย่างง่ายดาย นอกจากนี้ยังหมายความว่าหากคุณใช้จำนวนพิกเซลต่างกัน เวลาจะปิด ดังนั้นคุณควรติดไฟ LED 150 ดวง นอกจากนี้ ทำให้มันง่าย ระบบเพลงไม่ได้รับการจัดการโดย Arduino เลย ในตอนต้นของโปรแกรม มีการกะพริบสีเขียว 3 ครั้งและไฟสีแดง 1 ครั้ง จากนั้นการแสดงแสงจริงจะเริ่มขึ้น เนื่องจากคุณต้องเริ่มเล่นเพลงด้วยตนเอง แฟลชเริ่มต้นเหล่านี้จึงเป็นเครื่องบ่งชี้ว่าเมื่อใดที่จะเริ่มเล่นเพลง ฉันได้รวมรหัสด้านล่าง อย่าลังเลที่จะเพิ่มหรือเปลี่ยนรหัสนี้เพื่อจุดประสงค์ที่ไม่ใช่เชิงพาณิชย์
เสบียง
- WS2812B แถบ LED
- Arduino
- สายไฟ
- พาวเวอร์ซัพพลาย 5V 10A | หากคุณใช้มากกว่าหนึ่งแถบ คุณจะต้องใช้แหล่งจ่ายไฟที่ใหญ่ขึ้น แต่ละพิกเซลใช้ 60mA ดังนั้น 150 พิกเซล * 60mA = 9A พาวเวอร์ซัพพลายของคุณต้องสามารถจัดการกับสิ่งนี้ได้ หากคุณต้องการใช้ความสว่างเต็มที่เป็นสีขาว คุณต้องใช้แหล่งจ่ายไฟ 5V หากคุณใช้แถบ LED 5V และหากคุณใช้แถบ LED 12V คุณจะต้องใช้แหล่งจ่ายไฟ 12V แต่ยังใช้ตัวแปลง 12-5V เพื่อจ่ายไฟให้กับ Arduino 5V
ขั้นตอนที่ 1: ดาวน์โหลด FastLED Library
หากคุณยังไม่ได้ดาวน์โหลดไลบรารี FastLED ให้ดาวน์โหลดเวอร์ชันล่าสุดจาก github.com/FastLED/FastLED/releases
ดาวน์โหลดไลบรารี FastLED และย้ายไปยังโฟลเดอร์ไลบรารี Arduino ของคุณ อย่าเปลี่ยนชื่อโฟลเดอร์นี้ ใน Arduino IDE ให้ไปที่ Sketch รวมไลบรารี แล้วเพิ่ม. ZIP Library เลือกโฟลเดอร์ FastLED
เมื่อไลบรารีของคุณได้รับการตั้งค่าแล้ว ให้รวมบรรทัด #include บรรทัดนี้บอกโปรแกรมว่าคุณกำลังใช้ไลบรารีนั้นอยู่
ขั้นตอนที่ 2: กำหนดตัวแปรสองสามตัว
ดังที่ได้กล่าวไว้ก่อนหน้านี้ เพื่อให้โค้ดเรียบง่าย การเปลี่ยนจำนวนพิกเซลจะเปลี่ยนเวลาหรือการแสดงแสง
บรรทัด #define NUM_LEDS 150 คือตำแหน่งที่คุณใส่จำนวนพิกเซลที่ใช้ ในกรณีนี้ จะเป็น 150
บรรทัด #define DATA_PIN 5 คือตำแหน่งที่คุณใส่พินดิจิทัลที่คุณเชื่อมต่อสายข้อมูล
บรรทัด #define BRIGHTNESS 255 คือตำแหน่งที่คุณใส่ความสว่างจากสเกล 0-255 โดยที่ 255 เป็นความสว่างที่สุด
ขั้นตอนที่ 3: ส่วนการตั้งค่าของรหัส
ในส่วนการตั้งค่ามีการหน่วงเวลา 2 วินาทีและเส้น
FastLED.addLeds(ไฟ LED, NUM_LEDS).setCorrection(TypicalLEDStrip);
WS2812B ระบุประเภทของแถบ LED ที่เราใช้ และ DATA_PIN เป็นตัวแปรที่เรากำหนดไว้ในขั้นตอนก่อนหน้านี้ GRB คือลำดับสี อาจแตกต่างกันไปตามแถบ LED ที่ใช้ ลองใช้โค้ดตามที่เป็นอยู่ และหากสีไม่เหมือนกับในวิดีโอ ให้ลองเปลี่ยนเป็น RGB หรือ BRG เป็นต้น คุณสามารถปล่อยให้ส่วนที่เหลือของบรรทัดนี้เหมือนเดิม เส้น
FastLED.setBrightness(max_bright); set_max_power_in_volts_and_milliamps(5, 8000);
จำกัดการใช้พลังงานของแถบ LED นี่เป็นคุณสมบัติที่น่าทึ่งจากไลบรารี FastLED หมายเลข 5 คือแรงดันไฟฟ้าที่เราใช้ และหมายเลข 8000 คือกระแสสูงสุดที่แถบ LED สามารถใช้ได้ในหน่วย mA ขอแนะนำให้ใช้เพียง 80% ของความสามารถของพาวเวอร์ซัพพลายเพื่อยืดอายุการใช้งาน เนื่องจากฉันมีแหล่งจ่ายไฟ 10A 0.8*10 = 8A หรือ 8000mA
ขั้นตอนที่ 4: ส่วนลูป | Aka ส่วนที่ยอดเยี่ยมของรหัส
เมื่อเราตั้งค่าโปรแกรมสำหรับแถบ LED เฉพาะของเราเสร็จแล้ว เราก็สามารถแยกส่วนที่ทำให้แถบไฟสว่างขึ้นได้ เพื่อให้ส่วนนี้ดูสะอาดอยู่เสมอ ฉันใช้ฟังก์ชันเขียนเพื่อควบคุมแถบและทำเอฟเฟกต์ต่างๆ รูปภาพด้านบนทางซ้ายเป็นส่วนหนึ่งของส่วนวนรอบซึ่งเรียกใช้ฟังก์ชันต่างๆ ภาพด้านขวาอยู่ใต้ภาพนั้น และเป็นที่ที่ผมเขียนว่าแต่ละฟังก์ชันทำหน้าที่อะไร
ขั้นตอนที่ 5: การเดินสายไฟ
แถบ LED WS2812B มี 3 ขั้วที่ปลายแต่ละด้าน 2 สำหรับพลังงานและ 1 สำหรับสัญญาณข้อมูลที่มาจาก Arduino ของเรา เพียงต่อสายไฟ 2 เส้นเข้ากับขั้วจ่ายไฟของ Arduino และต่อสายไฟ 2 เส้นเข้ากับแถบ LED คุณควรเพิ่มสายไฟ 2 เส้นที่เรียกว่าสายฉีดกำลังที่ส่วนท้ายของแถบ เนื่องจากการสูญเสียแรงดันไฟฟ้าอาจทำให้ไฟ LED สลัวที่ปลายแถบถ้าคุณไม่ทำเช่นนี้ ตรวจสอบฉลากบนแถบเพื่อดูว่าขั้วใดใช้ทำอะไร การผสมขั้วอาจนำไปสู่แถบผัด นอกจากนี้ ให้เชื่อมต่อสายกราวด์ของ Arduino กับสายกราวด์บนแถบ LED เพื่อสร้างกราวด์ร่วมเพื่อการส่งข้อมูลที่ดีขึ้น ฉันบอกว่าคุณควรเพิ่มสายฉีดกำลัง แต่คุณไม่สามารถทำเช่นนี้กับสายข้อมูลได้ เนื่องจาก LED แต่ละตัวจะถ่ายทอดสัญญาณข้อมูลไปยังสัญญาณถัดไป ดังนั้นตรวจสอบให้แน่ใจว่าได้เชื่อมต่อสายข้อมูล 1 เส้นเข้ากับพิน Arduino ที่ระบุและแถบ LED แถบควรมีลูกศรเล็ก ๆ ระบุทิศทางการเดินทางของข้อมูล ตรวจสอบให้แน่ใจว่าวางสายสัญญาณข้อมูลไว้ที่จุดเริ่มต้นและไม่ใช่จุดสิ้นสุด การผสมนี้อาจนำไปสู่แถบผัด
ขั้นตอนที่ 6: การติดตั้งแถบ LED
ฉันติดแถบ LED ที่ด้านในของหน้าต่างโดยเพียงแค่ติดเทป อย่างไรก็ตาม มีหลายวิธีที่คุณสามารถติดตั้งแถบ LED ของคุณได้ คุณสามารถใช้ช่องอลูมิเนียมเช่น https://tinyurl.com/s2km4v3 เพื่อวางแถบด้านนอกบนหลังคาของคุณ หากคุณกำลังวางแถบ LED ของคุณไว้ข้างนอก ฉันขอแนะนำให้ใช้แถบ ip65 หากคุณใช้ช่องอะลูมิเนียมเนื่องจากเป็นแบบกึ่งกันน้ำ และบางกว่า 1p67 ซึ่งอาจไม่พอดีกับบางช่อง หากคุณต้องการติดตั้งภายนอกโดยไม่มีช่อง ให้ใช้แถบ IP67 ซึ่งกันน้ำได้จริง ในการเดินไปรอบ ๆ มุมถนน เช่น ที่จุดยอดของแนวหลังคาของคุณ คุณควรตัดแถบนั้นออก และใช้สายไฟพันรอบมุม คุณอาจจะทำได้เพียงแค่งอแถบ แต่ระวังว่าคุณงอมันมากแค่ไหนเพราะมันง่ายที่จะเปิดไฟ LED