NagaokaRoboticsClub_mbedTeam / Mbed 2 deprecated ikarashiMDCslave

Dependencies:   mbed SoftPWM MotorSMLAP

main.cpp

Committer:
WAT34
Date:
2017-08-12
Revision:
2:de85eb142f32
Parent:
0:4791d1cb39f8
Child:
3:22c5eb74817f

File content as of revision 2:de85eb142f32:

#include "mbed.h"
#include "motorsmlap.h"
motorSmLap motor[]={
    motorSmLap(PB_0,PB_1)
    };
Serial serial(PB_10,PB_11); 
DigitalOut serialControl(PA_8);
Timeout timeout;
uint8_t pointedMotor;
bool addrChecked=false,headerRecieved=false,doubleHeader = false,estop =false;
BusIn addr(PB_4,PB_5,PB_6);
DigitalOut beep(PB_7);
int mode = SM;

void forceStop()
{
    for(int i = 0;i < 4; i++)
    {
        motor[i].setMotorSpeed(0);
    }    
}

void callback(){
    uint8_t data;
    data = serial.getc();
    if(data == 255) //header
    {
        if(headerRecieved)
            doubleHeader =true;
        else if (doubleHeader)
        {
            estop = true;
            return;      
        }     
        addrChecked = false;
        headerRecieved = true;
    }else
    if(headerRecieved && !addrChecked)
    {
        doubleHeader=false;
        if((data>>4) == addr.read())
        {   
            addrChecked =true;
            pointedMotor = data%4;
            serialControl = 1;
            serial.putc(addr.read());
            serialControl = 0;
        }
    }else if(headerRecieved && addrChecked && !estop)
    {
        doubleHeader = false;
        motor[pointedMotor].setMotorSpeed(data/126.0-1.0);
        addrChecked = false;
        headerRecieved = false;
        timeout.attach(&forceStop,0.1);
    }
           
}

int main() {
    beep = 0;
    serialControl = 0;
    serial.attach(&callback);
    
    while(1) {
        if(estop)
            forceStop();
        beep = estop;
    }
}