สารบัญ:

ไฟ LED RGB ที่ดีที่สุดสำหรับโครงการใด ๆ (WS2812, Aka NeoPixels): 6 ขั้นตอน (พร้อมรูปภาพ)
ไฟ LED RGB ที่ดีที่สุดสำหรับโครงการใด ๆ (WS2812, Aka NeoPixels): 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ไฟ LED RGB ที่ดีที่สุดสำหรับโครงการใด ๆ (WS2812, Aka NeoPixels): 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ไฟ LED RGB ที่ดีที่สุดสำหรับโครงการใด ๆ (WS2812, Aka NeoPixels): 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: The BEST FastLED Tutorial | WS2812b LED Strip Arduino Nano 2024, กรกฎาคม
Anonim
ไฟ LED RGB ที่ดีที่สุดสำหรับโครงการใด ๆ (WS2812, Aka NeoPixels)
ไฟ LED RGB ที่ดีที่สุดสำหรับโครงการใด ๆ (WS2812, Aka NeoPixels)
ไฟ LED RGB ที่ดีที่สุดสำหรับโครงการใด ๆ (WS2812, Aka NeoPixels)
ไฟ LED RGB ที่ดีที่สุดสำหรับโครงการใด ๆ (WS2812, Aka NeoPixels)
ไฟ LED RGB ที่ดีที่สุดสำหรับโครงการใด ๆ (WS2812, Aka NeoPixels)
ไฟ LED RGB ที่ดีที่สุดสำหรับโครงการใด ๆ (WS2812, Aka NeoPixels)

เมื่อเราทำงานกับ LED เรามักจะต้องการควบคุมสถานะ (เปิด/ปิด) ความสว่าง และสี มีหลายวิธีในการดำเนินการนี้ แต่ไม่มีวิธีใดที่กะทัดรัดเท่ากับ WS2812 RGB LED ในแพ็คเกจขนาดเล็ก 5 มม. x 5 มม. WS2812 มีไฟ LED สว่างมาก 3 ดวง (สีแดง สีเขียว และสีน้ำเงิน) และวงจรไดรเวอร์ขนาดกะทัดรัด (WS2811) ที่ต้องการอินพุตข้อมูลเพียงรายการเดียวเพื่อควบคุมสถานะ ความสว่าง และสีของ LED 3 ดวง. เนื่องจากต้องใช้สายข้อมูลเพียงเส้นเดียวในการควบคุม LED 3 ดวง จึงมีความต้องการเวลาที่แม่นยำสูงในการสื่อสารกับ WS2811 ด้วยเหตุนี้ จึงจำเป็นต้องใช้ไมโครคอนโทรลเลอร์แบบเรียลไทม์ (เช่น AVR, Arduino, PIC) น่าเศร้าที่ไมโครคอมพิวเตอร์บน Linux หรือไมโครคอนโทรลเลอร์ที่ตีความ เช่น Netduino หรือ Basic Stamp ไม่สามารถให้ความแม่นยำของเวลาเพียงพอที่จำเป็น ดังนั้น ในคำแนะนำนี้ ฉันจะอธิบายขั้นตอนการตั้งค่า และควบคุมหนึ่งใน LED เหล่านี้ด้วย Arduino Uno จากนั้น ฉันก็แสดงให้เห็นว่าการเชื่อมต่อหลาย ๆ อย่างเข้าด้วยกันเพื่อการแสดงแสงที่ยอดเยี่ยมนั้นง่ายเพียงใด! ระดับความยาก: เริ่มต้น เวลาที่ต้องทำให้เสร็จ: 10-15 นาที

ขั้นตอนที่ 1: รายการวัสดุ

รายการวัสดุ
รายการวัสดุ

RGB LED ที่ยอดเยี่ยมนี้มาในแพ็คเกจ 5050 (5 มม. x 5 มม.) พร้อมแผ่นรอง 6 แผ่นซึ่งค่อนข้างง่ายต่อการบัดกรีบนบอร์ดฝ่าวงล้อม เนื่องจากส่วนประกอบเพิ่มเติมเพียงอย่างเดียวที่จำเป็นคือตัวเก็บประจุแบบแยกการเชื่อมต่อ WS2812 จึงเสนอทางออกที่ดีที่สุดสำหรับการควบคุมสีและความสว่างของ LED RGB อย่างตรงไปตรงมา ไดรเวอร์ LED กระแสคงที่แบบฝัง (WS2811) มีประโยชน์อย่างน่าทึ่งด้วยเหตุผลสองประการ: - กระแสคงที่ที่ ~18mA จะขับ LED แต่ละดวงแม้ว่าแรงดันไฟฟ้าจะแตกต่างกันไป - ไม่จำเป็นต้องเพิ่มตัวต้านทานจำกัดกระแส (a.k.a.a choke resistors) ระหว่างแหล่งจ่ายไฟและ LED ทั้งหมดที่เราต้องการคือการออกแบบที่เรียบง่ายมากเพื่อให้มีอินพุตควบคุมกำลัง กราวด์ และ 1 อินพุตควบคุม เพื่อสร้างการแสดงแสงที่ยอดเยี่ยมซึ่งประกอบด้วยไฟ LED RGB ที่ประกอบด้วยอาร์เรย์ทั้งหมด ถูกตัอง! ด้วยการเชื่อมต่อพิน Data Out ของ LED ตัวใดตัวหนึ่ง กับพิน Data In ของอีกตัวหนึ่ง เราสามารถขับเคลื่อนทั้งสองอย่างแยกจากกันด้วยอินพุตควบคุมเดียวกัน! หากไม่ชัดเจนว่าต้องทำอย่างไร ไม่ต้องเป็นกังวล เมื่อจบ Instructable นี้ คุณจะสามารถเพิ่ม WS2812 ให้กับโครงการใดก็ได้ที่คุณต้องการ! สำหรับคำแนะนำนี้ นี่คือสิ่งที่เราจะใช้: วัสดุ: 3 x WS2812 RGB LEDs (บัดกรีล่วงหน้าบนกระดานฝ่าวงล้อมเล็ก ๆ) 1 x ลวดบัดกรีแข็งแบบ Solid Breadboard แบบไม่มีบัดกรี (คละสี; 28 AWG) 1 x Arduino Uno R3 1 x ขั้วต่อพินแบบแยกส่วน, ระยะพิทช์ 0.1", ตัวผู้ 8 ขา (มุมขวา) 1 x ขั้วต่อพิน, ระยะพิทช์ 0.1", ตัวเมีย 8 พิน (มุมขวา) 1 x ขั้วต่อพินแบบแยกส่วน, ระยะพิทช์ 0.1", 8 พิน MaleTools: PC USB A/B Cable Wire Stripper การประสาน เตารีดหมายเหตุ: ทั้งนี้ขึ้นอยู่กับโครงการของคุณ ไฟ LED WS2812 RGB มีจำหน่ายแบบไม่มีบอร์ดฝ่าวงล้อมราคาประมาณ $0.40 ต่อชิ้น แต่ความสะดวกของตัวเลือกบัดกรีล่วงหน้านั้นน่าสนใจสำหรับการใช้งานทั่วไป

ขั้นตอนที่ 2: เชื่อมต่อส่วนหัวของพิน

การเชื่อมต่อส่วนหัวของพิน
การเชื่อมต่อส่วนหัวของพิน
การเชื่อมต่อส่วนหัวของพิน
การเชื่อมต่อส่วนหัวของพิน
การเชื่อมต่อส่วนหัวของพิน
การเชื่อมต่อส่วนหัวของพิน

ด้วยวัสดุทั้งหมดที่ระบุไว้ในขั้นตอนก่อนหน้านี้ มันค่อนข้างตรงไปตรงมาที่จะจุดไฟ LED WS2812 RGB อันดับแรก เราต้องการเตรียม WS2812 Breakout Boards สำหรับวางบนเขียงหั่นขนมแบบไม่มีบัดกรี ในการทำเช่นนี้ เราใช้เครื่องตัดลวด (เครื่องมือตัดทั่วไปส่วนใหญ่จะทำงานได้ดีเช่นกัน) เพื่อแยกแถบ 8 ขาแต่ละอันออกเป็นชิ้น 2 x 3 ขา จำไว้ว่าการตัดนั้นค่อนข้างยุ่งยาก บ่อยครั้งที่ฉันพยายามใช้ร่องระหว่างส่วนหัวของผู้ชายสองคนเพื่อเป็นแนวทางในการตัด และฉันก็ลงเอยด้วยการตัดพลาสติกออกจากส่วนหัวมากเกินไป โดยการ 'เสียสละ' หมุดตรงที่เราต้องการตัด เราหลีกเลี่ยงปัญหาโดยสิ้นเชิง ใช้คีมดึงหมุดออกจากตำแหน่งที่ต้องการตัด (ในกรณีนี้คือพินที่ 4 และ 8) หลังจากที่หมุดถูกถอดออกแล้ว เราสามารถตัดส่วนตรงกลางของส่วนหัวที่ว่างเปล่าในขณะนี้ได้อย่างง่ายดาย เทคนิคนี้ใช้ได้ดีพอๆ กันกับส่วนหัวของเพศหญิง หลังจากการงัดและตัด เราควรจะมีส่วนหัว 6 x 3-Pin นั่นคือ 2 x มาตรฐานและ 4 x มุมฉาก (2 x ตัวผู้ 2 x ตัวเมีย) ด้วยความช่วยเหลือของหัวแร้ง ตอนนี้เราสามารถเชื่อมต่อหมุดกับแผงฝ่าวงล้อมทั้งสามแผงด้วยวิธีต่อไปนี้ บอร์ดหนึ่งควรมีส่วนหัวมาตรฐาน 2 x ในขณะที่อีก 2 บอร์ดควรมีส่วนหัวมุมฉาก 1 x บนบอร์ดที่จะมีส่วนหัวของพินมาตรฐาน เราวางพินบนพื้นผิวด้านล่างของบอร์ด (ด้านตรงข้ามกับที่ LED อยู่) ในอีกสองส่วนหัวมุมฉาก (แต่ละเพศ) สามารถวางบนพื้นผิวด้านบนหรือด้านล่างก็ได้ โปรดทราบว่าสิ่งสำคัญคือต้องสอดคล้องกัน ในตำแหน่งส่วนหัวชายและหญิง การใช้ตัวเก็บประจุแบบยึดพื้นผิวเพื่อปรับทิศทางบอร์ดจะเป็นประโยชน์ ใช้สิ่งนี้เป็นข้อมูลอ้างอิง ส่วนหัวของตัวผู้ควรบัดกรีที่ปลายใกล้กับตัวเก็บประจุมากที่สุด เมื่อหมุดถูกบัดกรี เราก็พร้อมที่จะเชื่อมต่อหนึ่งในนั้นกับ Arduino!

ขั้นตอนที่ 3: เชื่อมต่อ WS2812 Breakout Board กับ Arduino

การเชื่อมต่อ WS2812 Breakout Board กับ Arduino
การเชื่อมต่อ WS2812 Breakout Board กับ Arduino
การเชื่อมต่อ WS2812 Breakout Board กับ Arduino
การเชื่อมต่อ WS2812 Breakout Board กับ Arduino
การเชื่อมต่อ WS2812 Breakout Board กับ Arduino
การเชื่อมต่อ WS2812 Breakout Board กับ Arduino

ในขั้นตอนนี้ เราจะทำการเชื่อมต่อที่จำเป็นระหว่าง Arduino และหนึ่งในบอร์ดฝ่าวงล้อม WS2812 ของเรา เพื่อจุดประสงค์นี้ เราจะใช้เขียงหั่นขนมแบบไม่มีบัดกรี และสายจัมเปอร์ 3 เส้น หากคุณกำลังใช้หลอดลวด ตอนนี้เป็นเวลาที่จะตัด 3 ชิ้น โดยแต่ละชิ้นยาวประมาณ 4 นิ้ว ตอนนี้เราสามารถวาง WS2812 Breakout Board (อันที่มีส่วนหัวมาตรฐาน) ไว้บนตัวแบ่งของเขียงหั่นขนมของเราได้ ตรวจสอบให้แน่ใจ ที่ Arduino ถูกตัดการเชื่อมต่อจากแหล่งพลังงานและ USB เราจะดำเนินการเชื่อมต่อ ที่ด้านล่างของ WS2812 Breakout Board เราจะหาชื่อของแต่ละพิน: VCC, DI (DO), GND โดยใช้ เพื่อเป็นแนวทางในการเชื่อมต่อพิน 5V และ GND จาก Arduino กับพิน VCC และ GND ของบอร์ด WS2812 ตามลำดับ จากนั้นเราเชื่อมต่อพิน 8 ด้านดิจิทัลของ Arduino กับพิน DI ของบอร์ด WS2812 ซึ่งเป็นพินกลางของด้านที่ใกล้กับตัวเก็บประจุมากที่สุด ตอนนี้ เราพร้อมแล้วที่จะโหลดโปรแกรมของเราไปที่ Arduino และทำให้ WS2812 กะพริบ!

ขั้นตอนที่ 4: ทำให้กะพริบตาด้วย Arduino IDE

ทำให้กะพริบตาด้วย Arduino IDE
ทำให้กะพริบตาด้วย Arduino IDE
ทำให้กะพริบตาด้วย Arduino IDE
ทำให้กะพริบตาด้วย Arduino IDE

ฉันจะถือว่าคุณได้ติดตั้ง Arduino IDE ลงในคอมพิวเตอร์ของคุณแล้ว - คำแนะนำมากมายบนเว็บที่อธิบายกระบวนการได้ค่อนข้างดี โปรแกรมที่เราจะต้องโหลดลงใน Arduino สามารถดาวน์โหลดได้ที่นี่ หลังจากที่เราสามารถดับเบิลคลิกที่ไฟล์ primer.ino ภายในเฟิร์มแวร์ > ตัวอย่าง > โฟลเดอร์ไพรเมอร์เพื่อโหลดลงใน Arduino IDE (wirtten สำหรับเวอร์ชัน 1.0.5) แพ็คเกจนี้รวมไลบรารีที่จำเป็นสำหรับการคอมไพล์โค้ด ดังนั้นจึงไม่ควรมีข้อผิดพลาดใดๆ โปรดแสดงความคิดเห็นหากคุณพบปัญหาในการคอมไพล์ หลังจากเลือกประเภทบอร์ด Arduino และพอร์ต USB โดยใช้ตัวเลือกเมนูเครื่องมือแล้ว ให้อัปโหลดโค้ด จากนั้น WS2812 ควรเริ่มกะพริบสลับกันระหว่างสีแดง สีเขียว และสีน้ำเงิน คุณลักษณะที่ประณีตที่สุดเกี่ยวกับไฟ LED WS2812 RGB เหล่านี้คือสามารถ 'ถูกล่ามโซ่เดซี่' ได้อย่างง่ายดายเพื่อสร้างแถบยาวและอาร์เรย์ที่มีไฟ LED เหล่านี้จำนวนมาก ในขั้นตอนต่อไป เราทำสิ่งนี้อย่างแม่นยำด้วย 3 กระดานที่เราเตรียมไว้

ขั้นตอนที่ 5: การสร้างแถบไฟ LED RGB

การทำแถบไฟ LED RGB
การทำแถบไฟ LED RGB
การทำแถบไฟ LED RGB
การทำแถบไฟ LED RGB

วงจรขับ LED แบบฝัง (WS2811) ช่วยให้สามารถ 'เดซี่เชน' หนึ่ง LED ไปยังไฟ LED ถัดไปโดยใช้สายข้อมูลเพียง 1 เส้น (!) ด้วยการเชื่อมต่อ Data Output ของ WS2812 ตัวหนึ่งเข้ากับ Data Input ของอีกตัวหนึ่ง เราสามารถควบคุมความสว่างและสีของ LEDs ทั้งอาร์เรย์ได้มากถึง 500 ตัวบน Arduino! แน่นอน ในการขับเคลื่อนไฟ LED หลายๆ ดวงนั้น การพิจารณาบางอย่างอยู่ในลำดับ: - แต่ละพิกเซลดึงได้สูงสุด 60mA (สีขาวที่ความสว่างเต็มที่จะต้องเปิดไฟ LED ทั้งหมด แต่ละดวงจะมีค่า ~20mA) - Arduino จะใช้ RAM สูงสุดเพื่อขับ LED 500 ดวงที่อัตราการรีเฟรช 30 Hz - ในการเชื่อมต่อบอร์ดสองบอร์ดเข้าด้วยกัน ระยะห่างสูงสุดที่แนะนำคือ 6" เพื่อหลีกเลี่ยงปัญหาไฟดับ และข้อมูลเสียหาย ด้วยข้อควรพิจารณาเหล่านี้ เราสามารถขับ LED ทั้งหมดโดยใช้ความละเอียดสี 24 บิต ที่ระดับความสว่างที่สม่ำเสมอ และค่อนข้างยืดหยุ่นต่อการเปลี่ยนแปลงในการเปลี่ยนแปลงพลังงานแบตเตอรี่ (เล็ก) สำหรับ 'เดซี่เชน' กระดานที่เราเตรียมไว้สำหรับคำแนะนำนี้เราเริ่มต้นด้วยการเชื่อมต่อปลายตัวเมียจากปลายด้านหนึ่งไปยังปลายตัวผู้ของอีกด้านหนึ่งของกระดานทั้งสองด้านขวา - ส่วนหัวมุม จากนั้น เมื่อบอร์ด Arduino ของเราถูกตัดการเชื่อมต่อจาก Power และ USB เราวางปลายตัวผู้จากห่วงโซ่สองบอร์ดบนเขียงหั่นขนมแบบไม่มีบัดกรี เรามั่นใจว่า หมุดจะอยู่ในแนวเดียวกับหมุดบน WS2812 Breakout Board ที่เชื่อมต่อกับเขียงหั่นขนม แล้ว การจัดตำแหน่งดังกล่าวจะมีพิน VCC และ GND จากทั้งบอร์ดส่วนหัวตรงและโซ่ในแถวเดียวกันของเขียงหั่นขนม เราวางโซ่สองบอร์ดไว้ใกล้ส่วนท้ายของบอร์ดฝ่าวงล้อมที่สามซึ่งอยู่ตรงข้ามกับตัวเก็บประจุ. NS หลังจากเชื่อมต่อทุกอย่างแล้ว เราก็สามารถเปิด Arduino IDE และใช้โปรแกรมแก้ไขข้อความเพื่อเปลี่ยนคำจำกัดความ "#define NUM_LEDS 1" เป็น "#define NUM_LEDS 3" หลังจากเชื่อมต่อบอร์ดกลับไปที่ Power และ/หรือ USB แล้ว เราก็สามารถอัพโหลดโปรแกรมใหม่… และ… BAM! ไฟ LED ทั้งสามดวงควรกะพริบแบบนั้น!

ขั้นตอนที่ 6: ไปสู่ความมืดมิด ให้มีแสงสว่าง

ไปสู่ความมืดมิด ขอให้มีแสงสว่าง!
ไปสู่ความมืดมิด ขอให้มีแสงสว่าง!
ไปสู่ความมืดมิด ขอให้มีแสงสว่าง!
ไปสู่ความมืดมิด ขอให้มีแสงสว่าง!

คำแนะนำนี้แสดงให้คุณเห็นอย่างรวดเร็วถึงวิธีใช้ WS2812 RGB LED ที่บัดกรีไว้ล่วงหน้าบนกระดานฝ่าวงล้อมขนาดเล็ก เราใช้ Arduino เพื่อควบคุมความสว่างและสีของ LED สิ่งหนึ่งที่น่าผิดหวังเล็กน้อยคือโค้ดที่เราใช้ทำให้ไฟ LED ทั้งหมดกะพริบพร้อมกันด้วยความเข้มและสีเดียวกัน โหมดการทำงานนี้ไม่แสดงศักยภาพทั้งหมดของไดรเวอร์ LED "อัจฉริยะ" (WS2811) ที่ฝังอยู่ในแพ็คเกจนี้ ดังนั้น เรามาลองแก้ไขโค้ดต้นฉบับต่อไปนี้ เช่นเคย คุณจะต้องดาวน์โหลดและแตกไฟล์ จากนั้นเปิดเฟิร์มแวร์เพื่อโหลดลงใน Arduino (เฟิร์มแวร์ > เอฟเฟกต์ > effects.ino) ไฟล์ทั้งหมดที่จำเป็นสำหรับการสาธิตนี้รวมอยู่ด้วย ดังนั้นจึงไม่จำเป็นต้องเพิ่มไลบรารีของบุคคลที่สาม รหัสควรคอมไพล์โดยไม่มีการดัดแปลงใด ๆ --- มันถูกตั้งค่าให้รองรับ 3 LEDs แล้ว ตอนนี้มันขึ้นอยู่กับจินตนาการของคุณแล้วที่จะประดิษฐ์โปรเจ็กต์ต่อไปที่ไฟ LED RGB ขนาดกะทัดรัดและมีประโยชน์มากเหล่านี้อาจส่องแสงได้ อย่าลังเลที่จะโพสต์ผลงานสร้างสรรค์ของคุณเองโดยใช้ WS2812 ในส่วนความคิดเห็น!

แนะนำ: