단일 RGB LED를 사용하여 다양한 색상을 생성하고 방 구석을 더 매력적으로 만들 수 있다면 어떨까요? 그래서 여기 방에 빛이 변하면 색을 바꿀 수 있는 간단한 아두 이노 기반의 색 혼합 램프 가 있습니다. 따라서이 램프는 실내 의 조명 상태 에 따라 자동으로 색상 이 변경 됩니다.
모든 색상은 빨간색, 녹색 및 파란색의 조합입니다. 따라서 빨간색, 녹색 및 파란색을 사용하여 모든 색상을 생성 할 수 있습니다. 따라서 여기서는 PWM, 즉 LDR 의 빛 강도를 변경 합니다. 그러면 RGB LED 에서 빨강, 녹색 및 파랑 색상의 강도가 더 변경 되고 다른 색상이 생성됩니다.
아래 표는 듀티 사이클의 각 변화에 따른 색상 조합을 보여줍니다.
필요한 재료:
- 1 x Arduino UNO
- 1 x 브레드 보드
- 220ohm 저항기 3 개
- 1 킬로 옴 저항기 3 개
- 점퍼 와이어
- 3 x LDR
- 3 x 컬러 스트립 (빨간색, 녹색, 파란색)
- 1 x RGB LED
LDR:
우리는 이 회로에서 포토 레지스터 (또는 광 의존 저항기, LDR 또는 광 전도성 셀)를 사용할 것입니다. LDR은 반도체 재료로 만들어져 빛에 민감한 특성을 가질 수 있습니다. 이러한 LDR 또는 PHOTO RESISTOR는 "Photo Conductivity"원칙에 따라 작동합니다. 이 원리가 말하는 것은 빛이 LDR의 표면에 떨어질 때마다 (이 경우) 소자의 전도도가 증가한다는 것입니다. 즉, 빛이 LDR의 표면에 떨어질 때 LDR의 저항이 떨어집니다. LDR에 대한 저항 감소의 이러한 특성은 표면에 사용되는 반도체 재료의 특성이기 때문에 달성됩니다.
여기에서 3 개의 LDR 센서는 RGB Led 내부의 개별 적색, 녹색 및 청색 LED의 밝기를 제어하는 데 사용됩니다. 여기에서 Arduino로 LDR을 제어하는 방법에 대해 자세히 알아보십시오.
RGB LED:
RGB LED 에는 두 가지 유형 이 있는데, 하나는 공통 음극 유형 (공통 음극)이고 다른 하나는 공통 양극 유형 (공통 양극) 유형입니다. CC (Common Cathode 또는 Common Negative)에는 각 단자가 색상을 나타내는 3 개의 양극 단자와 세 가지 색상 모두를 나타내는 1 개의 음극 단자가 있습니다.
우리 회로에서는 CA (Common Anode 또는 Common Positive) 유형을 사용합니다. Common Anode 유형에서 RED LED를 켜고 싶다면 RED LED 핀을 접지하고 공통 양극에 전원을 공급해야합니다. 모든 LED도 마찬가지입니다. 여기에서 RGB LED를 Arduino와 인터페이스하는 방법을 알아보십시오.
회로도:
이 프로젝트의 전체 회로도는 위에 나와 있습니다. 회로도에 표시된 + 5V 및 접지 연결은 Arduino의 5V 및 접지 핀에서 얻을 수 있습니다. Arduino 자체는 노트북 또는 12V 어댑터 또는 9V 배터리를 사용하는 DC 잭을 통해 전원을 공급받을 수 있습니다.
PWM을 사용하여 RGB LED의 밝기를 변경합니다. 여기에서 PWM에 대해 자세히 알아볼 수 있습니다. 다음은 Arduino를 사용한 몇 가지 PWM 예제입니다.
- Arduino Uno의 가변 전원 공급 장치
- Arduino를 사용한 DC 모터 제어
- 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으로 선언합니다.
unsigned int red_led_value = 0; unsigned int blue_led_value = 0; unsigned int green_led_value = 0; unsigned int red_sensor_value = 0; unsigned int blue_sensor_value = 0; unsigned int green_sensor_value = 0; void setup () { pinMode (red_led_pin, OUTPUT); pinMode (blue_led_pin, OUTPUT); pinMode (green_led_pin, OUTPUT); Serial.begin (9600); }
루프 섹션에서는 analogRead ()를 사용 하여 세 개의 센서를 출력합니다 . 함수를 사용하고 세 가지 다른 변수에 저장합니다.
void 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; // 빨간색 LED 정의 blue_led_value = blue_sensor_value / 4; // 파란색 LED 정의 green_led_value = green_sensor_value / 4; // 녹색 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 표시 analogWrite (blue_led_pin, blue_led_value); // 파란색 LED 표시 analogWrite (green_led_pin, green_led_value); // 녹색 표시
Arduino 색상 혼합 램프 작동:
3 개의 LDR을 사용하고 있으므로 이러한 센서에 빛이 입사하면 센서의 입력 핀 역할을하는 Arduino의 아날로그 핀에서도 전압이 변화하여 저항이 변합니다.
이 센서에서 빛의 강도가 변하면 RGB에서 각각의 LED가 저항의 양으로 빛나고 PWM을 사용하여 RGB LED에서 다른 색상 혼합이 있습니다.