아두이노 PWM사용, analogWrite ()

오늘은 PWM을 사용하기 위한 아두이노의 analogWrite ()에 대해 알아보겠습니다.

 

analogWrite () 정의

 

아날로그 값 ( PWM wave )을 핀에 씁니다 . 다양한 밝기로 LED를 켜거나 다양한 속도로 모터를 구동하는 데 사용할 수 있습니다. 호출되면 analogWrite(), 핀은 다음에 호출 할 때까지, 특정 듀티 사이클의 일정한 직사각형 파 생성 analogWrite()(또는 호출 digitalRead()또는 digitalWrite()동일한 핀 참조).

 

 

보통 아두이노하면 떠오르는 우노 나노 미니 시리즈의 경우 3,5,6,9,10,11번 핀이 pwm 핀입니다.

* 위에서 언급 한 핀의 PWM 기능 외에도 MKR 및 Zero 보드는 ( ) 핀 analogWrite()에서 사용할 때 진정한 아날로그 출력을 갖습니다 . ** 위에서 언급 한 핀의 PWM 기능 외에도 Due는 핀을 사용할 때 진정한 아날로그 출력 을 제공 합니다.DAC0A0analogWrite()DAC0DAC1

 

pinMode()호출하기 전에 핀을 출력으로 설정 하기 위해 호출 할 필요는 없습니다 analogWrite().
 analogWrite기능은 아날로그 핀 또는 analogRead기능 과 관련이 없습니다 .

 

사용 예

 

analogWrite(pin, value)

 

매개변수

 

pin: 쓸 Arduino 핀. 허용되는 데이터 유형 : int.
value: 듀티 사이클 : 0 (항상 꺼짐) ~ 255 (항상 켜짐) 허용되는 데이터 유형 : int.

 

참고사항

 

핀 5 및 6에서 생성 된 PWM 출력은 예상보다 높은 듀티 사이클을 갖습니다. 이는 PWM 출력을 생성하는 데 사용 된 것과 동일한 내부 타이머를 공유하는 millis()및 delay()기능 과의 상호 작용 때문입니다 . 이것은 주로 낮은 듀티 사이클 설정 (예 : 0-10)에서 알 수 있으며 핀 5와 6의 출력을 완전히 끄지 않는 값은 0입니다. 

 

예제 코드( 아두이노 공식 홈페이지 제공)

 

1

2

3

4

5

6

7

8

9

10

11

12

int ledPin = 9;      // LED connected to digital pin 9

int analogPin = 3;   // potentiometer connected to analog pin 3

int val = 0;         // variable to store the read value

 

void setup() {

  pinMode(ledPin, OUTPUT);  // sets the pin as output

}

 

void loop() {

  val = analogRead(analogPin);  // read the input pin

  analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255

}

 

 

 

위의 코드는 analogpin의 값을 읽어 그 값(/4)만큼 PWM출력을 하는 예제입니다. 저는 가변저항이 없기 때문에 val값을 증감하여 밝기 조절을 하는 코드를 작성해 보았습니다. 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

 

int LED_Pin = 9;

int val = 0;

bool Flag = true;

void setup() {

  pinMode(LED_Pin,OUTPUT);

}

 

void loop() {

  if(Flag == true){

    val++;

    if(val >= 255){Flag = false;}

  }

  else{

    val--;

    if(val <= 0){Flag = true;}

    }

  analogWrite(LED_Pin,val);

  delay(10);

 

}

 

 

위의 코드는 val값이 0 ~ 255까지 증가후 255 ~ 0으로 감소하는 LED가 서서히 점멸하는 예제입니다.

 

 

이상으로 PWM을 만드는 함수인 analogWrite에 대해 알아보았습니다. 감사합니다.

댓글()