a

Dependencies:   AX12 mbed

main.cpp

Committer:
452R142039
Date:
2016-02-29
Revision:
0:ac0ad47ee366

File content as of revision 0:ac0ad47ee366:

#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;
     
        }
    }
}