6장. 3색 LED와 버튼
※목표
3색 LED의 색을 버튼을 통해 조작할 수 있습니다.
※준비물
아두이노 우노 R3 : 1개
USB 케이블 : 1개
400홀 브레드보드 : 1개
점퍼 케이블(수수) : 12개
220Ω 저항 : 6개
LED RGB : 1개
누름 버튼 : 3개
이번에는 3색 LED를 버튼을 통해서 조작하는 예제를 만들어 보도록 하겠습니다.
※다음과 같이 만들어주시면 됩니다.
그리고 아두이노 보드에 다음과 같은 코드를 입력해주시면 됩니다.
int RED=11;
int GREEN=10;
int BLUE=9;
int R_BUTTEN=7;
int G_BUTTEN=6;
int B_BUTTEN=5;
int R=0, G=0, B=0;
void setup()
{
pinMode(R_BUTTEN, INPUT);
pinMode(G_BUTTEN, INPUT);
pinMode(B_BUTTEN, INPUT);
}
void loop()
{
if (digitalRead(R_BUTTEN) == HIGH)
{
++R;
if(R>255)
{
R=0;
}
}
if (digitalRead(G_BUTTEN) == HIGH)
{
++G;
if(G>255)
{
G=0;
}
}
if (digitalRead(B_BUTTEN) == HIGH)
{
++B;
if(B>255)
{
B=0;
}
}
analogWrite(RED, R);
analogWrite(GREEN, G);
analogWrite(BLUE, B);
delay(10);
}
좋아요. 하나하나 뜯어보도록 하죠.
int RED=11;
int GREEN=10;
int BLUE=9;
int R_BUTTEN=7;
int G_BUTTEN=6;
int B_BUTTEN=5;
int R=0, G=0, B=0;
에서 RED, GREEN, BLUE는 3색 LED에 값을 출력하는 역할을 해줄 겁니다.
R_BUTTEN, G_BUTTEN, B_BUTTEN는 버튼에서 입력값을 받아올 거고요.
R, G, B는 그 중간에서 값을 연결해주는 역할을 하게 될 겁니다.
pinMode(R_BUTTEN, INPUT);
pinMode(G_BUTTEN, INPUT);
pinMode(B_BUTTEN, INPUT);
저 변수에 해당하는 7,6,5핀을 입력으로 설정합니다. 그리고 입력값을 가져와야죠, 폴업 폴다운 저항을 적용시킨 버튼을 배치하고..
if (digitalRead(R_BUTTEN) == HIGH)
{
++R;
if(R>255)
{
R=0;
}
}
아래 부분을 보면 이거 3개가 뭉쳐 있습니다.
if문을 배웠다면 알겠지만, R_BUTTEN에 해당하는 7번 핀이 연결되었을 경우 ++R을 하도록 합니다.여기서 ++R은 R == R+1 이랑 같은 의미로써, R 변수에 1만큼 값을 더합니다.
그리고 만약 R이 255를 초과한다면 0으로 바꿉니다. 3색 LED가 받을 수 있는 값은 255까지니까요.
analogWrite(RED, R);
analogWrite(GREEN, G);
analogWrite(BLUE, B);
delay(10);
마지막으로 이 부분입니다. RED, GREEN, BLUE에 해당하는 11,10,9번 아날로그 핀에 위에서 연산한 R, G, B값을 내보냅니다.
빠르게 바뀌어야 좋으니 딜레이는 짧게 설정하는게 좋겠죠.
코드 제작 및 업로드가 성공했다면 버튼을 누르고 있으면 3색 LED가 0.01초 주기로 색이 바뀌는 것을 확인하실 수 있습니다.
사실 0.01초라서 자연적으로 바뀌는것처럼 보일 것입니다.