ทฤษฎีเกี่ยวกับสี
การกำเนิดสีต่างๆอย่างหลากขึ้นมาอย่างหลากหลายนั้น จะเริ่มต้นมาจากแม่สีหลักท้ง 3 สี คือ สีเขียว สีแดง และสีน้ำเงิน ตามหลักการการผสมสีปฐมภูมิ(แม่สี 3 สี)จะได้สีทุติยภูมิ ดังต่อไปนี้
1. สีเขียว + สีแดง = สีเหลือง
2. สีเขียว + สีน้ำเงิน = สีฟ้า
3. สีแดง + สีน้ำเงิน = สีม่วง
4. สีเขียว + สีแดง+ สีน้ำเงิน = สีขาว
ซึ่งหากดูจากรูปข้างล่างจะเห็นได้ว่าสีของวัตถุ จะเกิดจากแม่สีเป็นตัวกำหนดและอัตราการผสมสีทำให้เกิดสีต่างๆเกิดขึ้นมากมาย ดังรูปภาพที่ 1
รูปภาพที่ 1 การผสมสี
การประยุกต์ใช้กับเซนเซอร์ Analog Lotus T3 RGB
จากหลักการข้างต้นที่กล่าวมา เราสามารถใช้เซนเซอร์ Lotus T3 ทั้ง 3 สี(RGB) มาใช้เพื่อรับค่าการสะท้อนที่เหมาะสมของแต่ละย่านความความคลื่นของแสงที่ส่งออกไปผ่าน Phototransistor ที่รับค่าการสะท้อนแสงออกมาในรูปแบบของสัญญาณ Analog ซึ่งมาตรฐานของเซนเซอร์ตรวจจับการสะท้อนของ Lotus T3 มีพอร์ตเชื่อมต่ออยู่ 2 แบบ
คือ
1. แบบ JST จะเรียงสัญญาณขาแบบ V A G
2. แบบ PinHD จะเรียงสัญญาณขาแบบ G V A
** หมายเหตุ : V คือไฟบวก 3.3v-5v
G คือ ไฟลบ
และ A คือขาสัญญาณในรูปแบบอนาล็อก
รูปที่ 2 มาตรฐานเซนเซอร์ตรวจจับแสงการสะท้อน Lotus T3
หลักการติดตั้งเซนเซอร์ในการว้ดค่าสี
สามารถติดตั้งเซนเซอร์ Lotus T3 เพื่อเช็คค่าสีได้ตามรูปที่ 3 ได้เลย
รูปที่ 3 การติดตั้งเซนเซอร์ Lotus T3 เพื่อตรวจเช็คค่าการสะท้อนของแสงสีต่างๆ
Datasheet การต่อวงจรกับบอร์ด Lotus Nano Bot
Arduino IDE CODE
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 OLED(-1);
/////////ค่าสี S1R ใช้เซนเซอร์ T3 สีแดงวัด////////
#define Y01 10000 // กรอกค่าพื้นเหลือง
#define G01 10000 // กรอกค่าพื้นเขียว
#define R01 10000 // กรอกค่าพื้นแดง
#define B01 10000 // กรอกค่าพื้นน้ำเงิน
/////////ค่าสี S2B ใช้เซนเซอร์ T3 สีน้ำเงินวัด/////////////////////
#define Y02 10000 // กรอกค่าพื้นเหลือง
#define G02 10000 // กรอกค่าพื้นเขียว
#define R02 10000 // กรอกค่าพื้นแดง
#define B02 10000 // กรอกค่าพื้นน้ำเงิน
/////////ค่าสี S6G ใช้เซนเซอร์ T3 สีเขียววัด/////////////////////
#define Y06 10000 // กรอกค่าพื้นเหลือง
#define G06 10000 // กรอกค่าพื้นเขียว
#define R06 10000 // กรอกค่าพื้นแดง
#define B06 10000 // กรอกค่าพื้นน้ำเงิน
///////////////////////////////////////////////////////
void setup() {
// put your setup code here, to run once:
OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C); // กำหนดแอดเดรสของพอร์ตจอเป็น 0x3C (for the 128x64)
}
void loop() {
// put your main code here, to run repeatedly:
int s0 = analogRead(0);
int s1 = analogRead(1);
int s2 = analogRead(2);
int s3 = analogRead(3);
int s6 = analogRead(6);
OLED.clearDisplay();
OLED.setTextColor(WHITE, BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ
OLED.setCursor(0, 0); // เซตตำแหน่ง 0,0
OLED.setTextSize(1); // เซตขนาดอักษรมีขนาดเป็น 1
OLED.print(" S1R = "); OLED.println(s1); // แสดงค่าเซนเซอร์ S1
OLED.print(" S2B = "); OLED.println(s2); // แสดงค่าเซนเซอร์ S2
OLED.print(" S6G = "); OLED.println(s6); // แสดงค่าเซนเซอร์ S3
if ( ( s1>=(Y01 - 100) ) and (s1 < (Y01 + 100))and( s2>=(Y02 - 100) ) and (s2 < (Y02 + 100))and( s6>=(Y06 - 70) ) and (s6 < (Y06 + 70)) ){OLED.println(" Yelow");}
if ( ( s1>=(G01 - 100) ) and (s1 < (G01 + 100))and( s2>=(G02 - 100) ) and (s2 < (G02 + 100))and( s6>=(G06 - 70) ) and (s6 < (G06 + 70)) ){OLED.println(" Green");}
if ( ( s1>=(R01 - 100) ) and (s1 < (R01 + 100))and( s2>=(R02 - 100) ) and (s2 < (R02 + 100))and( s6>=(R06 - 70) ) and (s6 < (R06 + 70)) ) {OLED.println(" Red");}
if ( ( s1>=(B01 - 100) ) and (s1 < (B01 + 100))and( s2>=(B02 - 100) ) and (s2 < (B02 + 100))and( s6>=(B06 - 70) ) and (s6 < (B06 + 70)) ) {OLED.println(" Blue");}
else { OLED.println(" -------");}
OLED.display();
delay(50);
}