กลับไปหน้ารวมไฟล์
control-rgb-sensor-led-bd819a.md

ชื่อโปรเจกต์: ควบคุม 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) หรือการตรวจจับสีจากสภาพแวดล้อมในเวอร์ชันต่อๆ ไป

ข้อมูล Frontmatter ดั้งเดิม

title: "Control rgb sensor led"
description: "Fun with colors and code"
author: "stt4236"
category: ""
tags:
  - "lights"
  - "home automation"
  - "internet of things"
views: 847
likes: 2
price: 435
difficulty: "Intermediate"
components: []
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "4b1de49549dcc0c080835dcc9dcf037aedfe909713b6265628644be49ef15070"
encryptedPayload: "U2FsdGVkX1/ngstNHi35KClsdNCYyxIESb2mzQ4TIheWh7JIEtLCaL1hKvIoxk+GbszLzV0/LfdXzVoUvgDK5omnvtmutVmWX7p46Gy23kY="
seoDescription: "Learn how to control an RGB sensor led using code in this fun Arduino project exploring colors."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/control-rgb-sensor-led-bd819a_cover.jpg"
lang: "th"