IoT/아두이노

[아두이노] RGB LED, 가변저항, 스위치

발달중인 망고 2022. 6. 7. 20:44

오늘은 가변저항으로 밝기를 조절하며 스위치로 색깔을 변경하는 기본적인 아두이노를 소개하겠습니다.

회로 소개

RGB LED 회로도

 

가변저항의 회로도


코드

#define Red 9
#define Green 10
#define Blue 11
#define PUSH_PIN 5
#define POTEN_PIN A0
/*
   가변 저항으로 led를 조절하며 스위치로
   색깔을 바꾸는 문제
*/
void setup()
{
  Serial.begin(9600);
  pinMode(PUSH_PIN, INPUT_PULLUP);
  pinMode(Red, OUTPUT);
  pinMode(Green, OUTPUT);
  pinMode(Blue, OUTPUT);

}
int val;
int colorPoint = 0;
void loop()
{
  val = analogRead(POTEN_PIN);
  val = map(val, 0, 1023, 0, 255);
  int value = digitalRead(PUSH_PIN);
  if (value == LOW) {
    colorPoint++;
    Serial.println(colorPoint);
    delay(1000);
  }
  if (colorPoint % 3 == 0) {
    setColor(val, 0, 0);
  }
  else if (colorPoint % 3 == 1) {
    setColor(0, val, 0);
  }
  else if (colorPoint % 3 == 2) {
    setColor(0, 0, val);
  }
}

void setColor(int red, int green, int blue)
{
  analogWrite(Red, red);
  analogWrite(Green, green);
  analogWrite(Blue, blue);
}

 

map 함수를 통해 0~1023의 범위를 0~255로 변경합니다. analongRead();에 /4를 하여도 무방합니다.