Arduino / / 2022. 5. 17. 20:58

[PlatformIO] 아두이노 PWM 사용하기 analogWrite()

728x90

해당 게시물에서는 VS Code PlatformIO를 사용합니다. 참고바랍니다.

안녕하세요 데브구일입니다!

 

이번에는 PWM에 대해 알아보도록 하겠습니다.

PWM은 Pulse Width Modulation의 약자로 펄스 폭 변조를 말합니다.

 

디지털 신호의 펄스를 변조!

즉 펄스의 비율을 변조하여 아날로그 값과 비슷하게 출력하는 기능입니다!

아래 그림을 한번 확인해주세요! (이 그림은 제가 PPT로 그렸습니다!!)

 

 

PWM은 위 그림과 같이 디지털 신호의 폭을 변조하는데

여기에서 펄스 폭의 비율을 Duty Cycle이라 합니다!

 

Duty Cycle을 퍼센트로 표현 하였는데요.

이 비율이 어느 정도에 되는지에 따라 5V의 퍼센트로 출력이 되게됩니다!

 

아두이노에서는 analogWrite()를 사용하게되는데요.

analogWrite(출력핀, 출력 PWM값) 의 형태를 가지고 있습니다.

이때 PWM 값은 0~255의 범위로 출력을 할 수 있는데요.

255를 입력하게 되면 100% 최대로 출력하게 됩니다!

 

코드를 참고하도록 하겠습니다!

 

#include <Arduino.h> // PlatformIO를 사용하시는게 아니라면 이 라인은 지워주세요!

#define LED_PIN 6 // LED핀 설정 (PWM핀[~] 사용)

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  for (int i = 0; i < 256; i++) { // 점점 밝아짐
    analogWrite(LED_PIN, i);
    delay(10);
  }
  for (int i = 255; i > 0; i--) { // 점점 어두워짐
    analogWrite(LED_PIN, i);
    delay(10);
  }
  
}

 

반응형

 

위 코드를 보시게되면, LED_PIN을 6번 핀으로 설정하였는데요.

아두이노를 잘 확인해 보시면 아래와 같이 물결(~) 표시가 되어 있는 핀이 있는데요!

이 핀이 PWM을 사용할 수 있는 핀입니다! 다른 핀으로는 사용할 수 없습니다!

 

 

그리고 loop()에서는 반복문을 통해서 0~255의 값이 쭈욱 상승했다가 (밝아짐)

다시 쭈욱 내려오는 (어두워짐) 형태로 코드를 구현하였습니다.

 

코드를 업로드 하시면 아래와 같이 LED가 점점 밝아지고 어두워지는 것을 확인하실 수 있습니다!

 

 

이번 포스팅은 여기서 마치고,

다음 포스팅에서 이전에 배웠던 analogRead()를 같이 사용하여,

LED 밝기를 가변저항으로 제어해보도록 하겠습니다 :D

 

감사합니다 :D

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유