본문 바로가기
Arduino/Arduinio기초 실습

2장. 3색 LED 실습

by sinki 2022. 3. 27.

실습은 개인 학습을 위해 "주) 엘케이 임베디드" 사이트에서 구매한 아두이노 코딩 배우기 고급 키트를 이용한 학습입니다. 동봉된 책을 기반으로 학습하면서 개인적인 궁금증과 추가 필요한 부분을 정리한 블로그임을 미리 알려드립니다. 원본 책에서는 3색 LED 모듈을 이용 실습을 하지만 구매한 키트 내부에는 3색 LED만 있고 모듈이 없어 이번 실습은 3색 LED를  사용하는 것으로 변경 실습하였습니다.  

 

<준비물>

아두이노 우노 R3 : 1개

USB 케이블  : 1개 

점퍼 케이블(숫숫) : 4개가량

브레드 보드 : 1개, 830홀 사용

3색 LED : 1개

저항 : 220Ω 3개 (3색 LED 모듈 사용 시 미필요)

 2초 간격으로 무지개색을 순차적으로 점등하는 것이 이번 과제입니다. 회로나 사용하는 부품이 이전 실습보다 간단한 것 같습니다. 이번에도 Tinkercad로 회로 구성을 해보았습니다. Tinkercad 에서는 3색 LED가 common cathode 형입니다.

팅커 캐드 링크입니다 : https://www.tinkercad.com/things/3OiL5s6xAUt

 

<참고 지식>

⦿ 3색 LED 

   빨강, 초록, 파랑 빛의 3요소 LED를 하나로 만들어 우노에서 출력하는 PWM(Pulse Width Modulation) 제어 신로를 각각의 LED에 입력하여 다양한 색상을 출력할 수 있는 LED입니다.(256 * 256 * 256 가지의 색 표현 가능) 3색 LED 모듈의 경우는 과전류 방지 저항을 포함하고 있어 사용상 편리한 편이 장점입니다. 위 실습에서 모듈로 대체 가능하며 이때에는 220Ω 저항 미사용이 가능합니다. 

  3색 LED는 빨강(RED), 초록(GREEN), 파랑(Blue)의 영문 첫 글자를 따서 "RGB LED"라고도 합니다.

  3색 LED는 Common Cathode와 Common Anode 타입으로 2가지 종류가 있습니다. 이거 구분이 쉽지 않기 때문에 구매 시 확인하거나 멀티 테스터기를 통해서 타입을 알 수 있기도 합니다.  

멀티 테스터기를 도통 테스트 모드에 두고 common 단자에 적색 혹은 흑색 리드선을 다른 단자에 나머지 리드선을 연결 빛이 나는 조합을 만듭니다. 적색(+) 리드선이 common 일 때 빛이 난다면 common anode 형이고 흑색(-) 리드선이 common 일때 빛이 난다면 Common Cathode(-) 형이 됩니다. 이 방법으로  RGB 각각의  LED 단자 및 동작 여부도 테스터 가능합니다

⦿ PWM(Pulse Width Modulation) 펄스폭 변조

   디지털 전압만 출력이 가능한 아두이노에서 아날로그 신호를 출력하고 싶을 때 사용합니다. 디지털 출력은 하이 혹은 로우 신호의 형태로만 출력이 가능하기 때문에 0V ~ 5V사이의 전압을 출력하고 싶다면 PWM 신호 출력을 사용하여 평균 전압으로 원하는 전압 출력이 가능합니다.

위에 표를 보면 duty cycle(한 주기 당 하이와 로우의 비율을 말하는 것입니다.) 즉 100% duty cycle면 5V, 75% duty cycle면 3.

75V, 50% duty cycle면 2.5V, 25% duty cycle면 1.25V, 0% duty cycle면 0V입니다. 이때 중요한 내용은 실제 출력은 5V입니다. 하지만 duty cycle 만큼 0과 5V를 반복하면서 시간당 평균을 아날로그 출력처럼 사용하는 방법입니다.  PWM 출력을 이용 서보모터 제어, 모터의 속도 제어, LED 밝기 제어 등에 이용할 수 있습니다.

 

<실습 코드>

// 3색 LED 출력 변수 지정 및 핀 번호 기억

int LED_R = 3 ; // 적색 LED 
int LED_G = 5 ; // 녹색 LED
int LED_B = 6 ; // 청색 LED

void setup()
{

// 핀 모드 출력으로 지정
  pinMode(LED_R, OUTPUT);
  pinMode(LED_G, OUTPUT); 
  pinMode(LED_B, OUTPUT);  
}

//PWM을 이용 3색 LED를 on 하는 함수를 선언 
void rgb_on(int R, int G, int B, int ontime){ 
  analogWrite(LED_R, R);
  analogWrite(LED_G, G); 
  analogWrite(LED_B, B);
  delay(ontime);
  rgb_off();
}

//3색 LED를 off 하는 함수를 선언
void rgb_off(){
  analogWrite(LED_R, 0);
  analogWrite(LED_G, 0); 
  analogWrite(LED_B, 0);
}
void loop(){
  rgb_on(255, 0, 0, 2000);
  rgb_on(255, 50, 0, 2000);
  rgb_on(255, 255, 0, 2000);
  rgb_on(0, 255, 0, 2000);
  rgb_on(0, 0, 255, 2000);
  rgb_on(0, 5, 255, 2000);
  rgb_on(100, 0, 255, 2000);

 

/*common anode type 사용에 따른 rgb 값 반대로 사용
 *common cathode type 사용시 rgb 값 바로 사용
 *아래 값은 common anode type 일때 RGB 값
 * rgb_on(0, 255, 255, 2000); 
  *rgb_on(0, 205, 255, 2000);
  *rgb_on(0, 0, 255, 2000);
  *rgb_on(255, 0, 255, 2000);
  *rgb_on(255, 255, 0, 2000);
  *rgb_on(255, 250, 0, 2000);
  *rgb_on(155, 255, 0, 2000);
*/

 

<함수 설명>

⦿ delay(value)

    아두이노의 동작을 일시적으로 정지시키는 기능을 가진 함수 value에 상수 1을 넣으면 0.001초 지연이고 1000이면 1초 동안 동작을 중지합니다.

⦿ analogWrite(pin no, 출력 값(0~255)) 

    핀번호에 PWM값을 출력함. 기본적으로 아두이노에서 PWM으로 표현할 수 있는 값은 범위는 8bit(0~255)이고  출력 값의 범위는 0~255까지 입니다.

 

 

'Arduino > Arduinio기초 실습' 카테고리의 다른 글

6장. 7세그먼트(7 Segment. FND), 스위치 실습  (0) 2022.04.04
5장. 가변저항 10K 실습  (0) 2022.04.02
4장. 시리얼 통신 실습  (0) 2022.04.02
3장. 74HC595, LED 실습  (0) 2022.04.01
1장. LED 스위치 실습  (1) 2022.03.26