ミニサーボ

ASV15MG.cpp

Committer:
firlight1034
Date:
2017-10-14
Revision:
1:af7a454d5b86
Parent:
0:abe3b5f466a2

File content as of revision 1:af7a454d5b86:

#include "mbed.h"
#include "ASV15MG.h"

// ASV15MG
ASV15MG::ASV15MG(PinName pin)
    :_servo(pin)
{
    // 周期割り込みによるPWMの作成
    tm.attach(this,&ASV15MG::PeriodicProcess,SERVO_PWM_MSEC);
//    tm.attach(this,&PeriodicProcess,SERVO_PWM_MSEC);
    // 初期設定(中心値に設定)
    SetPWM(ARM_MOUTH_PWM_WIDTH_CENTER);
}
// End of ASV15MG


//==================================
// PWM値の設定(Min:750,Max:1850)
// 許容値外の場合は前回値保持
//==================================
void ASV15MG::SetPWM(int pwm_us)
{
    // 範囲外の場合、前回値とする
    if(pwm_us < SERVO_PWM_MIN_VALUE){return;}
    if(pwm_us > SERVO_PWM_MAX_VALUE){return;}
    servoPwmWidth = PWM_SIG_LO;
}
// End of SwtPWM


//==================================
// 周期割り込み処理
//==================================
void ASV15MG::PeriodicProcess()
{
    _servo = PWM_SIG_HI;
    wait_us(servoPwmWidth);
    _servo = PWM_SIG_LO;
}
// End of PeriodicProcess