sampleProgram

Dependencies:   QEI accelerator bit_test cyclic_io cyclic_var cylinder event_var limit mbed mecanum motor_drive pid pid_encoder rs422_put sbdbt servo

Fork of 17robo_fuzi by kusano kiyoshige

Revision:
39:6735743ac0f1
Parent:
38:b071512af5ca
Child:
40:2d6888448ab2
--- a/main.cpp	Thu Sep 07 02:21:24 2017 +0000
+++ b/main.cpp	Thu Sep 07 06:58:57 2017 +0000
@@ -39,7 +39,7 @@
 #define pin_interrupt_cylinder_min       p23
 #define encoder_A       p25
 #define encoder_B       p26
-#define enc_Kp      0.005
+#define enc_Kp      0.007
 #define enc_Ki      0.0001
 #define enc_Kd      0.0003
 #define mecanum_power   1.0
@@ -98,9 +98,14 @@
 void servo_origin();
 float shoulder_right_cal();
 float shoulder_left_cal();
-int reload_magazine_flag;
+//output
 float yaw, target_yaw;
+//cylinder_origin
 int cylinder_origin_flag = 0;
+//cylinder
+float cylinder_pwm;
+int cylinder_pos_num = 0;
+float cylinder_pos[3] = {0.0,180.0,360.0};
 
 //riseEventそのうちClassにしたい
 short state;
@@ -119,7 +124,7 @@
     setup();
     while(1) {
         //pc.printf("Pulses is: %lo\tdeg :%f\r\n",enc_cylinder.pulse(),enc_cylinder.deg());
-        //pc.printf("rise state : %d\r\n",riseEvent(sbdbt.right));
+        pc.printf("rise state : %d\r\n",cyclic_servo.getState());
     }
 }
 
@@ -135,7 +140,7 @@
     cylinder_origin_first();
     output_timer.attach(&output, output_period);
     yaw_pid.setup(yaw_Kp, yaw_Ki, yaw_Kd);
-    mecanum.setupdeg(bno055.getYawRad()+180.0);
+    mecanum.setupdeg(bno055.getYawRad());   //基盤が前後逆の場合+180
     v1.setup(acceleration,output_period);
     v2.setup(acceleration,output_period);
     v3.setup(acceleration,output_period);
@@ -179,7 +184,7 @@
 {
     while(interrupt_cylinder_min == 1) {
         led1 = 1;
-        rs422.put(5, -0.2, 0.0);
+        rs422.put(5, -0.5, 0.0);
     }
     led1 = 0;
     enc_cylinder.origin();
@@ -189,18 +194,16 @@
 void cylinder_origin()
 {
     if(cylinder_origin_flag == 1){
-        rs422.put(5, -0.2, 0.0);
+        rs422.put(5, -0.5, 0.0);
     }
     if(interrupt_cylinder_min == 0){
-    cylinder_origin_flag = 0;
-    enc_cylinder.origin();
+        cylinder_origin_flag = 0;
+        enc_cylinder.origin();
+        cylinder_pos_num = 0;
     }
 }
 
 //追記(動作未確認)
-float cylinder_pwm;
-int cylinder_pos_num = 0;
-float cylinder_pos[3] = {0.0,180.0,360.0};
 void cylinder_cal()
 {
     cylinder.cyclic(sbdbt.shikaku);     //cylinder ON/OFF
@@ -234,20 +237,16 @@
 void servo_max(){
     servo.pulsewidth(0.0022);   
 }
-
 void servo_min()
 {
     servo.pulsewidth(0.0010);
 }
-
 void servo_out(){
-    cyclic_servo.cyclic(sbdbt.down);
-    switch (cyclic_servo.getState()){
-        case 0:
-            servo_min();
-        case 1:
-            servo_max();
-        default:
+    cyclic_servo.cyclic(sbdbt.down);    //setServoControl
+    if(cyclic_servo.getState()==0){
+        servo_min();
+    }else if(cyclic_servo.getState()==1){
+        servo_max();
     }
 }
 
@@ -303,11 +302,12 @@
     int id[nucleo_num] = {n1_id, n2_id, n3_id, n4_id, n5_id, n6_id};
     switch (counter) {
         case 0:
-            rs422.put(id[counter], v1.duty(mecanum.v1()*mecanum_power), v3.duty(mecanum.v3()*mecanum_power));
+            rs422.put(id[counter], v1.duty(mecanum.v1()*mecanum_power+sbdbt.right_y), v3.duty(mecanum.v3()*mecanum_power+sbdbt.right_y));
             counter++;
             break;
         case 1:
-            rs422.put(id[counter], v2.duty(mecanum.v2()*mecanum_power), v4.duty(mecanum.v4()*mecanum_power));
+            //.duty(<cal>*<powerControle>+<boost>)
+            rs422.put(id[counter], v2.duty(mecanum.v2()*mecanum_power-sbdbt.right_y), v4.duty(mecanum.v4()*mecanum_power-sbdbt.right_y));
             counter ++;
             break;
         case 2: