해당 게시물에서는 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
'Arduino' 카테고리의 다른 글
[PlatformIO] 아두이노 인터럽트 사용하기 (0) | 2022.05.20 |
---|---|
[PlatformIO] 아두이노 가변저항으로 LED 밝기 조절하기 (0) | 2022.05.19 |
[PlatformIO] 아두이노 가변저항 사용해보기 analogRead() (0) | 2022.05.16 |
[PlatformIO] 아두이노 시리얼 입력받기 Serial.available(), serialEvent() (0) | 2022.05.15 |
[PlatformIO] 아두이노 Serial print()와 write() (0) | 2022.05.11 |