2022_Ateam_MOTORprogramをscrp_slaveでメインマイコンからコントローラー状況を読み取れるように改良。 また、モータに0以外のpwmが送られている場合に基盤付属のledが点灯するようにした。

Dependencies:   SBDBT arrc_mbed BNO055

Revision:
10:ad8fced7d6b6
Parent:
9:569c0f55dd9b
Child:
11:264f992664b0
--- a/PIDco.cpp	Thu Feb 03 13:07:37 2022 +0000
+++ b/PIDco.cpp	Fri Mar 11 04:24:27 2022 +0000
@@ -33,7 +33,7 @@
     Kd = d_gain;
 }
 
-void PIDco::wheel_ctl(PinName PIN_A,PinName PIN_B){
+void PIDco::wheel_ctl(PinName PIN_A,PinName PIN_B,double Regulation){
     PwmOut v1p(PIN_A);
     PwmOut v1m(PIN_B);
     
@@ -46,6 +46,7 @@
     cal_Ival();
     cal_Dval();
     cal_pwm();
+    Pwm = Pwm * Regulation;
     
         if(Pwm > 0){
             v1p = Pwm > 0.5 ? 0.5 : Pwm;
@@ -60,19 +61,20 @@
     renew_Error();
 }
     
-void PIDco::angle_ctl(double now_angle,double TARGET,double p_gain,double i_gain,double d_gain){
-    pulse_a = now_angle;
+void PIDco::pid_ctl(double now_angle,double TARGET,double p_gain,double i_gain,double d_gain){
     Target = TARGET;
     Kp = p_gain;
     Ki = i_gain;
     Kd = d_gain;
-    cal_spd();
-    cal_Error();
+    
+    Error_a = Target - now_angle;
     cal_Pval();
     cal_Ival();
     cal_Dval();
-    cal_pwm();
+    Pwm = (Pval + Ival + Dval);
     output = Pwm;
+    //printf("%lf\n",Error_a);
+    renew_Error();
 }
 
 void PIDco::cal_Error(){ Error_a = Target - spd; }