지구본

[아두이노] 1. LED의 색을 변경해보자 본문

Arduino

[아두이노] 1. LED의 색을 변경해보자

디스피어 2023. 4. 17. 13:26

지구팀에서 만끽 스마트 바스에서 사용하게 될 LED의 기본 제어 코드를 작성해보았습니다.

초안이기 때문에 코드와 회로도는 달라질 수 있습니다.

 

틴커캐드 사이트를 이용하여 진행을 하였습니다.

코드는 Arduino IDE를 이용하여 작성하였습니다.

틴커캐드에서 실행하기 위해서는 코드를 틴커캐드에도 작성해주어야 합니다.

 

기본 구성


LED의 켜기/끄기 뿐만아니라 색변경을 진행하기 위해 LED RGB 센서를 활용하였습니다.

또한 각각의 저항과 버튼을 이용해 색변경을 하는 코드를 작성하였습니다.

LED RGB

 

필요 부품

  • LED RGB 1개
  • 푸쉬 버튼 1개
  • 220옴 저항 3개
  • 10k옴 저항 1개

 

회로 구성


 

LED RGB 회로도

 

  • Red 핀을 1번 핀에 연결
  • Green 핀을 2번 핀에 연결
  • Blue 핀을 3번 핀에 연결
  • Button을 4번 핀에 연결

 

코드


#define redPin    1           // 빨간 LED 1번에 연결
#define greenPin    2       // 초록 LED 2번에 연결
#define bluePin   3         // 파란 LED 3번에 연결
#define BUTTON    4
 
int flag      = 0;
int colorSelection  = 0;
int redValue    = 0;
int greenValue    = 0;
int blueValue     = 0;

void setup() {
   pinMode(redPin, OUTPUT);   // 1번 핀을 출력으로 설정
   pinMode(greenPin, OUTPUT); // 2번 핀을 출력으로 설정  
   pinMode(bluePin, OUTPUT);  // 3번 핀을 출력으로 설정
   pinMode(BUTTON, INPUT);    //4번 핀을 입력으로 설정
   Serial.begin(9600);         // 시리얼 모니터에 출력을 위한 초기화
}
 
void loop() {
 
  int inputValue = digitalRead(BUTTON);
 
  led_color(inputValue);
}

void led_on(int red, int green, int blue) //RGB 함수
{
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
}

void led_color(int input) // 색변경 함수
{
  if(input == HIGH){  //버튼이 눌렀을 때 FLAG의 값을 1로 저장
    if(flag == 0)
      flag =1;
  }
  else{
    if(flag == 1){  //버튼이 눌렸을 때 실행
      colorSelection++;
      Serial.println("Color is changed");
      if(colorSelection > 2)//3가지 색을 표현하기 위한 IF문
        colorSelection = 0;
      flag = 0;
    }
  }  
 
  if(colorSelection == 0)
    led_on(255, 0, 0);
  else if (colorSelection == 1)
    led_on(0, 255, 0);
  else
    led_on(0, 0, 255);
}