모터를 이 보드에 연결하고 ExpansionDCMotor() 함수를 이용해 특정 해당 포트에 대한 인스턴스를 생성합니다.
ExpansionDCMotor dcmotor(sid, port);
setPeriod() 함수를 이용해 PWM의 주기를 설정합니다.
dcmotor.setPeriod(period);
setWidth() 함수를 이용해 모터제어를 위한 유효시간을 설정합니다.
dcmotor.setWidth(width);
유효시간은 PWM의 HIGH신호가 출력되는 시간입니다. 이 시간과 PWM주기에 따라 듀티사이클이 결정됩니다.
듀티사이클(%) = 유효시간 / 주기 * 100
이 함수가 실행되는 순간 듀티사이클에 따라 모터가 구동됩니다.
#include <PhpocExpansion.h>
#include <Phpoc.h>
byte spcId = 1;
ExpansionDCMotor dcmotor(spcId, 1);
int width = 3000;
void setup() {
Serial.begin(9600);
while(!Serial)
;
Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
Expansion.begin();
Serial.println(dcmotor.getPID());
Serial.println(dcmotor.getName());
dcmotor.setPeriod(10000);
dcmotor.setWidth(width);
}
void loop() {
if(width > 0) {
width -= 100;
dcmotor.setWidth(width);
delay(100);
}
}
setPolarity() 함수를 이용해 PWM신호의 극성을 설정할 수 있습니다.
dcmotor.setPolarity(pol);
pol : PWM 극성
pol | polarity |
---|---|
0보다 크거나 같음 | 정상 극성(기본 값) |
0보다 작음 | 반대 극성 |
setDirection() 함수를 이용해 모터의 회전 방향을 설정할 수 있습니다.
dcmotor.setDirection(dir);
dir : 회전 방향
pol | polarity |
---|---|
0보다 크거나 같음 | 정방향(기본 값) |
0보다 작음 | 역방향 |
※참고: 실제 모터의 회전 방향은 PWM 극성 설정과 회전 방향 설정에 영향을 받습니다.
PWM 극성 설정 | 회전 방향 설정 | 실제 회전 방향 |
---|---|---|
정상극성 | 정방향 | 시계방향 |
정상극성 | 역방향 | 반시계방향 |
반대극성 | 정방향 | 반시계방향 |
반대극성 | 역방향 | 시계방향 |
setDecay() 함수를 이용해 감쇠모드를 설정할 수 있습니다.
dcmotor.setDecay(decay)
decay : 감쇠 모드
decay | polarity |
---|---|
0 | 느린 감쇠 |
그 외 | 빠른 감쇠 |