yuto kawamura
/
F3RC_syudou_BUS_slave
通信変えたやつです
Fork of F3RC_syudou_slave_3 by
Diff: main.cpp
- Revision:
- 2:96509fc6e151
- Parent:
- 1:dfabac3b39e9
- Child:
- 3:1a3ed86511d3
diff -r dfabac3b39e9 -r 96509fc6e151 main.cpp --- a/main.cpp Wed Aug 23 03:33:55 2017 +0000 +++ b/main.cpp Thu Aug 24 03:49:20 2017 +0000 @@ -1,85 +1,119 @@ #include "mbed.h" Serial pc(USBTX,USBRX); -SPISlave spi(PC_12,PC_11,PC_10,PA_13); -PwmOut moter_1(PA_10); -PwmOut moter_2(PA_2); +SPISlave spi(PC_12,PC_11,PC_10,PA_15); +PwmOut moter_1(PB_14); +PwmOut moter_2(PB_15); DigitalOut cyli_1(PB_5); DigitalOut cyli_2(PB_3); DigitalOut cyli_3(PA_10); -//フォトトランジスタ上 -DigitalIn photo_1(PC_2); -//フォトトランジスタ下 -DigitalIn photo_2(PC_3); +//フォトインタラプタ上 +InterruptIn photo_1(PC_2); +//フォトインタラプタ下 +InterruptIn photo_2(PC_3); -int a,b,c,d,e,f,g,h; +int L_up,L_down,L_open,L_close,R_up,R_down,R_open,R_close; //モーターの出力の設定 double moter_power = 0.7; + +//腕上昇下降の関数 +void up() +{ + moter_1=moter_power; + moter_2=0; +} +void down() +{ + moter_1=0; + moter_2=moter_power; +} +void stop() +{ + moter_1=0; + moter_2=0; +} +//フラグ +int up_flag=1; +int down_flag=1; +//フォトトランジスタのフラグ呼び出し +void photo_1_rise() +{ + stop(); + up_flag=0; +} +void photo_1_fall() +{ + up_flag=1; +} +void photo_2_rise() +{ + stop(); + down_flag=0; +} +void photo_2_fall() +{ + down_flag=1; +} int main() { spi.format(8,3); spi.frequency(1000000); +//フォトインタラプタ1 + photo_1.rise(&photo_1_rise); + photo_1.fall(&photo_1_fall); + +//フォトインタラプタ2 + photo_2.rise(&photo_2_rise); + photo_2.fall(&photo_2_fall); while(1) { if(spi.receive()) { - int a = spi.read() & 0b1; - int b = (spi.read() & 0b10)>>1; - int c = (spi.read() & 0b100)>>2; - int d = (spi.read() & 0b1000)>>3; - int e = (spi.read() & 0b10000)>>4; - int f = (spi.read() & 0b100000)>>5; - int g = (spi.read() & 0b1000000)>>6; - int h = (spi.read() & 0b10000000)>>7; - - pc.printf("a:%d\tb:%d\tc:%d\td:%d\te:%d\tf:%d\tg:%d\th:%d\r\n",a,b,c,d,e,f,g,h,spi.read()); + int L_up = spi.read() & 0b1; + int L_down = (spi.read() & 0b10)>>1; + int L_open = (spi.read() & 0b100)>>2; + int L_close = (spi.read() & 0b1000)>>3; + int R_up = (spi.read() & 0b10000)>>4; + int R_down = (spi.read() & 0b100000)>>5; + int R_open = (spi.read() & 0b1000000)>>6; + int R_close = (spi.read() & 0b10000000)>>7; + +//spiの値プリント + pc.printf("L_up:%d\tL_down:%d\tL_open:%d\tL_close:%d\t\nR_up:%d\tR_down:%d\tR_open:%d\tR_close:%d\tsend:%d\r\n",L_up,L_down,L_open,L_close,R_up,R_down,R_open,R_close,spi.read()); } -/*フォトトランジスタ1 - if() {//上で折り返し - moter_1=0; - moter_2=moter_power; - } -//フォトトランジスタ2 - if() {//下で折り返し - moter_1=moter_power; - moter_2=0; - } */ //腕1 上昇下降 - if(a == 1) {//上昇 - moter_1=moter_power; - moter_2=0; - } else if(b == 1) {//下降 - moter_1=0; - moter_2=moter_power; + if(L_up == 1 && up_flag==1) {//上昇 + up(); + } else if(L_down == 1 && down_flag==1) {//下降 + down(); } else { - moter_1=0; - moter_2=0; + stop(); } //腕1 開閉 - if(c == 1) { + if(L_open == 1) { cyli_1=1; - } else if(d == 1) { + } else if(L_close == 1) { cyli_1=0; } //腕2 上昇下降 - if(e == 1) { + if(R_up == 1) { cyli_2=1; - } else if(h == 1) { + } else if(R_down == 1) { cyli_2=0; } //腕2 開閉 - if(f == 1) { + if(R_open == 1) { cyli_3=1; - } else if(g == 1) { + } else if(R_close == 1) { cyli_3=0; } }