컴공생 누르지 마세요! 컴공생 울어요.
[아두이노 실습] 3색 RGB LED 제어하기 본문
틴커캐드에서 아두이노로 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 순서로 점멸하는 것을 볼 수 있습니다.
'PROJECT > [임베디드] 아두이노 실습' 카테고리의 다른 글
[아두이노 실습] 초음파 센서와 PIR 센서를 이용한 자동화 경보 시스템 (0) | 2023.03.24 |
---|---|
[아두이노 실습] 초음파 센서로 거리를 측정하여 LCD에 출력하기 (0) | 2023.03.24 |