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

Dependencies:   RcServo mbed

Fork of a_SPI_slave_arm_shudouki by F^3 RC 2班

main.cpp

Committer:
yoka06
Date:
2017-08-25
Revision:
3:f200ae8fea88
Parent:
2:df4d6f7952b6
Child:
4:ea846eabda0e

File content as of revision 3:f200ae8fea88:

#include "mbed.h"
#include "rc-servo.h"
#include "motor_1.h"
#include "motor_2.h"


int a,b,c,d,e,f,g,h;

Serial pc(USBTX,USBRX);
SPISlave spi(PA_7,PA_6,PA_5,PA_4);

RcServo sA(PB_0,500,2400,180);       //PwmOutのpin,minpulsewidth,maxpulsewidth,motionrange
RcServo sB(PA_9,500,2100,180);
RcServo sC(PA_10,500,2100,180);
RcServo sD(PA_11,500,3000,180);
RcServo sE(PA_2,500,2400,180);
RcServo sF(PA_3,500,3000,180);
RcServo sG(PA_8,500,2400,180);
M1 mH(PB_7,PB_6);     //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);
                wait(0.7);
                sA.set_deg(62);
                wait(0.7);
                sB.set_deg(180);
                sC.set_deg(0);
            }



            if(b==1) {
                //  if((ButtonState >> BUTTONTRIANGEL)&1 == 1) { // △で燃料回収
                sB.set_deg(0);
                sC.set_deg(180);
                wait(0.7);
                sA.set_deg(152);
                wait(0.7);
                sD.set_deg(180);
                sE.set_deg(120);

            }

            if(c==1) {
                // if((ButtonState >> BUTTONLEFT)&1 == 1) { // ◀で燃料掃き出し
                mH.move(0.5);
                wait(1);
                mH.move(0);

            }

            if(d==1) {
                // if((ButtonState >> BUTTONCIRCLE)&1 == 1) { // 〇でタンク回収
                sA.set_deg(90);
                sE.set_deg(90);
                wait(0.7);
                sD.set_deg(0);
                wait(0.7);
                sE.set_deg(120);
                wait(0.7);
                sD.set_deg(90);
                wait(0.7);
                sE.set_deg(90);
                sA.set_deg(158);

            }

            if(e==1) {
                // if((ButtonState >> BUTTONRIGHT)&1 == 1) { // ‣でタンク掃き出し
                mH.move(-0.5);
                wait(1);
                mH.move(0);
            }

            if(f==1) {
                //  if((ButtonState >> BUTTONDOWN)&1 == 1) { // ▼で待機
                sF.set_deg(180);
                sG.set_deg(120);
                wait(0.7);
                sA.set_deg(180);
                wait(0.7);
                sD.set_deg(0);

            }
            if(g==1) {
                // if((ButtonState >> BUTTONCROSS)&1 == 1) { // ×でサンプル受け取り
                sG.set_deg(90);
                wait(0.7);
                sF.set_deg(90);

            }
            if(h==1) {
                //  if((ButtonState >> BUTTONSQUARE)&1 == 1) { // □でサンプル設置
                sG.set_deg(120);
            }
        }
        
        pc.printf("a:%d\t b:%d\t c:%d\t d:%d\t e:%d\t f:%d\t g:%d\t h:%d\t send:%d\n",a,b,c,d,e,f,g,h,spi.read());
    }
}