- PWM (Pulse Width Modulated) square wave
- Arduino uno, PWM library download
- PWM 제어 사용 코드
- led +, - 구분
PWM (Pulse Width Modulated) square wave
2020/09/24 - [정리, 공부해요/전기, 전자, 통신] - PWM (Pulse Width Modulated) square wave, PWM파 with 아두이노
PWM에 관한 설명은 다른 포스팅에서 해두었습니다.
필요하시면 참고하시면 되겠습니다 :)
Arduino uno, PWM library download
code.google.com/archive/p/arduino-pwm-frequency-library/downloads
우선, 라이브러리는 위의 사이트에서 제공된 것이고 아래에서도 다운 받으실 수 있습니다.
압축을 푸시면 3가지 폴더가 들어있습니다.
아두이노 스케치에서 라이브리러 사용을 위해
다운로드 한 파일 내의 PWM 폴더를
문서 > Arduino > libraries 폴더 속에 압축을 풉니다.
그리고 예제 폴더들은 PWM 폴더 속에 "examples" 폴더를 만들고 그 속에 압축을 풉니다.
(기존에 다운 받았던 모든 library 파일들이 이런 형식으로 다운로드 되어 있기에 똑같은 방식으로 저장했습니다.)
그러면 아두이노 스케치 내에서 위의 예제들을 불러 올 수 있고,
라이브러리 내용을 불러와
PWM 파를 쉽게 사용할 수 있습니다.
PWM 제어 사용 코드
#include <PWM.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
//use pin 11 on the Mega instead, otherwise there is a frequency cap at 31 Hz
int led = 9; // the pin that the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
int32_t frequency = 35; //frequency (in Hz)
void setup()
{
//initialize all timers except for 0, to save time keeping functions
InitTimersSafe();
//sets the frequency for the specified pin
bool success = SetPinFrequencySafe(led, frequency);
#ifndef ESP8266
while (!Serial); // will pause Zero, Leonardo, etc until serial console opens
#endif
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
//if the pin frequency was set successfully, turn pin 13 on
if(success) {
lcd.print("succeed freq") ;
}
}
void loop()
{
//use this functions instead of analogWrite on 'initialized' pins
pwmWrite(led, brightness);
brightness = brightness + fadeAmount;
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
delay(30);
}
9번 핀의 led를 pwm 시그널을 사용해 digital pin 임에도 밝기 조절을 하는 코드 입니다.
PWM 코드/라이브러리 사용에서 필수적으로 들어가는 것으로 보여지는 것은,
진동 주파수 잡는 것
>> bool success = SetPinFrequencySafe(led, frequency);
PWM 파형 사용 하는 것
>> pwmWrite(led, brightness);
정도로 보입니다.
PWM 파워: 0 ~ 255
InitTimers() | 모든 타이머 초기화, 타이머 주파수를 변경하거나 듀티를 세팅하기 전에 사용 |
InitTimersSafe() | 기능 유지, 시간 보존, 타이머가 0이 되지 않는 것들을 제외하고 시간 초기화 |
pwmWrite(uint8_t pin, uint8_t val) | 초기화 후 사용 가능, analogWrite과 동일 |
SetPinFrequency(int8_t pin, int32_t frequency) | Hz 단위로 핀의 주파수를 세팅하고 그 성공 여부를 불 값으로 준다 |
SetPinFrequencySafe(int8_t pin, int32_t frequency) | 타이머가 0이 되지 않는 것을 제외하고 위의 내용과 동일 |
led +, - 구분
혹시나 해서 올려둡니다 :)
마무리
PWM 활용한 펜과 Peltier 구동
2020/10/10 - [정리, 공부해요/아두이노] - 아두이노 우노 펜 PWM 제어, 속도 제어 - heat sink, fan
2020/10/10 - [정리, 공부해요/아두이노] - Peltier(펠티어, 열전소자) 아두이노로 제어 - PID, PWM, 외부전원
'공부 > 아두이노 & 회로구성' 카테고리의 다른 글
Arduino uno, PID control, 아두이노 우노 PID 제어 라이브러리 활용 (0) | 2020.10.18 |
---|---|
아두이노 우노 펜 PWM 제어, 속도 제어 - heat sink, fan (4) | 2020.10.16 |
(저장용) 사용중인 써미스터 B값, 온도별 필요 기준저항값 (0) | 2020.10.12 |
Thermistor(써미스터) 아두이노 우노로 읽고, PLX DAQ 써서 엑셀에 실시간 기록/저장 (0) | 2020.10.12 |
Thermistor(써미스터) 여러개 아두이노 우노에 연결하여 LCD에 띠우기 (0) | 2020.10.10 |
댓글