a

Dependencies:   AX12 mbed

Revision:
0:ac0ad47ee366
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Feb 29 09:00:47 2016 +0000
@@ -0,0 +1,389 @@
+#include "mbed.h"
+//#include "AX18.h"
+#include "RX64.h"
+#include <stdio.h>
+
+Serial pc (USBTX, USBRX);
+
+//Mbedのピンと割り当ての文字設定
+AnalogIn vep1(p15);
+AnalogIn vep2(p16);
+AnalogIn vep3(p17);
+
+DigitalOut myled1(LED1);
+DigitalOut myled2(LED2);
+DigitalOut myled3(LED3);
+DigitalOut myled4(LED4);
+
+int main()
+{
+    pc.baud(57600);//Tera Term ボー・レート
+    
+//    int ngleax1;
+//    int ngleax2;
+//    int angleax3;
+//    int angleax4;
+    int anglerx;//RX-64モータ角度-ターンテーブル(T-motor)
+    int input1;
+//    int x;
+    int y;
+    char c;
+//    AX18 myax181(p9, p10, 1);
+//    AX18 myax182(p9, p10, 2);
+//    AX18 myax183(p9, p10, 3);
+//    AX18 myax184(p9, p10, 4);
+    
+//サーボモーターを初期位置に戻す
+    RX64 myrx64(p13, p14, 1);
+    myrx64.SetMode(0);
+    myrx64.SetGoal(0);
+//  wait(6);
+    
+//モータが範囲内の角度に収まるまでプログラムの進行を抑える
+    do{
+        anglerx = myrx64.GetPosition();
+    }while(anglerx >= 3);
+        
+    pc.printf("\nafter\nanglerx = %d\n", anglerx);//T-motor角度画面表示
+//繰り返し
+    while(1){
+        
+//        x = 1;
+        y = 0;
+        input1 = 4;
+        
+//操縦者が光を見つめているか確認・光源を見つめてもらいつつzキーを押してもらう
+        do{
+            y = 1;
+            pc.printf("選択したい光を見つめつつ「zキー」を押してください\n");
+            c = pc.getc();
+            if(c == 'z') {
+                y = 0;
+            } else {
+                y = 1;
+            }
+        }while(y == 1);
+        
+//ピンに入った電圧のアナログ値
+        pc.printf("aの入力電圧は%f   ",vep1.read());
+        pc.printf("bの入力電圧は%f   ",vep2.read());
+        pc.printf("cの入力電圧は%f\n",vep3.read());
+        
+//入力を判定する・それぞれ4回判定・判定は5秒間
+        do{
+            wait(2);
+            if(vep1 == 1) {
+                pc.printf("入力1-A\n");
+                pc.printf("aの入力電圧は%f   ",vep1.read());
+                pc.printf("bの入力電圧は%f   ",vep2.read());
+                pc.printf("cの入力電圧は%f\n",vep3.read());
+                wait(0.5);
+                if(vep1 == 1) {
+                    pc.printf("入力1-A\n");
+                    pc.printf("aの入力電圧は%f   ",vep1.read());
+                    pc.printf("bの入力電圧は%f   ",vep2.read());
+                    pc.printf("cの入力電圧は%f\n",vep3.read());
+                    wait(0.5);
+                    do{
+                        y = 1;
+                        pc.printf("選択したい光を見つめつつ「zキー」を押してください\n");
+                        c = pc.getc();
+                        if(c == 'z') {
+                            y = 0;
+                        } else {
+                            y = 1;
+                        }
+                    }while(y == 1);
+                    if(vep1 == 1) {
+                        pc.printf("入力2-A\n");
+                        pc.printf("aの入力電圧は%f   ",vep1.read());
+                        pc.printf("bの入力電圧は%f   ",vep2.read());
+                        pc.printf("cの入力電圧は%f\n",vep3.read());
+                        wait(0.5);
+                        if(vep1 == 1) {
+                            pc.printf("入力2-A\n");
+                            pc.printf("aの入力電圧は%f   ",vep1.read());
+                            pc.printf("bの入力電圧は%f   ",vep2.read());
+                            pc.printf("cの入力電圧は%f\n",vep3.read());
+                            input1 = 1;
+                            y = 10;
+                        }
+                    }
+                    if(vep2 == 1) {
+                        pc.printf("入力2-B\n");
+                        pc.printf("aの入力電圧は%f   ",vep1.read());
+                        pc.printf("bの入力電圧は%f   ",vep2.read());
+                        pc.printf("cの入力電圧は%f\n",vep3.read());
+                        wait(0.5);
+                        if(vep2 == 1) {
+                            pc.printf("入力2-B\n");
+                            pc.printf("aの入力電圧は%f   ",vep1.read());
+                            pc.printf("bの入力電圧は%f   ",vep2.read());
+                            pc.printf("cの入力電圧は%f\n",vep3.read());
+                            input1 = 2;
+                            y = 10;
+                        }
+                    }
+                }
+/*           } else if(vep1 == 1) {
+                pc.printf("入力2-1\n");
+                pc.printf("aの入力電圧は%f   ",vep1.read());
+                pc.printf("bの入力電圧は%f   ",vep2.read());
+                pc.printf("cの入力電圧は%f\n",vep3.read());
+                wait(0.5);
+                if(vep1 == 1) {
+                    pc.printf("入力2-2\n");
+                    pc.printf("aの入力電圧は%f   ",vep1.read());
+                    pc.printf("bの入力電圧は%f   ",vep2.read());
+                    pc.printf("cの入力電圧は%f\n",vep3.read());
+                    wait(0.5);
+                    do{
+            y = 1;
+            pc.printf("選択したい光を見つめつつ「zキー」を押してください\n");
+            c = pc.getc();
+            if(c == 'z') {
+                y = 0;
+            } else {
+                y = 1;
+            }
+        }while(y == 1);
+                    if(vep2 == 1) {
+                        pc.printf("入力2-3\n");
+                        pc.printf("aの入力電圧は%f   ",vep1.read());
+                        pc.printf("bの入力電圧は%f   ",vep2.read());
+                        pc.printf("cの入力電圧は%f\n",vep3.read());
+                        wait(0.5);
+                        if(vep2 == 1) {
+                            pc.printf("入力2-4\n");
+                            pc.printf("aの入力電圧は%f   ",vep1.read());
+                            pc.printf("bの入力電圧は%f   ",vep2.read());
+                            pc.printf("cの入力電圧は%f\n",vep3.read());
+                            input1 = 2;
+                            y = 10;
+                        }
+                    }
+                }*/
+            } else if(vep2 == 1) {
+                pc.printf("入力1-A\n");
+                pc.printf("aの入力電圧は%f   ",vep1.read());
+                pc.printf("bの入力電圧は%f   ",vep2.read());
+                pc.printf("cの入力電圧は%f\n",vep3.read());
+                wait(0.5);
+                if(vep2 == 1) {
+                    pc.printf("入力1-A\n");
+                    pc.printf("aの入力電圧は%f   ",vep1.read());
+                    pc.printf("bの入力電圧は%f   ",vep2.read());
+                    pc.printf("cの入力電圧は%f\n",vep3.read());
+                    wait(0.5);
+                    do{
+                        y = 1;
+                        pc.printf("選択したい光を見つめつつ「zキー」を押してください\n");
+                        c = pc.getc();
+                        if(c == 'z') {
+                            y = 0;
+                        } else {
+                            y = 1;
+                        }
+                    }while(y == 1);
+                    if(vep1 == 1) {
+                        pc.printf("入力2-A\n");
+                        pc.printf("aの入力電圧は%f   ",vep1.read());
+                        pc.printf("bの入力電圧は%f   ",vep2.read());
+                        pc.printf("cの入力電圧は%f\n",vep3.read());
+                        wait(0.5);
+                        if(vep1 == 1) {
+                            pc.printf("入力2-A\n");
+                            pc.printf("aの入力電圧は%f   ",vep1.read());
+                            pc.printf("bの入力電圧は%f   ",vep2.read());
+                            pc.printf("cの入力電圧は%f\n",vep3.read());
+                            input1 = 3;
+                            y = 10;
+                        }
+                    }
+                    if(vep2 == 1) {
+                        pc.printf("入力2-B\n");
+                        pc.printf("aの入力電圧は%f   ",vep1.read());
+                        pc.printf("bの入力電圧は%f   ",vep2.read());
+                        pc.printf("cの入力電圧は%f\n",vep3.read());
+                        wait(0.5);
+                        if(vep2 == 1) {
+                            pc.printf("入力2-B\n");
+                            pc.printf("aの入力電圧は%f   ",vep1.read());
+                            pc.printf("bの入力電圧は%f   ",vep2.read());
+                            pc.printf("cの入力電圧は%f\n",vep3.read());
+                            input1 = 1;
+                            y = 10;
+                        }
+                    }
+                }
+            } else {
+                input1 = 4;
+                y += 2;
+            }
+        }while(y < 10);
+        
+
+//入力A-Aに分岐・ターンテーブルを30度回転さる
+        switch(input1) {
+            case 1:
+                myled1 = 1;
+                pc.printf("Aの入力を確認しました\nターンテーブルのAを正面に運びます\n");
+                
+/*                myrx64.SetMode(0);
+                myrx64.SetGoal(0);
+                wait(3);*/
+                
+                anglerx = myrx64.GetPosition();
+                pc.printf("before\nanglerx = %d\n", anglerx);
+                
+                myrx64.SetMode(0);
+                myrx64.SetGoal(0);//T-motor30度回転
+                wait(3);
+                
+                do{
+                    anglerx = myrx64.GetPosition();
+                }while(anglerx >= 3);//T-motor角度を20~40度に抑える
+                
+                anglerx = myrx64.GetPosition();
+                pc.printf("after\nanglerx = %d\n", anglerx);//T-motor角度表示
+                
+/*                myrx183.SetMode(0);
+                myrx183.SetGoal(132);
+                myrx184.SetMode(0);z
+                myrx184.SetGoal(288);
+                wait(3);
+                
+                angleax3 = myax183.GetPosition();
+                ngleax4 = myax184.GetPosition();
+                pc.printf("before\nangleax3 = %d\nangleax4 = %d\n", angleax3, angleax4);
+                
+                myrx183.SetMode(0);
+                myrx183.SetGoal(221);
+                myrx184.SetMode(0);
+                myrx184.SetGoal(193);
+                wait(3);
+                
+                angleax3 = myax183.GetPosition();
+                angleax4 = myax184.GetPosition();
+                pc.printf("after\nangleax3 = %d\n", angleax3);*/
+                
+                wait(3);
+                
+                myled1 = 0;
+                pc.printf("1連の動作の終了です\n初めの選択に戻ります\n\n");
+                wait(2);
+                break;
+                
+//入力A-Bに分岐・ターンテーブルを120度回転さる
+            case 2:
+                myled2 = 1;
+                pc.printf("Bの入力を確認しました\nターンテーブルのBを正面に運びます\n");
+                
+/*                myrx64.SetMode(0);
+                myrx64.SetGoal(0);
+                wait(3);*/
+                
+                anglerx = myrx64.GetPosition();
+                pc.printf("before\nanglerx = %d\n", anglerx);
+                
+                myrx64.SetMode(0);
+                myrx64.SetGoal(121);//T-motor120度回転
+                wait(3);
+                
+                do{
+                    anglerx = myrx64.GetPosition();
+                }while(anglerx <= 110 || anglerx >= 130);//T-motor角度を110~130度に抑える
+                
+                anglerx = myrx64.GetPosition();
+                pc.printf("after\nanglerx = %d\n", anglerx);//T-motor角度表示
+                
+/*                myrx183.SetMode(0);
+                myrx183.SetGoal(132);
+                myrx184.SetMode(0);
+                myrx184.SetGoal(288);
+                wait(3);
+                
+                angleax3 = myax183.GetPosition();
+                angleax4 = myax184.GetPosition();
+                pc.printf("before\nangleax3 = %d\nangleax4 = %d\n", angleax3, angleax4);
+                
+                myrx183.SetMode(0);
+                myrx183.SetGoal(221);
+                myrx184.SetMode(0);
+                myrx184.SetGoal(193);
+                wait(3);
+                
+                angleax3 = myax183.GetPosition();
+                angleax4 = myax184.GetPosition();
+                pc.printf("after\nangleax3 = %d\nangleax4 = %d\n", angleax3, angleax4);*/
+                
+                wait(3);
+                myled2 = 0;
+                pc.printf("1連の動作の終了です\n初めの選択に戻ります\n\n");
+                wait(2);
+                break;
+                
+//入力C分岐・ターンテーブルを240度回転さる
+            case 3:
+                myled3 = 1;
+                pc.printf("Cの入力を確認しました\nターンテーブルのCを正面に運びます\n");
+                wait(3);
+                
+/*                myrx64.SetMode(0);
+                myrx64.SetGoal(0);
+                wait(3);*/
+                
+                anglerx = myrx64.GetPosition();
+                pc.printf("before\nanglerx = %d\n", anglerx);
+                
+                myrx64.SetMode(0);
+                myrx64.SetGoal(240);//T-motor240度回転
+                wait(3);
+                
+                do{
+                    anglerx = myrx64.GetPosition();
+                }while(anglerx <= 230);//T-motor角度を230度以上にする
+                
+                anglerx = myrx64.GetPosition();
+                pc.printf("after\nanglerx = %d\n", anglerx);//T-motor角度表示
+                
+/*                myrx183.SetMode(0);
+                myrx183.SetGoal(132);
+                myrx184.SetMode(0);
+                myrx184.SetGoal(288);
+                wait(3);
+                
+                angleax3 = myax183.GetPosition();
+                angleax4 = myax184.GetPosition();
+                pc.printf("before\nangleax3 = %d\nangleax4 = %d\n", angleax3, angleax4);
+                
+                myrx183.SetMode(0);
+                myrx183.SetGoal(221);
+                myrx184.SetMode(0);
+                myrx184.SetGoal(193);
+                wait(3);
+                
+                angleax3 = myax183.GetPosition();
+                angleax4 = myax184.GetPosition();
+                pc.printf("after\nangleax3 = %d\nangleax4 = %d\n", angleax3, angleax4);*/
+                
+                wait(3);
+                myled3 = 0;
+                pc.printf("1連の動作の終了です\n初めの選択に戻ります\n\n");
+                wait(2);
+                break;
+                
+//入力判定なし
+            case 4:
+                myled4 = 1;
+                
+                pc.printf("入力を確認できませんでした\n初めの選択に戻ります\n\n");
+                wait(2);
+                
+                myled4 = 0;
+                
+                break;
+     
+        }
+    }
+}
\ No newline at end of file