Arduino Uno RGB LED Basic
RGB LED 기초 사용법에 대해 설명
합니다. RGB LED로 여러가지 색을 표현하기 위해 사용되는 PWM 출력 방법에 대한 기초 적인 내용은 하단의 관련 포스트를 참고해주세요.RGB LED Module
RGB LED는 빛의 3원색인 Red, Green, Blue 세가지 색의 LED를 하나의 패키지로 만들어 놓은 LED 입니다. 본 포스트에서 사용하는 RGB LED 모듈은 아래와 같이 4핀으로, 각각 Red, Green, Blue LED의 애노드와 공통 캐소드인 - 핀으로 구성됩니다. RGB 각각의 LED에는 전류 제한용 150Ω 이 직렬로 연결되어 있어, 별도의 전류 제한 저항 없이 아두이노 포트에 직접 연결하여 사용 가능합니다.
빛의 3원색과 RGB LED 모듈
RGB LED는 Red, Green, Blue LED 각각의 밝기를 조정하여 다양한 색을 표시 할 수 있습니다. 아두이노에서는 PWM(Analog Output)으로 R,G,B의 밝기를 0~255 로 조정할 수 있습니다. 아두이노에서 PWM 출력하는 기초적인 방법은 하단의 관련 포스트를 참조해주세요.
RGB Color Table
RGB Color Table
하드웨어 연결
회로도 및 연결
아두이노 우노로 RGB LED를 테스트하기 위해 아래와 같이 회로를 구성하였습니다. RGB Module의 R,G,B 단자는 PWM 출력이 가능한 11번, 10번, 9번 포트로 각각 연결하였습니다.
Arduino Uno와 RGB LED Module 연결 회로도 및 연결 예시
예제1 : RGB LED On/Off 제어
예제1은 RGB LED를 ON/OFF 방식으로 제어하는 예제입니다. RGB 3개의 핀(3 Bit)으로 8가지 색 표현이 가능합니다.
코드
아래의 예제 코드는 1000ms 간격으로 RED -> GREEN -> BLUE -> YELLOW -> CYAN 색을 순회하는 코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #define RED 11 // RGB LED Module의 RED 핀 #define GREEN 10 // RGB LED Module의 GREEN 핀 #define BLUE 9 // RGB LED Module의 BLUE 핀 void setup(){ pinMode(RED, OUTPUT); pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); } void loop(){ // RED digitalWrite(RED, HIGH); digitalWrite(GREEN, LOW); digitalWrite(BLUE, LOW); delay(1000); // GREEN digitalWrite(RED, LOW); digitalWrite(GREEN, HIGH); digitalWrite(BLUE, LOW); delay(1000); // BLUE digitalWrite(RED, LOW); digitalWrite(GREEN, LOW); digitalWrite(BLUE, HIGH); delay(1000); // YELLOW digitalWrite(RED, HIGH); digitalWrite(GREEN, HIGH); digitalWrite(BLUE, LOW); delay(1000); // CYAN digitalWrite(RED, LOW); digitalWrite(GREEN, HIGH); digitalWrite(BLUE, HIGH); delay(1000); } | cs |
실행 결과
예제2 : RGB LED On/Off 제어
예제2는 RGB LED를 PWM으로 제어하는 예제입니다. RGB LED를 8 Bit PWM 출력으로 제어하는 경우 표현 가능한 색은 255(RED) x 255(GREEN) x 255(BLUE)으로 대략 16.8백만 가지의 컬러 표현이 가능합니다.
코드
아래의 코드는 analogWrite()함수를 사용하여 RGB LED를 제어하는 코드입니다. 1000ms 간격으로 빨->주->노->초->파->남->보 색을 RGB LED에 표시합니다.
Orange와 Yellow의 주석에 있는 RGB값은 쉽게 구글에서 구할 수 있는 색 좌표 값이고, 실제 코드에 적용한 RGB 값은 육안으로 실제로 Orange, Yellow 컬러가 비슷하게 나오는 값으로 튜닝한 값입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #define RED 11 // RGB LED Module의 RED 핀 #define GREEN 10 // RGB LED Module의 GREEN 핀 #define BLUE 9 // RGB LED Module의 BLUE 핀 void setup(){ pinMode(RED, OUTPUT); pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); } void loop(){ // Red (255,0,0) analogWrite(RED, 255); analogWrite(GREEN, 0); analogWrite(BLUE, 0); delay(1000); // Orange (255,127,0) analogWrite(RED, 255); analogWrite(GREEN, 20); analogWrite(BLUE, 0); delay(1000); // Yellow (255,255,0) analogWrite(RED, 255); analogWrite(GREEN, 80); analogWrite(BLUE, 0); delay(1000); // Green (0,255,0) analogWrite(RED, 0); analogWrite(GREEN, 255); analogWrite(BLUE, 0); delay(1000); // Blue (0,0,255) analogWrite(RED, 0); analogWrite(GREEN, 0); analogWrite(BLUE, 255); delay(1000); // Indigo (0,5,70) analogWrite(RED, 0); analogWrite(GREEN, 5); analogWrite(BLUE, 70); delay(1000); // Purple (100,0,255) analogWrite(RED, 100); analogWrite(GREEN, 0); analogWrite(BLUE, 255); delay(1000); } | cs |
실행 결과
아래 영상은 위 코드의 실행 결과입니다. 구형 휴대폰으로 촬영하여 실제로 보는 것보다 색감이 잘 잡히지 않음을 고려해주세요.
마무리
RGB LED를 사용하는 기초적인 방법으로 LED를 ON/OFF하는 방식과 PWM을 사용하는 방식의 코드를 소개
하였습니다. 아두이노 아날로그 출력 PWM 사용에 대한 기초적인 내용은 하단의 관련 포스트를 참고해주세요.끝까지 읽어 주셔서 감사합니다.😄
'Embedded > Arduino' 카테고리의 다른 글
아두이노 코딩 : HC-06을 사용하여 스마트폰으로 RGB LED 제어 (Color LED Controller 앱 사용) (0) | 2020.10.20 |
---|---|
아두이노 강좌 #46 RGB LED 컬러 인덱스를 사용하여 시리얼 통신으로 제어하기 (0) | 2020.10.18 |
아두이노 코딩 : 스마트폰 블루투스로 HC-06 연결하여 아두이노 LED 제어 (0) | 2020.10.16 |
아두이노 강좌 #44 HC-06으로 스마트폰과 아두이노 연동하기 (0) | 2020.10.15 |
아두이노 강좌 #43 HC-06 모듈 소개, 주요 기능 및 AT Command 주고 받기 (0) | 2020.10.13 |