본문 바로가기

아두이노/아두이노 기초

틴커캐드 아두이노 3색 RGB LED 제어하기

이전 블로그에서 브레드보드와  LED 페이드 인/페이드 아웃 (PWM) 제어하는 방법을 알아보았습니다.

https://iot-lab.tistory.com/175

 

틴커캐드 아두이노 LED 페이드 인/페이드 아웃 제어하기(PWM 제어, 오실로스코프, 멀티미터)

이전 블로그에서 브레드보드와 3가지 색의 LED를 제어하는 방법을 알아보았습니다. https://iot-lab.tistory.com/83 틴커캐드 아두이노 브레드보드와 LED 3개 제어하기 오늘은 틴커캐드 아두이노 시뮬레이

iot-lab.tistory.com

사전 지식

3색 LED (RGB LED)

한쪽 방향으로 전류가 흐르도록 하는 반도체 소자를 다이오드라고 합니다. 

그중 전기 에너지를 빛으로 변환하는 것을 발광 다이오드(LED)라고 합니다.  LED(Light Emitting Diode)

3색 LED는 빨강, 초록, 파랑의 3가지 색을 하나의 LED로 합친 것입니다. 

RGB LED라고도 합니다. 

4개의 단자가 있으며 다리가 제일 긴 핀이 GND이며 나머지는 각각의 색을 제어할 때 사용하는 핀입니다. 

 

각각의 색을 제어하는 핀의 전압의 차이를 이용해 여러 가지 색을 표현할 수 있습니다. 

색상 코드

색상표는 코딩할 때 필요하니 일단 참고해주세요.

http://www.n2n.pe.kr/lev-1/color.htm

 

256 color 색상표

00CC99 R - 255 G - 204 B - 153

www.n2n.pe.kr

구성요소 목록

새 회로 작성

좌측 사이드바에서 Circuits 를 클릭하시고 새 회로 작성 버튼을 클릭합니다. 

Curcuits -> 새 회로 작성

아두이노 준비

우측에 부품 리스트에서 아두이노를 찾아서 위치시킵니다. 

아두이노 보드를 클릭 혹은 드래그해서 위치시키기

브레드보드 준비

오른쪽 부품 리스트에서 브레드보드를 찾아 위치시킵니다. 

브레드보드를 클릭 혹은 드래그해서 위치시키기

전원선 배선하기

전원선과 그라운드선을 배선합니다. 

핀 부분과 브레드보드에 마우스 커서를 이동시키면 연결부위가 강조되며 클릭으로 배선을 할 수 있습니다. 

1. 전원선인 아두이노 5V핀과 브레드보드의 [+]부분과 연결
2. 전원선은 오른쪽 윗부분 와이어에서 색상을 빨간색으로 변경
3. 그라운드(GND)의 아두이노 핀과 [-]부분과 연결
4. 그라운드 선은 오른쪽 윗부분 와이어의 색상을 검정색으로 변경
(선택사항) 배선 부분을 더블클릭하여 반듯하게 정리(*선택사항으로 취향에 따라 정리하시면 됩니다)

LED 배치 및 저항 연결

위 작업과 같이 3색 LED를 제어하기 위하여 저항과 함께 배선합니다. 

1. 오른쪽 부품 리스트에서 "LED RGB"를 검색하여 배치
2. 브레드보드는 세로로 연결되어 있으므로 세로로 저항을 배치
3. 저항값은 오른쪽 위의 레지스터에서 저항값을 1k 옴으로 입력 (저항은 100~1K 옴 값으로 설정하면 문제없음)
4. 데이터선을 각각 아두이노의 11 번핀(LED 빨간색), 10 번핀(LED 초록색), 9 번핀(파란색)을 아래 그림과 같이 연결 (전선은 각 색에 맞춰 연결하면 구별하기 좋음)

소스코드

소스코드를 아래와 같이 입력합니다. 

void setup()
{
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
}

void loop()
{
  // 빨간색
  analogWrite(11, 255);
  analogWrite(10, 0);
  analogWrite(9, 0);
  delay(1000); // Wait for 1000 millisecond(s)
  // 초록색
  analogWrite(11, 0);
  analogWrite(10, 255);
  analogWrite(9, 0);
  delay(1000); // Wait for 1000 millisecond(s)
  // 파란색 
  analogWrite(11, 0);
  analogWrite(10, 0);
  analogWrite(9, 255);
  delay(1000); // Wait for 1000 millisecond(s)
}

소스코드 설명

빨간색, 초록색, 파란색이 1초씩 점멸합니다. 

  • 11번 핀은 Red값 : 0~ 255
  • 10번 핀은 Green값 : 0 ~ 255
  • 9번 핀은  Blue값 : 0 ~ 255

이렇게 RGB 색상표를 입력하면 어떤색이든 구현 가능합니다.

HTML 등에서 "#99FF33" 처럼 16진수로 표현하기도 합니다. 

이렇게 각 핀의 값을 10진수로 변경해주면 됩니다. 

 

소스코드 응용편

이번에는 RGB 값을 받는 함수를 구현하여 여러 가지 색을 구현해보겠습니다. 

색상표는 아래 링크를 확인해서 여러가지 색을 만들어보시길 추천드립니다. 

http://www.n2n.pe.kr/lev-1/color.htm

 

256 color 색상표

00CC99 R - 255 G - 204 B - 153

www.n2n.pe.kr

void setup()
{
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
}

void loop()
{
  // Cyan
  setRGB(0, 255, 255);
  delay(1000); // Wait for 1000 millisecond(s)
  // Purple
  setRGB(128, 0, 128);
  delay(1000); // Wait for 1000 millisecond(s)
  // Yellow
  setRGB(128, 0, 128);
  delay(1000); // Wait for 1000 millisecond(s)
}

void setRGB(int red, int green, int blue)
{
  analogWrite(11, red);
  analogWrite(10, green);
  analogWrite(9, blue);
}

소스코드 설명

Cyan -> Purple -> Yellow 순으로 LED 색이 변합니다.