サーボモータをPWM制御で動作させる関数

Dependents:   2020_lab_No2reactor_contorl_ver2

ServoMotor.cpp

Committer:
_ai_
Date:
2019-10-18
Revision:
0:908ddd5c615d
Child:
1:66011300b267

File content as of revision 0:908ddd5c615d:

#include "mbed.h"
#include "ServoMotor.h"

ServoMotor_270::ServoMotor_270(PinName servo_pwmport_,float init_deg):servo_pwmport(servo_pwmport_){
    servo_pwmport.period(0.02);         //pwm周期を20msにする
    output_deg = init_deg;           //outputの初期化
    servo_pwmport.pulsewidth(0.0007);
    servo_pwmport.pulsewidth((init_deg/168750.0)+0.0007);
}

void ServoMotor_270::rot(float input_deg){
    
    float temp = 0.0;
    
    if(input_deg<0.0){                  //0度以下の値は0にする
        output_deg=0.0;
    }
    else if(input_deg>270.0){
        output_deg=270.0;
    }
    
    output_deg=input_deg; 
    servo_pwmport.pulsewidth((output_deg/168750.0)+0.0007);//pwmのパルスの出力幅を計算。この計算は23msが270度、7msが0度の計算式。
}


float ServoMotor_270::read(){
    return output_deg;
}


void ServoMotor_270::weak_condition(){
       servo_pwmport.pulsewidth(0.00005);   //脱力状態(50usで発生する)
}