프로그래밍/Arduino

6장. 3색 LED와 버튼

길냥이 2024. 6. 7. 15:15
728x90

※목표

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초라서 자연적으로 바뀌는것처럼 보일 것입니다.

 

728x90