sugiyama tatsuya
/
check_command
a
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; } } }