디지털기기를 이해하려면 아날로그와 디지털 개념을 알아야 한다. 디지털로 아날로그 신호를 모사하여 출력하는 기능을 PWM이라고 한다. Arduino나 NodeMCU 등의 마이크로 컨트롤러는 펄스(Pulse, 맥박이나 진동처럼 주기적으로 반복하는 파형 또는 리듬) 폭을 on/off 시간으로 변조하여 아래 그림처럼 아날로그를 모사 출력한다. 이러한 기능을 PWM, Pulse Width Modulation이라 한다.

PWM은 펄스의 폭을 컨트롤 하는 주기 제어방법으로 출력되는 전압 값을 일정한 비율(duty)동안은 High를 유지하고, 나머지는 Low를 출력하여 아래와 같은 사각파의 출력을 만들어 내는데, PWM을 사용하면 0V와 5V 사이의 아날로그 값을 모사할 수도 있다. PWM은 제어 및 통신에서도 많이 사용한다.

analogWrite

아두이노에서는 analogWrite 함수를 통해서 이러한 PWM 출력을 제공하는데, analogWrite 함수의 인자로는 0~255까지의 정수가 들어갈 수 있다. 이 값에 따라 PWM의 크기가 0~100%로 변환하게 된다.

그러면 PWM을 이용해서 LED의 밝기를 조정해보자. 아래 회로도와 코드는 꺼져있는 0에서부터 가장 밝은 255까지 밝기를 조정하는 코드다.

led_gradation.ino

 

int ledPin = 6;      // LED는 6번 핀에 연결

int val = 0;         // 읽은 값 저장할 변수

  

void setup()

{

  pinMode(ledPin, OUTPUT);   // 설정된 핀을 출력하라

}

  

void loop()

{

  analogWrite(ledPin, val);  // 아날로그 값을 0~255 급간으로 출력하라

  delay(5);

    

  val += 1;

  

  if(val >= 256)

    val = 0;

}

 

 

<iframe width="600" height="337" src="https://www.youtube.com/embed/13EkaFK0x-E?rel=0&amp;showinfo=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

 

 

----------------------

  • 내용 중 DIY 따라 하기가 잘 안 되거나 질문이나 아두이노 등 교구에 대한 문의가 있다면 직접crebizias@naver.com 로 질문하시면 답변 드리겠습니다.
  • 강좌를 위한 설문을 하고 있습니다. 설문(https://goo.gl/3S23du)에 참여하시면 기사에 수록하지 못한 자료와 연습문제, 오프라인 강좌정보를 보내 드리도록 하겠습니다.
저작권자 © 디트NEWS24 무단전재 및 재배포 금지

관련기사