컴공생 누르지 마세요! 컴공생 울어요.

[아두이노 실습] 3색 RGB LED 제어하기 본문

PROJECT/[임베디드] 아두이노 실습

[아두이노 실습] 3색 RGB LED 제어하기

당도최고치악산멜론 2023. 3. 24. 14:43

틴커캐드에서 아두이노로 3색 RGB LED를 제어하는 실습을 진행하였습니다.

실습 환경

틴커캐드는 온라인에서 아두이노를 시뮬레이션할 수 있는 사이트입니다.

아두이노가 없어도 틴커캐드를 통해 실습을 진행할 수 있습니다.

https://www.tinkercad.com/things/4rHiry1qsms

 

3D design 틴커캐드 | Tinkercad

3D design 틴커캐드 created by 보람초예준 with Tinkercad

www.tinkercad.com

내 디자인 - 새로 만들기 - 회로를 클릭하여 프로젝트를 시작합니다.

오른쪽 탭에 아두이노 우노 R3를 포함하여 다양한 구성요소들이 존재합니다.

이것들을 자유롭게 조합하여 설계할 수 있습니다.

실습 진행

1. 아두이노 보드와 브레드보드 연결

아두이노 보드와 브레드보드를 드래그하여 위치시킵니다.

전원선을 다음과 같이 배선합니다. 마우스 클릭을 통해 배선이 가능합니다.

(1) 전원선인 아두이노 5V핀과 브레드보드의 [+] 부분 연결
(2) 그라운드(GND)의 아두이노 핀과 [-] 부분 연결

2. 3색 RGB LED 배치 및 저항 연결

3색 RGB LED와 저항을 배치 및 연결합니다.

(1) LED RGB를 드래그하여 배치
(2) 브레드보드는 세로로 연결되어 있으므로 세로로 저항을 배치
(3) 저항의 저항값은 1㏀으로 설정
(4) 데이터선을 연결
(4-1) 아두이노의 11번핀 (빨간색), 10번핀 (초록색), 9번핀 (파란색)

3. 소스코드 작성

오른쪽 상단의 '코드' 버튼을 클릭하여 아래와 같이 코드를 작성합니다.

<소스코드 설명>

  • 빨강, 초록, 파랑 불빛을 1초씩 점멸하는 코드
  • analogWrite(핀 번호, 전압) 함수를 통해 특정 핀 번호의 전압을 설정할 수 있음. 
    • ex) analogWrite(10, 0) ➡ 10번 핀의 전압을 0V로 설정
    • ex) analogWrite(10, 128) ➡ 10번 핀의 전압을 약 2.5V로 설정
    • ex) analogWrite(10, 255) ➡ 10번 핀의 전압을 5V로 설정
  • 빨간색은 11번 핀만 전압을 5V로 설정, 나머지는 0V
  • 초록색은 10번 핀만 전압을 5V로 설정, 나머지는 0V
  • 파란색은 9번 핀만 전압을 5V로 설정, 나머지는 0V
  • dealy(1000) 을 통해 1000 ms = 1 s 동안 점멸
// C++ code
//
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 fo 1000 ms
  
  // 초록색
  analogWrite(11, 0);
  analogWrite(10, 255);
  analogWrite(9, 0);
  delay(1000); // Wait fo 1000 ms
  
  // 파란색
  analogWrite(11, 0);
  analogWrite(10, 0);
  analogWrite(9, 255);
  delay(1000); // Wait fo 1000 ms
}

4. 시뮬레이션 시작

우측 상단의 '시뮬레이션 시작' 버튼을 누르면 LED가 빨강, 초록, 파랑 순서로 점멸하는 것을 볼 수 있습니다.

5. 응용 - 특정 RGB 색상으로 구현

RGB 값을 받는 함수, setRGB()를 구현하여 여러 가지 색을 구현할 수 있습니다.

소스코드는 다음과 같습니다.

setRGB() 함수는 red, green, blue에 해당하는 RGB 값을 받아 특정 핀의 전압을 설정하는 함수입니다.

이를 통해 특정 핀의 색을 원하는대로 구현할 수 있습니다.

// C++ code
//
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(255, 255, 0);
  delay(1000); // Wait for 1000 millisecond(s)
}

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

시뮬레이션을 실행하면 LED가 Cyan, Purple, Yellow 순서로 점멸하는 것을 볼 수 있습니다.

Comments