ikarashiMDCslaveの改良(?)版 スピード制御の分解能が2byte

Dependencies:   mbed SoftPWM MotorSMLAP

main.cpp

Committer:
eil4nyqn
Date:
2017-08-10
Revision:
1:d802a9793080
Parent:
0:4791d1cb39f8
Child:
3:22c5eb74817f

File content as of revision 1:d802a9793080:

#include "mbed.h"
#include "motorsmlap.h"
motorSmLap motor[]={
    motorSmLap(PA_2,PB_15),
//    motorSmLap(,NULL),
//    motorSmLap(NULL,NULL),
//    motorSmLap(NULL,NULL)
    };
Serial serial(PB_10,PB_11); 
DigitalOut serialControl(PA_8);
DigitalOut addrChecked(PB_13);
DigitalOut headerRecieved(PB_14);
Timeout timeout;
uint8_t pointedMotor;

BusIn addr(PB_4,PB_5,PB_6);
DigitalOut beep(PB_7);
int mode = CS;
DigitalOut led(PB_12);

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

int main() {
    addrChecked=false,headerRecieved=false;
    motor[0].setMotorSpeed(0);
    serial.baud(115200);
    addr.mode(PullUp);
    serialControl = 0;
    serial.attach(&callback);
       
    while(1) {
        //led = !led;
        wait(1);
    }
}