부품설명

자주 사용하는 부품들의 사용법에 대하여 알아봅니다.

RGB LED 디지털출력

2014-07-25 04:21:32

개요

 

RGB LED는 한 가지 색을 내는  LED와 달리 총 265가지의 색을 낼 수 있습니다.
RGB는 4개의 핀을 가지고 있습니다. 각 핀은 기본적으로 빨강, 초록, 파랑 색을 출력합니다.
각 핀마다 어떤 값을 할당하는 가에 따라 세가지 색이 조합되어 여러가지 색을 표현할 수 있습니다.
다양한 색을 표현 하고 싶을 때 사용해보세요.




출처 : bpiinc.wordpress.com


출처 : hacknmod.com


출처 : www.robotshop.com
 

 

이번에는 RGB LED를 연결 한 후, 디지털 출력을 이용해 총 7가지 색을 출력해 보겠습니다.
RGB LED에 대한 원리 뿐만이 아니라 디지털 출력에 대한 원리도 배우실 수 있습니다.
앞으로 센서를 연결해서 출력값을 내보낼 때 사용하실 수 있습니다. 


 

 

 

 

 

부품목록

 

본 학습에는 총 5종류의 부품이 필요합니다.



 

NO 부품명 수량
1 아두이노 우노 R3 1
2 5mm RGB LED 1
3 330Ω 저항 3
4 브레드 보드 1
5 점퍼 케이블 4

 

 

부품명 330Ω 저항 Breadboard Arduino UNO Jumper cable 5mm RGB LED
파트 X3 X1 X1 X4 X1

 

 

 

 

하드웨어 making

 

 

브레드보드



  

 

 

 

소프트웨어 coding

 

// RED LED를 디지털 11번 핀에 연결합니다.
const int RED_PIN = 11;
// GREEN LED를 디지털 10번 핀에 연결합니다.
const int GREEN_PIN = 10;
// BLUE LED를 디지털 9번 핀에 연결합니다.
const int BLUE_PIN = 9;

// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
void setup() {
	// 11번 핀을 출력으로 설정 합니다.
	pinMode(RED_PIN, OUTPUT);    
	// 10번 핀을 출력으로 설정 합니다.
	pinMode(GREEN_PIN, OUTPUT); 
	// 9번 핀을 출력으로 설정 합니다.
	pinMode(BLUE_PIN, OUTPUT);   		
}

// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행합니다.
void loop() {
	// RGB LED로 빨간색 불빛을 출력합니다.
	// RED LED를 ON 시킵니다.
	digitalWrite(RED_PIN,HIGH);  
	digitalWrite(GREEN_PIN,LOW);
	digitalWrite(BLUE_PIN,LOW);

	// 2초 대기합니다.
	delay(2000);                   

	// RGB LED로 초록색 불빛을 출력합니다.
	digitalWrite(RED_PIN,LOW);
	// GREEN LED를 ON 시킵니다.
	digitalWrite(GREEN_PIN,HIGH);    
	digitalWrite(BLUE_PIN,LOW);
 
	// 2초 대기합니다.
	delay(2000);

	// RGB LED로 파란색 불빛을 출력합니다.
	digitalWrite(RED_PIN,LOW);
	digitalWrite(GREEN_PIN,LOW);
	//BLUE LED를 ON 시킵니다.
	digitalWrite(BLUE_PIN,HIGH);     

	// 2초 대기합니다.
	delay(2000);

	// RGB LED를 소등합니다.
	// 모든 LED를 OFF 시킵니다.
	digitalWrite(RED_PIN,LOW);      
	digitalWrite(GREEN_PIN,LOW);
	digitalWrite(BLUE_PIN,LOW);		

	// 2초 대기합니다.
	delay(2000);
}

 

소프트웨어 & 하드웨어 설명

 

1. 사전설명
 

RGB_LED는 세 개의 LED를 합쳐놓은 것이라고 생각하면 됩니다.
즉, 각 부분을 다른 디지털 핀에 연결한 후, 스케치로 디지털 핀 별로 다른 값을 출력하도록 해서 
LED의 색깔을 조절 할 수 있습니다. 빨간 색을 원하면 RED LED만 HIGH가 출력되도록 합니다.
 

 

2. 스케치 설명

 

// RED LED를 디지털 11번 핀에 연결합니다.
const int RED_PIN = 11;
// GREEN LED를 디지털 10번 핀에 연결합니다.
const int GREEN_PIN = 10;
// BLUE LED를 디지털 9번 핀에 연결합니다.
const int BLUE_PIN = 9;

각 LED와 연결 된 핀 번호를 변수에 저장합니다. 이제 앞으로 각 핀 번호 대신 변수명을 사용할 것입니다.
const라는 것은 상수라는 뜻으로 변수 앞에 붙일 경우 스케치의 다른 부분에서 값을 함부로 변경할 수 없습니다.
 

 

  // 11번 핀을 출력으로 설정 합니다.
  pinMode(RED_PIN, OUTPUT);    
  // 10번 핀을 출력으로 설정 합니다.
  pinMode(GREEN_PIN, OUTPUT); 
  // 9번 핀을 출력으로 설정 합니다.
  pinMode(BLUE_PIN, OUTPUT);     

핀 세개를 통해 LED에 디지털 값을 전달할 것이므로 각 핀을 출력으로 설정합니다.
 

 

  // RGB LED로 빨간색 불빛을 출력합니다.
  // RED LED를 ON 시킵니다.
  digitalWrite(RED_PIN,HIGH);  
  digitalWrite(GREEN_PIN,LOW);
  digitalWrite(BLUE_PIN,LOW);

각 핀의 디지털 출력값을 결정합니다.
HIGH, LOW를 통해 LED 8종류를(꺼짐 포함) 표현할 수 있습니다.
예를 들어 RED_PIN, GREEN_PIN으로 HIGH  값을 내보 낼 경우 노란색이 나옵니다. 
 

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

RGB LED, 아두이노

jy 2014-08-01 16:52:14

감사합니다

노짱 2015-04-02 23:54:50

코딩 오류 수정할 곳 있습니다.
//꺼짐
digitalWrite(RED_PIN,LOW); //모두 OFF
digitalWrite(GREEN_PIN,LOW);
digitalWrite(BLUE_PIN,LOW);

다음에
delay(2000);
넣어야, 꺼지는 것 보고 다시 빨간색 led가 켜지는 것을 볼 수 있어요.
delay가 없으면 꺼진 뒤, 눈코뜰새도 없이 바로 빨간색 켜라는 문장이 실행됩니다.

노짱 2015-04-02 23:58:11

HIGH, LOW를 통해 총 8가지의 색을 표현할 수 있습니다.
라는 문장에서 LOW,LOW,LOW일 경우, LED가 꺼져있는 상태이므로
색이라고 하기엔 무리가 있는 것 같습니다. 7가지 색이라고 해야 정확한 설명같습니다.

김연지 2015-11-16 21:33:23

혹시 위에서 사용한 rgb led의 종류가 common anode형식인가요 cathode형식인가요?

kocoafab 2019-01-03 14:06:53

노짱
- 소스 코드 오류부분 수정하였습니다. 감사합니다.
- 8가지의 색이라는 말 대신 8 종류(꺼짐 포함)를 표현 할 수 있다고 수정하였습니다.

김연지
- 위에서 사용하고 있는 RGB LED 는 Common cathode 타입입니다.

강한남자 2020-09-23 23:01:33

저기에서 RGB는 단순 High Low만으로 조작할수있는건가요 아니면 좀더 세밀한 RGB값으로 조작이 가능한가요? 예를 들어 RGB값을 세밀하게 조작해서 단순 노란색이 아니라 오렌지 색을 출력해 낸다던가 그런건 불가능한가요? 별도의 RGB LED 장비가 필요할까요.