โอ้โห... ใครกลับมาอัพโปรเจคอีกแล้วน้าา
กูเองแหละ กูพูดถึงกู
นี่คือทิวทอเรียลแบบขั้นตอนต่อขั้นตอน ว่าทำยังไงให้เราตั้งค่าระดับความสว่าง และผสมสีของแถบไฟ WS2812B ให้ได้สีที่เราต้องการ
แค่ใช้โพเทนชิโอมิเตอร์ 10k นิดหน่อย กับแถบไฟ WS2812B Addressable RGB LED ก็ทำไฟแบ็คกราวด์สำหรับถ่ายวิดีโอ ถ่ายรูป ไฟประดับหลังจอ หรือไฟสร้างบรรยากาศในห้องตัวเองได้แล้ววว
จะเอาไปใช้ทำอะไร ก็ขึ้นอยู่กับไอเดียสุดบรรเจิดของน้องๆ หรือจะเอาไปวางตรงไหน
ใช่ครับ มันมีของสำเร็จรูปที่ราคาถูกกว่าและมี Bluetooth หรือ WiFi ให้อยู่แล้ว แต่อันที่จริง ถ้าน้องๆ อยากได้ฟังก์ชั่นพวกนั้นเพิ่ม ก็สามารถเอามาต่อกับโปรเจคนี้ได้เหมือนกันนะ (ถ้าอยากทำจริงๆ น่ะ)
เรื่องโค้ดก็ง่ายๆ หนิ เพราะส่วนใหญ่ก็เอามาจากโค้ดตัวอย่างใน Arduino IDE นั่นแหละ
******************************************************************************
ลิงก์ที่เป็นประโยชน์:
โค้ดตัวอย่าง Analog Input
โค้ดตัวอย่าง Analog Write
โค้ดตัวอย่าง Analog In-Out Serial
ไลบรารี่ FastLED การใช้งานพื้นฐาน
******************************************************************************
ลิงก์โซเชียลมีเดีย (ถ้าอยากตามนะ ไม่อยากก็ไม่เป็นไร):
******************************************************************************





คณิตศาสตร์แห่งแสง: การผสมสี WS2812B
การใช้ไลบรารีมาตรฐาน <FastLED.h> เพื่อให้แถบไฟติดสีแดงเนี่ยง่ายสุดๆ: led[0] = CRGB::Red; แต่โปรไฟล์นักออกแบบแสงจริงๆ เขาไม่ใช้สีแบนๆ แบบนั้นหรอก โปรเจกต์ Color Mixing & Brightness นี้จะบังคับให้น้องต้องเชี่ยวชาญโมเดลสี HSV (Hue, Saturation, Value) เพื่อสร้างเกรเดียนต์ที่ลื่นไหลแบบพระอาทิตย์ตกหรือสีน้ำทะเล
ทำไม HSV ถึงเทพกว่า RGB
ถ้าน้องลองไล่สีจากแดง (255, 0, 0) ไปเขียว (0, 255, 0) ด้วย RGB แบบตรงๆ สีตรงกลางจะกลายเป็นสีน้ำตาลโคลนตุๆ ดูไม่สวยเลย ซึ่งมัน "ไม่คณิตศาสตร์" เอาเสียเลย
- โมเดล HSV จะเปลี่ยนสเปกตรัมสีให้เป็นวงล้อ 360 องศา (Hue) สีแดงคือ 0 ส่วนสีเขียวคือ 120
- ถ้าเราไล่สีด้วย HSV เกรเดียนต์จะวิ่งสวยๆ รอบๆ ขอบวงล้อสี ทางคณิตศาสตร์แล้วสีแดงจะค่อยๆ เปลี่ยนเป็นส้มสด, เข้าไปที่เหลือง, แล้วลงตัวพอดีที่เขียว
- FastLED มีฟังก์ชันนี้ให้ใช้เลย:
fill_solid(leds, NUM_LEDS, CHSV(hue, saturation, brightness));
ตัวแปรควบคุมจากฮาร์ดแวร์
เราจะต่อ โพเทนชิออมิเตอร์ 10K 3 ตัวเข้ากับพินอนาล็อกของ Arduino (A0, A1, A2)
- ปุ่มหมุนที่ 1 (Hue):
A0จะถูกแมปค่าจาก 0-1023 ลงมาเหลือ0-255พอหมุนมัน แถบไฟจะลื่นไหลผ่านทุกสีในรุ้งได้อย่างเนียนสุดๆ - ปุ่มหมุนที่ 2 (Saturation):
A1แมปค่า0-255หมุนลงไปที่0ไฟจะกลายเป็นสีขาวล้วน (สีทั้งหมดหายไป) หมุนขึ้นไปที่255สีจะเข้มข้นจัดจ้านเหมือนไฟนีออน! - ปุ่มหมุนที่ 3 (Value/Brightness):
A2ควบคุมกำลังไฟ output โดยรวม - ฟังก์ชัน
loop()จะรันFastLED.show()อย่างต่อเนื่อง ทำให้เรามีมิกเซอร์ควบคุมแสงที่เป็นกายภาพและตอบสนองเร็วมาก
การประกอบชิ้นส่วน
- Arduino Uno/Nano: โปรเซสเซอร์เมทริกซ์ ADC
- แถบไฟ WS2812B ความยาวตามชอบ (เช่น 30 ดวง)
- โพเทนชิออมิเตอร์แบบหมุน 10K หรือ 5K 3 ตัว
- แหล่งจ่ายไฟภายนอก 5V: (สำคัญมาก! ถ้าใช้ไฟจาก Arduino ตรงๆ เวลาเปิดแถบไฟสีขาวเต็มที่ ตัวเรกูเลเตอร์บนบอร์ดจะไหม้ทันที) ห้ามช็อตนะตัวนี้
สอนทำโปรเจกต์แบบเต็ม:
