๐Ÿ’ป My Work/โœจ Arduino

[์•„๋‘์ด๋…ธ] ์•„๋‚ ๋กœ๊ทธ ์ถœ๋ ฅ(LED ์„œ์„œํžˆ ๋ฐํ˜€์กŒ๋‹ค ๊บผ์ง€๊ธฐ, ์‚ผ์ƒ‰ LED ๊ฐ€๋ณ€์ €ํ•ญ์œผ๋กœ ์ œ์–ด)

Jaeseo Kim 2022. 11. 25. 23:57

์•„๋‚ ๋กœ๊ทธ ์ถœ๋ ฅ


PWM

  • ํŒŒํ˜•์„ ์ด์šฉํ•ด ์กฐ์ ˆ
  • HIGH์ธ ์‹œ๊ฐ„์„ ์ธก์ •
    • Duty cycle
      • 0, 25, 50, 100%

ํ•€

  • ์•ž์— ~ ์žˆ๋Š” ํ•€๋งŒ ์•„๋‚ ๋กœ๊ทธ ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•œ ํ•€

Write, Read

  • Read
    • A0~A5
    • 2^10 ๊นŒ์ง€ ํ‘œํ˜„ ๊ฐ€๋Šฅ
  • Write
    • ์•ž์— ~ ๋œ ํ•€
    • 2^8 ๊นŒ์ง€ ๊ฐ€๋Šฅ
      • => ์•ž์— ~ ๋œ ํ•€๋“ค์€ writeํ•˜๋ฉด ์ตœ๋Œ€ 2^8๊นŒ์ง€ ๋ฐ–์— ๋ชป ํ•˜๋Š” ๊ฒƒ

 

LED ์„œ์„œํžˆ ๋ฐํ˜€์กŒ๋‹ค ๊บผ์ง€๊ธฐ


์‹ค์Šต

void setup()
{
  for(int j=9;j<=11;j++){
      pinMode(j, OUTPUT);
  }
}

void loop()
{
  for(int j=9;j<=11;j++){
    // ๊ฐ€์šด๋ฐ๋Š” ๋จผ์ € ์ผœ์ง€๋„๋ก
    if(j%2==0){
      brightOn(j);
    }
    else{
      brightOff(j);
    }
  }
  delay(3000);
  
  for(int j=9;j<=11;j++){
    if(j%2==0){
      brightOff(j);
    }
    else{
      brightOn(j);
    }
  }
  delay(3000);
}

void brightOn(int pinNum){
  // 0 ~ 2^10 ๊ฐ€๋Šฅ
   for(int i=0;i<256;i++){
     analogWrite(pinNum, i);
   }
}
void brightOff(int pinNum){
   for(int i=254;i>=0;i--){
     analogWrite(pinNum, i);
   }
}

 

 

์‚ผ์ƒ‰ LED ๊ฐ€๋ณ€์ €ํ•ญ์œผ๋กœ ์ œ์–ด


์‹ค์Šต

common Cathode (-)

  • HIGH ๋ฅผ ์ค˜์•ผ ํ•จ

Common Anode (+)

  • LOW๋ฅผ ์ค˜์•ผ ํ•จ

// C++ code
//
const int RED=11;
const int BLUE=10;
const int GREEN=9;

const int RED_BUTTON=A0;
const int BLUE_BUTTON=A1;
const int GREEN_BUTTON=A2;


void setup()
{
  Serial.begin(9600);
  
  pinMode(RED, OUTPUT);
  pinMode(BLUE, OUTPUT);
  pinMode(GREEN, OUTPUT);
}

void loop()
{
  double redBright=change(RED_BUTTON);
  double blueBright=change(BLUE_BUTTON);
  double greenBright=change(GREEN_BUTTON);

  analogWrite(RED, redBright);
  analogWrite(BLUE, blueBright);
  analogWrite(GREEN, greenBright);
  
  Serial.println("RED: "+String(redBright)+" BLUE: "+String(blueBright)+" GREEN: "+String(greenBright));
  
}

double change(int pin){
  return (255.0/1023)*analogRead(pin);
}