아두이노 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에 대해 알아보았습니다. 감사합니다.
'MCU 공부 > 아두이노 레퍼런스 Arduino Reference' 카테고리의 다른 글
아두이노 마이크로 초 딜레이 함수, delayMicroseconds () (0) | 2020.05.19 |
---|---|
아두이노 딜레이 함수, delay () (0) | 2020.05.18 |
아두이노 analogReference (), AREF 핀 사용법 (0) | 2020.05.15 |
아두이노의 ADC로 아날로그 값 읽기,analogRead () (0) | 2020.05.14 |
아두이노 입출력 선택, pinMode () 사용법 (0) | 2020.05.13 |