ikarashiMDCの2byteバージョン

Dependents:   NHK2019_mae_v6 NHK2019_main_v6 NHK2019_usiro_v6 2019BSyudo ... more

ikarashiMDC.cpp

Committer:
skouki
Date:
2019-09-02
Revision:
16:f1b2b34d09b3
Parent:
15:3ae22f7861b4
Child:
17:97bb662f1e1f

File content as of revision 16:f1b2b34d09b3:

#include "ikarashiMDC.h"


ikarashiMDC::ikarashiMDC(uint8_t taddr,uint8_t tmotorNum,bool tmode,Serial *tserial)
{
    serial = tserial;
    addr = taddr;
    motorNum = tmotorNum;
    mode = tmode;
    braking = true;
}

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


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

}