ver CAN

ikarashiMDC.cpp

Committer:
WAT34
Date:
2017-08-28
Revision:
4:d6f0b74affd7
Parent:
2:75153205d6e8
Child:
6:342e3a4f4a8d

File content as of revision 4:d6f0b74affd7:

#include "ikarashiMDC.h"


ikarashiMDC::ikarashiMDC(DigitalOut* serialcontrol,uint8_t taddr,uint8_t tmotorNum,bool tmode,Serial *tserial)
{
    serialControl = serialcontrol;
    serialControl->write(true);
    serial = tserial;
    addr = taddr;
    motorNum = tmotorNum;
    mode = tmode;
}

int ikarashiMDC::setSpeed(const double& speed)
{
    uint8_t data[3],dataSpeed;
    double cropped_speed;
    //Limiter
    if(speed > 1.0)
        cropped_speed = 1.0;
    if(speed < -1.0)
        cropped_speed = -1.0;
    cropped_speed =speed;
    //dataspeed 0~253 neutaral 126
    dataSpeed = ((cropped_speed+1.0)/2.0)*253;
    printf("%d\n",dataSpeed);
    //set sending data
    data[0] = 255; //header
    data[1] = (addr<<5) + motorNum + (mode<<4); //address
    data[2] = dataSpeed;
    //send data
    for(int i=0; i<3; i++) {
        serial->putc(data[i]);
    }
    return 0;
}


void estop(Serial *serial)
{
    for(int i = 0; i<3; i++) {
        serial->putc(255);
    }

}