카테고리 없음

AIOT - 아두이노(4) - 가변저항과 LED

저선장 2023. 9. 27. 11:10

이번엔 가변저항을 통해 LED의 밝기를 조절하는 프로그램을 만들어보겠습니다.

// 가변 저항값에 따른 LED 밝기 조절하기

#define LED_RED 5
#define LED_GREEN 6
#define LED_BLUE 11

void setup() {
  Serial.begin(9600);
  pinMode(LED_RED, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
}

void loop() {
  int vrValue = analogRead(A0); // 가변저항 값 받아오기
  int rgb = ((double)vrValue / 1023.0) * 255; //가변저항 값을 rgb 값인 0~255로 변환
  Serial.println(rgb);
  
  // rgb의 밝기를 가변저항으로 조절
  int redValue = rgb; 
  int greenValue = rgb;
  int blueValue = rgb;

  analogWrite(LED_RED, redValue);
  analogWrite(LED_GREEN, greenValue);
  analogWrite(LED_BLUE, blueValue);
  
}

위 코드를 사용하면 가변저항에 따라 LED의 밝기를 조절 할 수 있습니다.

 

가변저항으로 LED 밝기 조절

가변저항으로 LED 밝기 조절하는 코드는 생각보다 너무 쉬워서 밝기 조절이 아닌 무지개색(빨주노초파남보)가 출력되는 코드를 만들어봤습니다.

// 가변 저항값에 따른 LED 무지개색 출력

#define LED_RED 5
#define LED_GREEN 6
#define LED_BLUE 11

void setup() {
  Serial.begin(9600);
  pinMode(LED_RED, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
}

void loop() {
  int vrValue = analogRead(A0);
  // 무지개색 출력 방법
  // 255/0/0(start)-> 255/255/0 -> 0/255/0 -> 0/255/255 -> 0/0/255 -> 255/0/255
  // 총 5가지 구간이 있으므로 편의상 200 * 5의 1000으로 설정
  int rgb = ((double)vrValue / 1023.0) * 1000;
  Serial.println(rgb);
  
  // 색상 값 초기화
  int redValue = 0;
  int greenValue = 0;
  int blueValue = 0;
  
  // 1구간(빨 -> 노)
  if (rgb < 201){
    redValue = 200;
    greenValue = rgb;
    blueValue = 0;
  }
  // 2구간(노 -> 초)
  else if (rgb < 401){
    redValue = 400 - rgb;
    greenValue = 200;
    blueValue = 0;
  }
  // 3구간(초 -> 파)
  else if (rgb < 601){
    redValue = 0;
    greenValue = 200;
    blueValue = rgb - 400;
  }
  // 4구간(파 -> 남)
  else if (rgb < 801){
    redValue = 0;
    greenValue = 800 - rgb;
    blueValue = 200;
  }
  // 5구간(남 -> 보)
  else{
    redValue = rgb - 800;
    greenValue = 0;
    blueValue = 200;
  }

  analogWrite(LED_RED, redValue);
  analogWrite(LED_GREEN, greenValue);
  analogWrite(LED_BLUE, blueValue);
  
}

무지개색을 출력하는 방법으로 5개의 구간을 설정해 rgb값 변수를 설정해줬습니다.

 

가변저항으로 무지개색 출력하기