ชื่อโปรเจกต์: RGB Sensor Arduino
ศิลปะแห่งสีสัน: เปลี่ยนค่าสีให้เป็นภาพวาดระดับโลก
เห้ยน้อง เคยคิดป่ะว่าสีแต่ละสีมันบอกเล่าประวัติศาสตร์ศิลปะได้? โปรเจกต์ RGB Sensor Arduino ตัวนี้จะพาน้องไปลองของจริง ด้วยการสร้างสะพานเชื่อมระหว่างโลกกายภาพกับภาพดิจิทัล โดยใช้เจ้า Sensor รุ่น Adafruit TCS34725 สแกนวัตถุแล้วสั่งให้คอมพิวเตอร์โชว์ภาพวาดชื่อดังตามโทนสีที่มันเห็น เปลี่ยนข้อมูลดิบๆ ให้กลายเป็นงานอาร์ตสุดล้ำ บอกเลยว่าหล่อเท่!
ความเทพของ Sensor TCS34725
บอกก่อนนะว่าตัวนี้ไม่ใช่ Photoresistor กิ๊กก๊อกทั่วไป แต่มันคือ Digital Sensor ตัวตึง:
- มี IR Filter ในตัว: ปกติ Sensor แสงทั่วไปจะโดนแสงอินฟราเรดหลอกเอาได้ แต่ตัวนี้มีฟิลเตอร์บล็อก IR ทำให้ค่า Red, Green และ Blue ที่อ่านได้ ตรงกับที่ตาคนเราเห็นเป๊ะๆ
- แยกแยะได้ 16 ล้านสี: ด้วยค่า Dynamic Range สูงถึง 3,800,000:1 จะเฉดสีไหนพี่แกเก็บหมด ไม่เหมือน Sensor ราคาถูกที่แยกสีไม่ออก
- ใช้ Protocol I2C: เชื่อมต่อผ่านไลบรารี Wire.h (I2C) โดยใช้แค่พิน SCL และ SDA ต่อสายง่ายๆ ไม่ยุ่งยาก แม้ข้อมูลจะละเอียดแค่ไหนก็ตาม
สะพานเชื่อม Arduino สู่ Processing
โปรเจกต์นี้เราใช้การส่งข้อมูลผ่าน Serial Communication แบบไร้รอยต่อเพื่อจัดการเรื่องกราฟิก:
- Arduino Data Stream: ตัว Arduino จะอ่านค่าดิบ R, G, B แล้วส่งออกไปทาง Serial Port เป็นข้อความแบบมีคอมม่าคั่น (เช่น
255,10,40) - Processing Listener: เราจะมีสคริปต์ที่รันบน Processing (ภาษาเขียนโปรแกรมด้าน Visual) คอยเงี่ยหูฟังที่ COM port พอได้ข้อมูลมาก็จับมาแยกเป็นค่าตัวเลขสีแต่ละสี
- Heuristic Mapping: ใน Processing จะมี Logic เช็คว่าสีไหนเด่น ถ้าค่า Red นำโด่งมาเลย มันก็จะสั่งโชว์ภาพวาดแนว Tintoretto แต่ถ้า Blue มาแรง ก็อาจจะเป็นงานของ Monet หรือ Barthes แทน จัดไปวัยรุ่น!
การออกแบบเพื่อการเรียนรู้และ Feedback
เพื่อให้งานเราดูโปรและไม่งงเวลาใช้งาน พี่เลยใส่ RGB Common Cathode LED เข้าไปด้วย พอ Sensor ตรวจจับสีได้ปุ๊บ Arduino ก็จะสั่ง PWM (Pulse-width modulation) ให้ LED สว่างเป็นสีนั้นทันที เป็นการยืนยันว่า "เออ ข้าเห็นสีนี้นะเว้ย" ก่อนจะไปดูที่จอคอม โปรเจกต์นี้โคตรเหมาะจะเป็น Final University Project เพราะมันโชว์กึ๋นทั้งเรื่องการคุม Sensor, การรับส่งข้อมูลข้าม Platform และการออกแบบที่คำนึงถึงผู้ใช้งานจริง
อันนี้คือโปรเจกต์จบมหาลัยของพี่เอง ใช้บอร์ด [Arduino](https://s.shopee.co.th/7fUgFAWSki) UNO กับ Adafruit RGB [sensor](https://s.shopee.co.th/7VBG2rX65j)
เริ่มแรกก็จับเจ้า RGB sensor มาบัดกรีซะหน่อย แล้วก็ต่อสายเข้าบอร์ด Arduino UNO ตามรูปข้างล่างนี้เลย (ระวังอย่าให้ช็อตนะน้อง)

ใช้ Code ชุดนี้ พี่ก็สามารถแยกแยะค่าสี RGB ได้มากกว่า 16 ล้านสีแล้ว โคตรโหด!

ส่วนการโชว์รูปภาพให้สัมพันธ์กับสี RGB พี่เลือกใช้ Processing เพราะมันใช้โครงสร้าง Code แบบเดียวกับ Arduino เลย ตามนี้:
พี่เซ็ตเงื่อนไขไว้ใน Code ด้านบน เพื่อให้มันโชว์ภาพวาดที่ต่างกัน 3 ภาพ ตามค่าสีหลัก 3 สี คือ แดง เขียว และน้ำเงิน
