การทดลอง Arduino Lesson 4 RGB LED

     ใน Lesson 4 นี้เป็นการทดลองกับ RGB LED กล่าวคือ เป็น LED ที่มี 3 สีภายในหลอดเดียวกัน สามารถกำหนดให้ LED แปลงแสงเป็นสีอะไรก็ได้ที่ผสมกันระหว่าง 3 สี red green blue

     ใน Lesson 4 RGB LED นี้จะต้องมีอุปกรณ์ที่ทดลองตามรายการดังนี้
          1. Arduino Uno R3 x 1
          2. RGB LED   x 1
          3. Resistor 220 ohm x 3
          6. M-M wires (Male to Male jumper wires) x 4
          7. Breadboard x 1

RGB LED
     มีลักษณะและโครงสร้างตามรูปด้านล่าง โดยแสงที่สว่างออกมาจะเป็นแส้งที่ผสมกันระว่างแม่สี 3 สี (RGB) รายละเอียดเพิ่มเติม คลิ๊กที่นี่ และการผสมสีดูรายละเอียด ที่นี่



ในส่วนของ Lesson 4 RGB LED จะมีการต่อวงจรตามรูปด้านล่างนี้






และมีการใส่ Code ตามนี้ครับ

#define BLUE 3
#define GREEN 5
#define RED 6

void setup()
{
   pinMode(RED, OUTPUT);
   pinMode(GREEN, OUTPUT);
   pinMode(BLUE, OUTPUT);
   digitalWrite(RED, HIGH);
   digitalWrite(GREEN, LOW);
   digitalWrite(BLUE, LOW);
}

หลังจากทดสอบแล้วปรากฎว่า เมื่อทำการผสมสีแล้วสีผิดไป จึงได้ทำการเปลี่ยน pin Output ใหม่ เป็นดังนี้

BLUE    จากเดิม 3 เปลี่ยนเป็น  11
GREEN จากเดิม 5 เปลี่ยนเป็น  10
RED      จากเดิม 6 เปลี่ยนเป็น    9

และมีการใส่ Code เป็นดังนี้แทน (ใน Loop มีการทดสอบเปลี่ยนค่าเพื่อให้แสงเปลี่ยนไป)

// Define Pins
#define redpin 11      // red pin of the RGB led is connected to pin 11
#define greenpin 10   // green pin of the RGB led is connected to pin 10
#define bluepin 9    // blue pin of the RGB led is connected to pin 9

void setup() {
  pinMode(redpin, OUTPUT);      //initialize pin 11 as output
  pinMode(greenpin,OUTPUT);     //initialize pin 10 as output
  pinMode(bluepin, OUTPUT);     //initialize pin 9 as output
}

void loop() {
// blue color fades into red
  for (int i=0; i<256;i++) {
    analogWrite(redpin, i);
    analogWrite(bluepin, 255-i);
    analogWrite(greenpin, 0);
    delay(10);
  }
  // red color fades into green
  for (int i=0; i<256; i++) {
    analogWrite(redpin, 255-i);
    analogWrite(bluepin, 0);
    analogWrite(greenpin, i);
    delay(10);
  }
  // green color fades into blue
  for (int i=0; i<256; i++) {
    analogWrite(redpin, 0);
    analogWrite(bluepin, i);
    analogWrite(greenpin, 255-i);
    delay(10);
  }
}

ที่มา : https://github.com/lee1933/schwiftyarduino/blob/master/RGB_LED.ino

ซึ่งได้ผลลัพธ์ที่ดีกว่าของเดิมครับตามรูป



เพิ่มเติม

     ในส่วนของการใช้งาน RGB LED ร่วมกับ Arduino นั้น จะต้องต่อกับขาที่เป็น Pulse Width Modulation หรือ PWM เท่านั้น เพื่อให้สามารถกำหนดค่า Duty cycle ให้กับ RGB LED ได้

     Pulse Width Modulation หรือ PWM เป็นเทคนิคในการ รับ-ส่ง ค่าอะนาล็อก (ความถี่) ด้วยสัญญาณดิจิตอล กล่าวคือ เป็นการควบคุมสัญญาณดิจิตอลในการสร้างคลื่นสี่เหลี่ยม ซึ่งสัญญาณจะสลับระหว่าง "High" และ "Low"  โดยการเปลี่ยนช่วงเวลาที่สัญญาณใช้จ่ายไปกับเวลาที่สัญญาณใช้ออกไป ระยะเวลาของ "on time" เรียกว่า Pulse width เพื่อให้ได้ค่าอะนาล็อกที่ต่างกัน สามารถเปลี่ยนหรือปรับความกว้างของ Pulse

     ถ้าคุณทำซ้ำรูปแบบการเปิดเครื่องอย่างรวดเร็วพร้อมกับ LED ผลเช่นเดียวกับว่าสัญญาณแรงดันไฟฟ้าระหว่าง 0 ถึง 5V ในการควบคุมความสว่างของ LED

     ในภาพด้านล่างเส้นสีเขียวแสดงช่วงเวลาปกติ ระยะเวลาหรือช่วงเวลานี้เป็นค่าผกผันของความถี่ PWM กล่าวคือความถี่ของ PWM ที่ Arduino มีค่าประมาณ 500Hz เส้นสีเขียวจะวัดได้ 2 มิลลิวินาที การเรียก analogWrite () อยู่ในช่วง 0-255 อันทำให้แอนะล็อก (255) ร้องขอรอบการทำงาน 100% (ตลอดเวลา) และ analogWrite (127) เป็นรอบการทำงาน 50% (เวลาครึ่ง) สำหรับ ตัวอย่าง.



ที่มา : https://www.arduino.cc/en/Tutorial/PWM

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เริ่มต้นกับความอยากเป็น Maker

เข้าใจบอร์ด Arduino UNO แบบคร่าวๆ

เตรียม Software ที่จำเป็นในการใช้งาน แบบ step by step