2021 nhk A team

Dependencies:   mbed QEI led beep softPWM Servo_softpwm IR2302 lpf

Files at this revision

API Documentation at this revision

Comitter:
THtakahiro702286
Date:
Sun Oct 31 13:45:53 2021 +0000
Parent:
30:00a513858a44
Commit message:
10/31 last parameter

Changed in this revision

control_parameter.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/control_parameter.h	Sat Oct 30 07:56:14 2021 +0000
+++ b/control_parameter.h	Sun Oct 31 13:45:53 2021 +0000
@@ -13,14 +13,14 @@
 //振り子振る間隔
 #define FIRST_WAIT          0.15
 #define SECOND_WAIT         0.25
-#define THIRD_WAIT          0.3
+#define THIRD_WAIT          0.35
 
-#define FURIKO_STOP_LINE    80     //ふり幅
+#define FURIKO_STOP_LINE    73     //ふり幅
 #define SET_WAIT            0.15   //ロリコン依存で振り切った後の待ち時間
 #define SECOND_LINE         1      //firstからsecondに移行するための時間
 #define THIRD_LINE          2      //secondからthirdに移行するための時間
-#define JUMP_TIME           12     //飛ぶために必要そうな時間
-#define JUMP_LINE           -40    //飛ぶために必要そうなエンコーダーのタイミング
+#define JUMP_TIME           14.5     //飛ぶために必要そうな時間
+#define JUMP_LINE           -45    //飛ぶために必要そうなエンコーダーのタイミング
 #define RELEASE_LINE        70     //離す瞬間のZ軸の加速度、重力に逆らうので98より小さくなるはず
 //ロープ検知の閾値
 #define PH_LINE1            0.1
--- a/main.cpp	Sat Oct 30 07:56:14 2021 +0000
+++ b/main.cpp	Sun Oct 31 13:45:53 2021 +0000
@@ -26,7 +26,7 @@
 lpf mSp(MOT_C_TIME, MOT_A_TIME);
 Servo servo[3] = {SERVO1, SERVO2, SERVO3};
 IR2302 ir2302(MD_A,MD_B);//梅沢追加 IR2302
-Timer setWait,nextWait,jumpWait;
+Timer setWait,nextWait,jumpWait,buzzerTime;
 AnalogIn ph[3] = {PHOTO1,PHOTO2,PHOTO3};
 DigitalOut light[3] = {ROPE1,ROPE2,ROPE3};
 DigitalIn ub(USER_BUTTON);
@@ -43,9 +43,12 @@
     jy.calibrateAll(50);
  
     int nowPalse;
+    int zeroPalse=0;
     
     float phI[3] = {0};//フォトインタラプタ
     bool rope = 0;
+    
+    float freq = 3000;//ブザーのやつ
 
     bool setFlag   = 1;//1
     bool firstFlag = 0;//0
@@ -56,6 +59,7 @@
     bool catchFlag = 0;//0
     int8_t way     = 1;//1or-1
     bool resetFlag = 0;//0
+    bool buzzerFlag= 0;//0
     float fiveYAcc[5]={0};
     
     float servoAngle[3];
@@ -96,13 +100,15 @@
         j++;
 */
     //ロータリーエンコーダ 向き変ったので-1掛け
-        nowPalse = encoder.getPulses() * -1;
+        nowPalse = (encoder.getPulses() + zeroPalse) * -1;
         
     //紐センサ
         for(i=0; i<3; i++) phI[i]=ph[i];
         
 //処理部
 
+//        buzzerFlag = 0;
+
     //セッティング
         if(setFlag)
         {
@@ -111,11 +117,15 @@
             else if(!ab && ub) motor=0;
             else if(!ub && ab)
             {
+                motor = 0;
                 setFlag = 0;
                 firstFlag = 1;
-                buzzer.beep(3000,1.0);
+                buzzer.beep(freq,1.0);
+//                buzzerFlag=1;
+                zeroPalse = nowPalse;
                 wait(5);
                 buzzer.nobeep();
+//                buzzerFlag = 0;
             }
 
         }
@@ -130,6 +140,7 @@
                 way *= -1;
                 nextWait.start();
                 setWait.start();
+//                buzzerFlag=1;
                 swingFlag = 0;
                 if(nextWait > SECOND_LINE)                        //一定時間経過したらsecondに移行
                 {
@@ -158,6 +169,7 @@
                 way *= -1;
                 setWait.start();
                 swingFlag = 0;
+//                buzzerFlag = 1;
                 if(nextWait > THIRD_LINE)                        //一定時間経過したらthirdに移行
                 {
                     secondFlag   = 0;
@@ -186,6 +198,7 @@
                 nextWait.start();
                 setWait.start();
                 swingFlag = 0;
+//                buzzerFlag = 1;
             }
             if(setWait > THIRD_WAIT)
             {
@@ -193,6 +206,13 @@
                 setWait.reset();
                 swingFlag = 1;
             }
+/*
+            if(jumpWait > JUMP_TIME)
+            {
+                buzzerFlag = 1;
+                freq = 5000;
+            }
+*/
             if((jumpWait > JUMP_TIME) && (nowPalse < JUMP_LINE) && (nowPalse > JUMP_LINE-10) && (way == -1))             //一定時間たったら前に飛ぶ
             {
                 flyFlag = 1;
@@ -234,7 +254,7 @@
     //掴んだ後
         if(resetFlag)
         {
-            if(nowPalse < NEXT_PALSE * l)
+            if(nowPalse < NEXT_PALSE)
             {
                 motor=0.35;
             }
@@ -286,18 +306,28 @@
     
     //モーター
         ir2302.SetMotorSpeed(motor);
-      
+/*        
+    //ブザー
+        if(buzzerFlag)
+        {
+            buzzer.beep(freq,0.5);
+        }
+        else
+        {
+            buzzer.nobeep();
+        }
+*/      
 //表示系
 //        pc.printf("%.2f,%.2f,%.2f",angle[0],angle[1],angle[2]);
-        pc.printf("%.2f,%.2f,%.2f,",servoAngle[0],servoAngle[1],servoAngle[2]);
-        pc.printf("%.4f,",motor);
+//        pc.printf("%.2f,%.2f,%.2f,",servoAngle[0],servoAngle[1],servoAngle[2]);
+//        pc.printf("%.4f,",motor);
 //        pc.printf("%.2f,%.2f,",abac[1],abac[2]);
 //        pc.printf("%.2f,%.2f,",lpfY,lpfZ);
-//        pc.printf("%d,",nowPalse);
-        pc.printf("%d,",setFlag);
+        pc.printf("%d,",nowPalse);
+//        pc.printf("%d,",setFlag);
 //        pc.printf("%d,",resetFlag);
 //        pc.printf("%.2f,",lpfM);
-//        pc.printf("%.3f,%.3f,%.3f,",phI[0],phI[1],phI[2]);
+        pc.printf("%.3f,%.3f,%.3f,",phI[0],phI[1],phI[2]);
 //        pc.printf("%d,",k);
         pc.printf("\r\n");