Daisuke Nishii / Mbed 2 deprecated RobotGrandPrix

Dependencies:   QEI mbed

global.cpp

Committer:
Nishii
Date:
2014-03-05
Revision:
0:ae5d19a716e1

File content as of revision 0:ae5d19a716e1:

/* global.cpp */

#include "global.h"

/**
 * Classes
 */
PwmOut mortar_A(p21);   //aori
PwmOut mortar_U(p22);   //UFO up down
PwmOut mortar_M(p23);   //merry-go-round
PwmOut mortar_S(p24);   //yosou

DigitalOut UFO(p6);     //UFO  ON:close, OFF:open
DigitalOut RISE1(p5);   //rise
DigitalOut RISE2(p7);
DigitalOut RISE3(p8);

DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

DigitalIn MS_A(p20);    //microswitch
DigitalIn MS_U(p19);
DigitalIn MS_M(p18);
DigitalIn MS_S(p17);

QEI hight(p29, p30, NC, 100);

Serial pc(USBTX, USBRX);    //serialport

/**
 * Parameters
 */
double duty_A=0.13, dutyr_A=0.42, dutyu_U=0.30, dutyd_U=0.65, duty_M=0.30, dutyr_M=0.70, duty_S=0.40, dutyr_S=0.60;
double speed[4] = {STOP, STOP, STOP, STOP};
double wait_A=0.45, wait_U=0.2, wait_M=0.2, wait_S=0.15;

bool STOP_STATUS=true;  //false:stop

/**
 * Functions
 */
void led_all(int s){
    if ( s==ON ){
        led1=led2=led3=led4=ON;
    }
    else if ( s==OFF ) {
        led1=led2=led3=led4=OFF;
    }
}

void setspeed( double t_speed, int x ) {
    double step, waittime;
    if(speed[x]<t_speed) {
        while (speed[x]<t_speed) {
            if(t_speed-speed[x]>0.05)   step = 0.05;
            else                        step = 0.01;
            speed[x]+=step;
            switch(x) {
                case _A_:
                    waittime = wait_A;
                    mortar_A = speed[x];
                    break;
                case _U_:
                    waittime = wait_U;
                    mortar_U = speed[x];
                    break;
                case _M_:
                    waittime = wait_M;
                    mortar_M = speed[x];
                    break;
                case _S_:
                    waittime = wait_S;
                    mortar_S = speed[x];
                    break;
            }
            wait(waittime);
        }
    }
    else {
        while(speed[x]>t_speed) {
            if(speed[x]-t_speed>0.05)   step = 0.05;
            else                        step = 0.01;
            speed[x]-=step;
            switch(x) {
                case _A_:
                    waittime = wait_A;
                    mortar_A = speed[x];
                    break;
                case _U_:
                    waittime = wait_U;
                    mortar_U = speed[x];
                    break;
                case _M_:
                    waittime = wait_M;
                    mortar_M = speed[x];
                    break;
                case _S_:
                    waittime = wait_S;
                    mortar_S = speed[x];
                    break;
            }
            wait(waittime);
        }
    }
}

void ALLSTOP() {
    setspeed(STOP, _A_);
    setspeed(STOP, _U_);
    setspeed(STOP, _M_);
    setspeed(STOP, _S_);
}