ชื่อโปรเจกต์: ควบคุม RGB sensor LED
int redPin= 11;
int greenPin = 10;
int bluePin = 9 ;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
setColor(255, 0, 0); // Red Color
delay(1000);
setColor(0, 255, 0); // Green Color
delay(1000);
setColor(0, 0, 255); // Blue Color
delay(1000);
setColor(255, 255, 255); // White Color
delay(1000);
setColor(170, 0, 255); // Purple Color
delay(1000);
setColor(255,255,0);
delay(1000);
setColor(128,0,128);
delay(1000);
setColor(64,224,208);
delay(1000);
setColor(0,128,128);
delay(1000);
setColor(128,0,0);
delay(1000);
setColor(0,0,128);
delay(1000);
}
void setColor(int redValue, int greenValue, int blueValue) {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
}
ทำความเข้าใจเกี่ยวกับการผสมสี RGB
RGB LED โดยพื้นฐานแล้วคือ LED สามตัว (สีแดง, สีเขียว และสีน้ำเงิน) ที่รวมอยู่ในโมดูลเดียวพร้อมการเชื่อมต่อร่วมกัน (ไม่ว่าจะเป็น Common Cathode หรือ Common Anode) ด้วยการปรับความสว่างของ LED แต่ละตัวแยกกัน เราสามารถสร้างสีได้เกือบทุกสีในสเปกตรัมที่มองเห็นได้ผ่าน Additive Color Mixing
การตั้งค่าฮาร์ดแวร์
- ขา Arduino: เราใช้ขา 9, 10 และ 11 เนื่องจากเป็นขา PWM (Pulse Width Modulation) ที่เปิดใช้งานด้วยฮาร์ดแวร์ สิ่งนี้ช่วยให้ Arduino สามารถจำลองแรงดันไฟฟ้าที่แตกต่างกันได้โดยการสลับเอาต์พุต ON และ OFF อย่างรวดเร็ว
- การเชื่อมต่อ:
- ขาสีแดง -> Digital Pin 11
- ขาสีเขียว -> Digital Pin 10
- ขาสีน้ำเงิน -> Digital Pin 9
- ขาร่วม -> Ground (สำหรับ Common Cathode) หรือ 5V (สำหรับ Common Anode)
คำอธิบายโค้ด: ฟังก์ชัน setColor
หัวใจสำคัญของโปรเจกต์นี้คือฟังก์ชันที่กำหนดเอง setColor(int r, int g, int b) มันทำให้โค้ดง่ายขึ้นโดยอนุญาตให้เราส่งค่าตั้งแต่ 0 (ปิด) ถึง 255 (ความสว่างเต็มที่) สำหรับแต่ละช่องสี
void setColor(int redValue, int greenValue, int blueValue) {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
}
การใช้ analogWrite() Arduino จะสร้างคลื่นสี่เหลี่ยมที่มี duty cycle ที่สอดคล้องกับค่าอินพุต ซึ่งสายตาของเราจะรับรู้ว่าเป็นระดับสีที่หรี่ลงหรือสว่างขึ้น
การทดลองกับสีต่างๆ
ด้วยการรวมค่าต่างๆ คุณสามารถสร้างสีพิเศษได้:
- สีม่วง:
setColor(170, 0, 255) - สีฟ้าคราม:
setColor(64, 224, 208) - สีเหลือง:
setColor(255, 255, 0)
โครงสร้างเชิงตรรกะของโปรเจกต์นี้ทำให้ง่ายต่อการเพิ่มรูปแบบที่ซับซ้อนมากขึ้น เช่น การเปลี่ยนสีที่ราบรื่น (rainbow fades) หรือการตรวจจับสีจากสภาพแวดล้อมในเวอร์ชันต่อๆ ไป