- วัสดุที่ต้องการ:
- LDR:
- ไฟ LED RGB:
- แผนภูมิวงจรรวม:
- คำอธิบายการเขียนโปรแกรม:
- การทำงานของ Arduino Color Mixing Lamp:
จะเป็นอย่างไรหากเราสามารถสร้างสีที่แตกต่างกันโดยใช้ไฟ LED RGB เพียงตัวเดียวและทำให้มุมห้องของเราดูน่าสนใจยิ่งขึ้น ดังนั้นนี่คือหลอดไฟผสมสีแบบArduinoง่ายๆซึ่งสามารถเปลี่ยนสีได้เมื่อมีการเปลี่ยนแปลงของแสงในห้อง ดังนั้นหลอดไฟนี้จะเปลี่ยนสีโดยอัตโนมัติตามสภาพแสงในห้อง
ทุกสีผสมผสานระหว่างสีแดงเขียวและน้ำเงิน ดังนั้นเราจึงสามารถสร้างสีใด ๆ โดยใช้สีแดงสีเขียวและสีฟ้าสีดังนั้นที่นี่เราจะแตกต่างกัน PWM เช่นความเข้มของแสงบนLDRsซึ่งจะเปลี่ยนความเข้มของสีแดงเขียวและน้ำเงินในRGB LEDและจะมีการผลิตสีที่ต่างกัน
ตารางด้านล่างแสดงการผสมสีที่มีการเปลี่ยนแปลงตามรอบการทำงาน
วัสดุที่ต้องการ:
- 1 x Arduino UNO
- 1 x เขียงหั่นขนม
- ตัวต้านทาน 3 x 220 โอห์ม
- ตัวต้านทาน 3 x 1 กิโลโอห์ม
- สายจัมเปอร์
- 3 x LDR
- 3 x แถบสี (แดงเขียวน้ำเงิน)
- 1 x RGB LED
LDR:
เราจะใช้ โฟโตรีซิสเตอร์ (หรือ ตัวต้านทานขึ้นอยู่กับแสง, LDRหรือ เซลล์ที่เป็นสื่อกระแสไฟฟ้าด้วยภาพถ่าย) ที่นี่ในวงจรนี้ LDR ทำจากวัสดุเซมิคอนดักเตอร์เพื่อให้มีคุณสมบัติไวต่อแสง LDRs หรือ PHOTO RESISTORS เหล่านี้ทำงานบนหลักการของ“ Photo Conductivity” สิ่งที่หลักการนี้กล่าวคือเมื่อใดก็ตามที่แสงตกลงบนพื้นผิวของ LDR (ในกรณีนี้) การนำไฟฟ้าขององค์ประกอบจะเพิ่มขึ้นหรือกล่าวอีกนัยหนึ่งคือความต้านทานของ LDR จะตกลงเมื่อแสงตกลงบนพื้นผิวของ LDR คุณสมบัติของการลดลงของความต้านทานสำหรับ LDR นี้ทำได้เนื่องจากเป็นคุณสมบัติของวัสดุเซมิคอนดักเตอร์ที่ใช้กับพื้นผิว
ที่นี่ใช้เซ็นเซอร์ LDR สามตัวเพื่อควบคุมความสว่างของ LED สีแดงสีเขียวและสีน้ำเงินแต่ละดวงภายใน RGB Led เรียนรู้เพิ่มเติมเกี่ยวกับการควบคุม LDR ด้วย Arduino ที่นี่
ไฟ LED RGB:
ไฟ LED RGB มี สองประเภทประเภท หนึ่งคือประเภทแคโทดทั่วไป (ค่าลบทั่วไป) และประเภทอื่นคือประเภทขั้วบวกทั่วไป ใน CC (Common Cathode หรือ Common Negative) จะมีขั้วบวกสามขั้วแต่ละขั้วแสดงถึงสีและขั้วลบ 1 ขั้วแทนทั้งสามสี
ในวงจรของเราเราจะใช้ประเภท CA (Common Anode หรือ Common Positive) ในประเภทแอโนดทั่วไปหากเราต้องการให้ไฟ LED สีแดงติดเราจำเป็นต้องต่อกราวด์ขา LED สีแดงและจ่ายไฟให้กับขั้วบวกทั่วไป เช่นเดียวกับ LED ทั้งหมด เรียนรู้ที่นี่เพื่อเชื่อมต่อ RGB LED กับ Arduino
แผนภูมิวงจรรวม:
แผนภาพวงจรที่สมบูรณ์ของโครงการนี้ได้รับด้านบน การเชื่อมต่อ + 5V และกราวด์ที่แสดงในแผนภาพวงจรสามารถหาได้จาก 5V และขากราวด์ของ Arduino Arduino เองสามารถใช้พลังงานจากแล็ปท็อปของคุณหรือผ่านแจ็ค DC โดยใช้อะแดปเตอร์ 12V หรือแบตเตอรี่ 9V
เราจะใช้ PWM เพื่อเปลี่ยนความสว่างของ RGB led คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ PWM ได้ที่นี่ นี่คือตัวอย่าง PWM กับ Arduino:
- แหล่งจ่ายไฟแบบแปรผันโดย Arduino Uno
- DC Motor Control โดยใช้ Arduino
- เครื่องกำเนิดเสียงจาก Arduino
คำอธิบายการเขียนโปรแกรม:
ขั้นแรกเราประกาศอินพุตและพินเอาต์พุตทั้งหมดตามที่แสดงด้านล่าง
const ไบต์ red_sensor_pin = A0; const ไบต์ green_sensor_pin = A1; const ไบต์ blue_sensor_pin = A2; const ไบต์ green_led_pin = 9; const ไบต์ blue_led_pin = 10; const ไบต์ red_led_pin = 11;
ประกาศค่าเริ่มต้นของเซ็นเซอร์และไฟ LED เป็น 0
int red_led_value ที่ไม่ได้ลงนาม = 0; int blue_led_value ที่ไม่ได้ลงนาม = 0; int ที่ไม่ได้ลงนาม green_led_value = 0; int red_sensor_value ที่ไม่ได้ลงนาม = 0; int blue_sensor_value ที่ไม่ได้ลงนาม = 0; int green_sensor_value ที่ไม่ได้ลงนาม = 0; การตั้งค่าเป็นโมฆะ () { pinMode (red_led_pin, OUTPUT); pinMode (blue_led_pin, เอาท์พุท); pinMode (green_led_pin, เอาท์พุท); Serial.begin (9600); }
ในส่วนของลูปเราจะเอาเอาท์พุทของเซ็นเซอร์สามตัวพร้อม analogRead () ฟังก์ชันและจัดเก็บในสามตัวแปรที่แตกต่างกัน
โมฆะ loop () { red_sensor_value = analogRead (red_sensor_pin); ล่าช้า (50); blue_sensor_value = analogRead (blue_sensor_pin); ล่าช้า (50); green_sensor_value = analogRead (green_sensor_pin);
พิมพ์ค่าเหล่านั้นลงบนมอนิเตอร์แบบอนุกรมเพื่อจุดประสงค์ในการดีบัก
Serial.println ("ค่าเซ็นเซอร์ดิบ:"); Serial.print ("\ t แดง:"); Serial.print (red_sensor_value); Serial.print ("\ t สีน้ำเงิน:"); Serial.print (blue_sensor_value); Serial.print ("\ t สีเขียว:"); Serial.println (green_sensor_value);
เราจะได้รับค่า 0-1023 จากเซ็นเซอร์ แต่หมุด Arduino PWM ของเรามีค่า 0-255 เป็นเอาต์พุต เราจึงต้องแปลงค่าดิบของเราเป็น 0-255 เพื่อที่เราจะต้องหารค่าดิบด้วย 4 หรือเพียงแค่เราสามารถใช้ฟังก์ชันการทำแผนที่ของ Arduino เพื่อแปลงค่าเหล่านี้
red_led_value = red_sensor_value / 4; // กำหนด Red LED blue_led_value = blue_sensor_value / 4; // กำหนด Blue LED green_led_value = green_sensor_value / 4; // กำหนด Green Led
พิมพ์ค่าที่แมปไปยังมอนิเตอร์แบบอนุกรม
Serial.println ("ค่าเซ็นเซอร์ที่แมป:"); Serial.print ("\ t แดง:"); Serial.print (red_led_value); Serial.print ("\ t สีน้ำเงิน:"); Serial.print (blue_led_value); Serial.print ("\ t สีเขียว:"); Serial.println (green_led_value);
ใช้ analogWrite () เพื่อตั้งค่าเอาต์พุตสำหรับ RGB LED
analogWrite (red_led_pin, red_led_value); // ระบุ แอนะล็อก LED สีแดง(blue_led_pin, blue_led_value); // ระบุแอนะล็อกLED สีน้ำเงิน(green_led_pin, green_led_value); // ระบุเป็นสีเขียว
การทำงานของ Arduino Color Mixing Lamp:
ในขณะที่เราใช้ LDR สามตัวดังนั้นเมื่อแสงตกกระทบกับเซ็นเซอร์เหล่านี้ความต้านทานจะเปลี่ยนไปเนื่องจากแรงดันไฟฟ้าที่ได้รับก็เปลี่ยนไปที่พินอนาล็อกของ Arduino ซึ่งทำหน้าที่เป็นพินอินพุตสำหรับเซ็นเซอร์
เมื่อความเข้มของแสงเปลี่ยนแปลงบนเซ็นเซอร์เหล่านี้ไฟ LED ตามลำดับใน RGB จะเรืองแสงพร้อมกับจำนวนความต้านทานที่เปลี่ยนไปและเรามีการผสมสีที่แตกต่างกันใน RGB led โดยใช้ PWM