yoka konishi
/
a1_SPI_slave_arm_shudouki
手動機アーム、ヌクレオ基盤のプログラムです(9/4)
Fork of a_SPI_slave_arm_shudouki by
Diff: main.cpp
- Revision:
- 0:bf93b3e87029
- Child:
- 1:9e95f48ea988
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Aug 21 08:46:50 2017 +0000 @@ -0,0 +1,123 @@ +#include "mbed.h" +#include "rc-servo.h" +#include "motor_1.h" +#include "motor_2.h" + + +int a,b,c,d,e,f,g,h; + +SPISlave spi(PA_7,PA_6,PA_5,PA_4); + +RcServo sA(PA_1,500,2400,180); //PwmOutのpin,minpulsewidth,maxpulsewidth,motionrange +RcServo sB(PB_4,500,2100,180); +RcServo sC(PB_5,500,2100,180); +RcServo sD(PA_2,500,3000,180); +RcServo sE(PA_11,500,2400,180); +RcServo sF(PA_3,500,3000,180); +RcServo sG(PF_0,500,2400,180); +M1 mH(PA_9,PA_10); //pwm*2 + + + + + +int main() +{ + + spi.format(16,3); + spi.frequency(1000000); + + while(1) { + if (spi.receive()) { + + a=spi.read() & 0b1; + b=(spi.read() & 0b10)>>1; + c=(spi.read() & 0b100)>>2; + d=(spi.read() & 0b1000)>>3; + e=(spi.read() & 0b10000)>>4; + f=(spi.read() & 0b100000)>>5; + g=(spi.read() & 0b1000000)>>6; + h=(spi.read() & 0b10000000)>>7; + + } + + if(a==1) { + // if((ButtonState >> BUTTONUP)&1 == 1) { // ▲で燃料用アーム展開 + sD.set_deg(90); + if(sD.set_deg(90)) { + sA.set_deg(62); + } + if(sD.set_deg(90) && sA.set_deg(62)) { + sB.set_deg(180); + sC.set_deg(0); + } + + } + + if(b==1) { + // if((ButtonState >> BUTTONTRIANGEL)&1 == 1) { // △で燃料回収 + sB.set_deg(0); + sC.set_deg(180); + if(sB.set_deg(0) && sC.set_deg(180)) { + sA.set_deg(152); + } + if(sA.set_deg(152) && sB.set_deg(0) && sC.set_deg(180)) { + sD.set_deg(180); + sE.set_deg(120); + } + } + + if(c==1) { + // if((ButtonState >> BUTTONLEFT)&1 == 1) { // ◀で燃料掃き出し + // ??保留 + } + + if(d==1) { + // if((ButtonState >> BUTTONCIRCLE)&1 == 1) { // 〇でタンク回収 + sA.set_deg(90); + sE.set_deg(90); + if(sA.set_deg(90) && sE.set_deg(90)) { + sD.set_deg(0); + } + if(sD.set_deg(0) && sA.set_deg(90) && sE.set_deg(90)) { + sE.set_deg(120); + } + if(sE.set_deg(120) && sD.set_deg(0) && sA.set_deg(90) && sE.set_deg(90)) { + sD.set_deg(90); + } + if(sD.set_deg(90) && sE.set_deg(120) && sD.set_deg(0) && sA.set_deg(90) && sE.set_deg(90)) { + sE.set_deg(90); + sA.set_deg(158); + } + } + + if(e==1) { + // if((ButtonState >> BUTTONRIGHT)&1 == 1) { // ‣でタンク掃き出し + //??保留 + } + + if(f==1) { + // if((ButtonState >> BUTTONDOWN)&1 == 1) { // ▼で待機 + sF.set_deg(180); + sG.set_deg(120); + if(sF.set_deg(180) && sG.set_deg(120)) { + sA.set_deg(180); + } + if(sA.set_deg(180) && sF.set_deg(180) && sG.set_deg(120)) { + sD.set_deg(0); + } + } + if(g==1) { + // if((ButtonState >> BUTTONCROSS)&1 == 1) { // ×でサンプル受け取り + sG.set_deg(90); + if(sG.set_deg(90)) { + sF.set_deg(90); + } + } + if(h==1) { + // if((ButtonState >> BUTTONSQUARE)&1 == 1) { // □でサンプル設置 + sG.set_deg(120); + } + + } +}