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

Dependents:   2020_lab_No2reactor_contorl_ver2

Revision:
0:908ddd5c615d
Child:
1:66011300b267
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ServoMotor.cpp	Fri Oct 18 16:18:07 2019 +0000
@@ -0,0 +1,35 @@
+#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で発生する)
+}
+