![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
a
Diff: main.cpp
- 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