WS2812B RGB LED การควบคุมความสว่างและการผสมสี
คณิตศาสตร์เชิงแสง: การผสมสี WS2812B
การใช้ไลบรารี <FastLED.h> มาตรฐานเพื่อจุด LED แถบสีแดงนั้นง่ายดาย: led[0] = CRGB::Red; แต่บรรดานักออกแบบแสงมืออาชีพไม่ใช้สีแบบเรียบ ๆ โปรเจกต์ Color Mixing & Brightness นี้จะบังคับให้คุณเชี่ยวชาญโมเดลสี HSV (Hue, Saturation, Value) เพื่อสร้างการไล่ระดับสีพระอาทิตย์ตกดินและสีมหาสมุทรที่นุ่มนวลและเปลี่ยนแปลงไปมา

ทำไม HSV จึงเหนือกว่า RGB
หากคุณลองไล่สีจาก Red (255, 0, 0) ไป Green (0, 255, 0) โดยใช้ RGB ดิบ ๆ สีตรงกลางจะกลายเป็นสีน้ำตาลขุ่น ๆ น่าเกลียด นี่เป็นเรื่องน่าเกลียดในทางคณิตศาสตร์
- โมเดล HSV จะเปลี่ยนสเปกตรัมสีให้เป็นวงล้อ 360 องศา (Hue) Red คือ 0. Green คือ 120.
- หากคุณไล่สีโดยใช้ HSV การไล่ระดับสีจะกวาดไปอย่างสวยงาม รอบ ขอบของวงล้อสี Red จะเปลี่ยนผ่านทางคณิตศาสตร์จากสีส้มสดใส ไปยังสีเหลือง และลงตัวเป็นสีเขียว
- FastLED รองรับสิ่งนี้โดยกำเนิด:
fill_solid(leds, NUM_LEDS, CHSV(hue, saturation, brightness));
ตัวแปรของคอนโทรลเลอร์ฮาร์ดแวร์
คุณจะต่อ 10K Potentiometers สามตัวเข้ากับขาอนาล็อกของ Arduino (A0, A1, A2)
- Knob 1 (Hue):
A0ถูกแมปจาก 0-1023 ลงมาที่0-255เมื่อคุณหมุนมัน แถบ LED จะค่อย ๆ เปลี่ยนไปตามทุกสีของรุ้งได้อย่างไร้ที่ติ - Knob 2 (Saturation):
A1แมป0-255หมุนลงไปที่0และไฟจะกลายเป็นสีขาวบริสุทธิ์ (สีทั้งหมดจะถูกระบายออกไป) หมุนขึ้นไปที่255และสีจะกลายเป็นนีออนที่เข้มข้น! - Knob 3 (Value/Brightness):
A2ควบคุมพลังงานเอาต์พุตโดยรวม loop()จะรันFastLED.show()อย่างต่อเนื่อง สร้างแผงควบคุมการผสมสีที่ตอบสนองได้สูงและจับต้องได้สำหรับฉากแสง
การประกอบ
- Arduino Uno/Nano: หน่วยประมวลผล ADC matrix
- WS2812B Custom Length Strip (เช่น 30 LEDs)
- 10K หรือ 5K Rotary Potentiometers สามตัว
- แหล่งจ่ายไฟภายนอก 5V: (สำคัญมาก! แถบ LED ที่เปิดสีขาวเต็มที่อาจทำให้ตัวควบคุมแรงดันไฟฟ้าของ Arduino ละลายได้ทันทีหากจ่ายไฟโดยตรง)