手動機アーム、ヌクレオ基盤のプログラムです(9/4)

Dependencies:   RcServo mbed

Fork of a_SPI_slave_arm_shudouki by F^3 RC 2班

main.cpp

Committer:
yoka06
Date:
2017-08-21
Revision:
0:bf93b3e87029
Child:
1:9e95f48ea988

File content as of revision 0:bf93b3e87029:

#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);
        }

    }
}