手動機 ヌクレオ用のプログラムです

Dependencies:   mbed

Fork of F3RC_syudou_slave by F3RC1班

Committer:
yuto17320508
Date:
Thu Sep 14 01:20:53 2017 +0000
Revision:
5:72e5a850678a
Parent:
4:5ba58456c3ee
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yuto17320508 0:d0441e7d5ea3 1 #include "mbed.h"
yuto17320508 0:d0441e7d5ea3 2
yuto17320508 0:d0441e7d5ea3 3 Serial pc(USBTX,USBRX);
yuto17320508 4:5ba58456c3ee 4 BusIn in(PA_7,PA_6,PA_5,PA_4);
yuto17320508 5:72e5a850678a 5 PwmOut motor_1(PB_14);
yuto17320508 5:72e5a850678a 6 PwmOut motor_2(PB_15);
yuto17320508 0:d0441e7d5ea3 7 DigitalOut cyli_1(PB_5);
yuto17320508 0:d0441e7d5ea3 8 DigitalOut cyli_2(PB_3);
yuto17320508 0:d0441e7d5ea3 9 DigitalOut cyli_3(PA_10);
yuto17320508 2:96509fc6e151 10 //フォトインタラプタ上
yuto17320508 2:96509fc6e151 11 InterruptIn photo_1(PC_2);
yuto17320508 2:96509fc6e151 12 //フォトインタラプタ下
yuto17320508 2:96509fc6e151 13 InterruptIn photo_2(PC_3);
yuto17320508 0:d0441e7d5ea3 14
yuto17320508 4:5ba58456c3ee 15 int num;
yuto17320508 0:d0441e7d5ea3 16
yuto17320508 0:d0441e7d5ea3 17 //モーターの出力の設定
yuto17320508 5:72e5a850678a 18 double motor_power = 0.6;
yuto17320508 0:d0441e7d5ea3 19
yuto17320508 2:96509fc6e151 20
yuto17320508 2:96509fc6e151 21 //腕上昇下降の関数
yuto17320508 2:96509fc6e151 22 void up()
yuto17320508 2:96509fc6e151 23 {
yuto17320508 5:72e5a850678a 24 motor_1=0;
yuto17320508 5:72e5a850678a 25 motor_2=motor_power;
yuto17320508 2:96509fc6e151 26 }
yuto17320508 2:96509fc6e151 27 void down()
yuto17320508 2:96509fc6e151 28 {
yuto17320508 5:72e5a850678a 29 motor_1=motor_power;
yuto17320508 5:72e5a850678a 30 motor_2=0;
yuto17320508 2:96509fc6e151 31 }
yuto17320508 2:96509fc6e151 32 void stop()
yuto17320508 2:96509fc6e151 33 {
yuto17320508 5:72e5a850678a 34 motor_1=0;
yuto17320508 5:72e5a850678a 35 motor_2=0;
yuto17320508 2:96509fc6e151 36 }
yuto17320508 2:96509fc6e151 37 //フラグ
yuto17320508 2:96509fc6e151 38 int up_flag=1;
yuto17320508 2:96509fc6e151 39 int down_flag=1;
yuto17320508 2:96509fc6e151 40 //フォトトランジスタのフラグ呼び出し
yuto17320508 2:96509fc6e151 41 void photo_1_rise()
yuto17320508 2:96509fc6e151 42 {
yuto17320508 2:96509fc6e151 43 stop();
yuto17320508 2:96509fc6e151 44 up_flag=0;
yuto17320508 2:96509fc6e151 45 }
yuto17320508 2:96509fc6e151 46 void photo_1_fall()
yuto17320508 2:96509fc6e151 47 {
yuto17320508 2:96509fc6e151 48 up_flag=1;
yuto17320508 2:96509fc6e151 49 }
yuto17320508 2:96509fc6e151 50 void photo_2_rise()
yuto17320508 2:96509fc6e151 51 {
yuto17320508 2:96509fc6e151 52 stop();
yuto17320508 2:96509fc6e151 53 down_flag=0;
yuto17320508 2:96509fc6e151 54 }
yuto17320508 2:96509fc6e151 55 void photo_2_fall()
yuto17320508 2:96509fc6e151 56 {
yuto17320508 2:96509fc6e151 57 down_flag=1;
yuto17320508 2:96509fc6e151 58 }
yuto17320508 0:d0441e7d5ea3 59 int main()
yuto17320508 0:d0441e7d5ea3 60 {
yuto17320508 5:72e5a850678a 61 motor_1.period_us(100);
yuto17320508 5:72e5a850678a 62 motor_2.period_us(100);
yuto17320508 0:d0441e7d5ea3 63
yuto17320508 2:96509fc6e151 64 //フォトインタラプタ1
yuto17320508 2:96509fc6e151 65 photo_1.rise(&photo_1_rise);
yuto17320508 2:96509fc6e151 66 photo_1.fall(&photo_1_fall);
yuto17320508 2:96509fc6e151 67
yuto17320508 2:96509fc6e151 68 //フォトインタラプタ2
yuto17320508 2:96509fc6e151 69 photo_2.rise(&photo_2_rise);
yuto17320508 2:96509fc6e151 70 photo_2.fall(&photo_2_fall);
yuto17320508 0:d0441e7d5ea3 71 while(1) {
yuto17320508 0:d0441e7d5ea3 72
yuto17320508 4:5ba58456c3ee 73 num=in;
yuto17320508 0:d0441e7d5ea3 74
yuto17320508 0:d0441e7d5ea3 75
yuto17320508 0:d0441e7d5ea3 76 //腕1 上昇下降
yuto17320508 5:72e5a850678a 77 if(num == 1 && up_flag==1) {//フラグ1で上昇
yuto17320508 2:96509fc6e151 78 up();
yuto17320508 5:72e5a850678a 79 num=1;
yuto17320508 5:72e5a850678a 80 pc.printf("up\n");
yuto17320508 5:72e5a850678a 81 } else if(num == 2 && down_flag==1) {//フラグ1で下降
yuto17320508 2:96509fc6e151 82 down();
yuto17320508 5:72e5a850678a 83 num=2;
yuto17320508 5:72e5a850678a 84 pc.printf("down\n");
yuto17320508 5:72e5a850678a 85 } else {//止まる
yuto17320508 2:96509fc6e151 86 stop();
yuto17320508 0:d0441e7d5ea3 87 }
yuto17320508 0:d0441e7d5ea3 88
yuto17320508 0:d0441e7d5ea3 89 //腕1 開閉
yuto17320508 5:72e5a850678a 90 if(num == 3) {//開く
yuto17320508 0:d0441e7d5ea3 91 cyli_1=1;
yuto17320508 5:72e5a850678a 92 } else if(num == 4) {//閉じる
yuto17320508 0:d0441e7d5ea3 93 cyli_1=0;
yuto17320508 0:d0441e7d5ea3 94 }
yuto17320508 0:d0441e7d5ea3 95
yuto17320508 0:d0441e7d5ea3 96 //腕2 上昇下降
yuto17320508 5:72e5a850678a 97 if(num == 5) {//上昇
yuto17320508 5:72e5a850678a 98 cyli_2=0;
yuto17320508 5:72e5a850678a 99 } else if(num == 6) {//下降
yuto17320508 0:d0441e7d5ea3 100 cyli_2=1;
yuto17320508 0:d0441e7d5ea3 101 }
yuto17320508 0:d0441e7d5ea3 102
yuto17320508 0:d0441e7d5ea3 103 //腕2 開閉
yuto17320508 5:72e5a850678a 104 if(num == 7) {//開く
yuto17320508 0:d0441e7d5ea3 105 cyli_3=1;
yuto17320508 5:72e5a850678a 106 } else if(num == 8) {//閉じる
yuto17320508 0:d0441e7d5ea3 107 cyli_3=0;
yuto17320508 1:dfabac3b39e9 108 }
yuto17320508 4:5ba58456c3ee 109 pc.printf("%d\n\r",num);
yuto17320508 0:d0441e7d5ea3 110 }
yuto17320508 0:d0441e7d5ea3 111 }