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); } }