부품설명

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

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 타입입니다.