(多分)全部+フライトピン+新しい加速度

Dependencies:   mbed

Revision:
2:37d831f82840
Parent:
1:10af8aaa5b40
Child:
3:c1e0db4832b7
--- a/main.cpp	Mon Oct 15 10:38:06 2018 +0000
+++ b/main.cpp	Thu Oct 18 02:22:16 2018 +0000
@@ -6,8 +6,10 @@
 DigitalOut FET(p21);                //FET
 
 InterruptIn button1(p15);           //フォトインタラプタ
+InterruptIn button2(p18);
 DigitalIn test(p15);                //ここでピン15からの電圧の値、つまりフォトインタラプタが何か遮るものを検知すればハイの1を返して、
                                     //何もないつまりスリットの部分ではローの0を返す。それを変数testに代入している
+DigitalIn test2(p18);
 
 Serial pc(USBTX, USBRX);            //GPS
 GPS gps(p28, p27); 
@@ -67,10 +69,11 @@
         
         while(1)
     {
-        int flag;                   //変数flagを整数で型づけする。これがスイッチで、1の間は瞬間は何もしないけど、
+        int flag,flag2;                   //変数flagを整数で型づけする。これがスイッチで、1の間は瞬間は何もしないけど、
                                     //スリットの間隔であるπ/4とタイヤの半径70mmつまり一つのスリットを通過するごとに52.5mm加算していく必要があるから
                                     //0になった瞬間はこれを総距離に加えるというスイッチの役割をする。
-        float run;                  //変数runをフロートで型づけする
+        float rightrun;                  //変数runをフロートで型づけする
+        float leftrun2;
 
         printf("%d\r\n", test.read());
         if (test.read() == 1 and flag == 0){        //もしtestが1つまり何か障害物があって、かつflagが0つまりスイッチが切れているときは
@@ -79,9 +82,18 @@
         else if (test.read() == 0 and flag == 1){   //そうじゃなくて今度はとうとうtestが0でスリットの部分になった瞬間なのにスイッチが1で切れているときは
             flag = 0;                               //まずこれでスイッチを0にして入れる。
                                                     //こうすることで同じスリットの中でtestが複数回0を返した時に何回も52.5mmを加算しつづけるということがなくなる
-            run += 52.5;                            //総距離runに52.5を加算する
+            rightrun += 52.5;                            //総距離runに52.5を加算する
+        }
+         if (test2.read() == 1 and flag2 == 0){
+            flag2 = 1;
         }
-       /* if (run > 250){                             //もし総距離が250以上ならば、というのもここの値は暫定値。とりあえずゴール地点が決まればまたその値に修正する
+        else if (test2.read() == 0 and flag2 == 1){
+            flag2 = 0;
+            leftrun2 += 52.5;
+        }
+        printf("%f", rightrun);
+        printf("\t%f\r\n", leftrun2);
+       /* if (rightrun > 250){                             //もし総距離が250以上ならば、というのもここの値は暫定値。とりあえずゴール地点が決まればまたその値に修正する
             break;                                  //つまりゴールについたらこのループからぬける
         }*/
         
@@ -131,7 +143,7 @@
             motor1.speed(ms1);       //直進
             motor2.speed(ms2);
             
-            printf("%d\r\n", test.read());
+           /* printf("%d\r\n", test.read());                   ここの部分は単純に5mを足すことにした方がいいかな?
             if (test.read() == 1 and flag == 0)
             { 
                 flag = 1;
@@ -139,8 +151,17 @@
             else if (test.read() == 0 and flag == 1)
             {
                 flag=0;
+                rightrun += 52.5;
             }
-            
+             if (test2.read() == 1 and flag2 == 0){
+            flag2 = 1;
+        }
+        else if (test2.read() == 0 and flag2 == 1){
+            flag2 = 0;
+            leftrun2 += 52.5;
+        }
+        printf("%f", rightrun);
+        printf("\t%f\r\n", leftrun2);*/
             wait(2);
             printf("mortor straight\r\n");