ikarashiMDCslaveの改良(?)版 スピード制御の分解能が2byte
Dependencies: mbed SoftPWM MotorSMLAP
main.cpp@1:d802a9793080, 2017-08-10 (annotated)
- Committer:
- eil4nyqn
- Date:
- Thu Aug 10 07:16:39 2017 +0000
- Revision:
- 1:d802a9793080
- Parent:
- 0:4791d1cb39f8
- Child:
- 3:22c5eb74817f
worked
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
WAT34 | 0:4791d1cb39f8 | 1 | #include "mbed.h" |
WAT34 | 0:4791d1cb39f8 | 2 | #include "motorsmlap.h" |
WAT34 | 0:4791d1cb39f8 | 3 | motorSmLap motor[]={ |
eil4nyqn | 1:d802a9793080 | 4 | motorSmLap(PA_2,PB_15), |
eil4nyqn | 1:d802a9793080 | 5 | // motorSmLap(,NULL), |
eil4nyqn | 1:d802a9793080 | 6 | // motorSmLap(NULL,NULL), |
eil4nyqn | 1:d802a9793080 | 7 | // motorSmLap(NULL,NULL) |
WAT34 | 0:4791d1cb39f8 | 8 | }; |
WAT34 | 0:4791d1cb39f8 | 9 | Serial serial(PB_10,PB_11); |
WAT34 | 0:4791d1cb39f8 | 10 | DigitalOut serialControl(PA_8); |
eil4nyqn | 1:d802a9793080 | 11 | DigitalOut addrChecked(PB_13); |
eil4nyqn | 1:d802a9793080 | 12 | DigitalOut headerRecieved(PB_14); |
WAT34 | 0:4791d1cb39f8 | 13 | Timeout timeout; |
WAT34 | 0:4791d1cb39f8 | 14 | uint8_t pointedMotor; |
eil4nyqn | 1:d802a9793080 | 15 | |
WAT34 | 0:4791d1cb39f8 | 16 | BusIn addr(PB_4,PB_5,PB_6); |
WAT34 | 0:4791d1cb39f8 | 17 | DigitalOut beep(PB_7); |
WAT34 | 0:4791d1cb39f8 | 18 | int mode = CS; |
eil4nyqn | 1:d802a9793080 | 19 | DigitalOut led(PB_12); |
WAT34 | 0:4791d1cb39f8 | 20 | |
WAT34 | 0:4791d1cb39f8 | 21 | void forceStop() |
WAT34 | 0:4791d1cb39f8 | 22 | { |
eil4nyqn | 1:d802a9793080 | 23 | for(int i = 0;i < 1; i++) |
WAT34 | 0:4791d1cb39f8 | 24 | { |
WAT34 | 0:4791d1cb39f8 | 25 | motor[i].setMotorSpeed(0); |
WAT34 | 0:4791d1cb39f8 | 26 | } |
WAT34 | 0:4791d1cb39f8 | 27 | } |
WAT34 | 0:4791d1cb39f8 | 28 | void callback(){ |
eil4nyqn | 1:d802a9793080 | 29 | led = !led; |
WAT34 | 0:4791d1cb39f8 | 30 | uint8_t data; |
WAT34 | 0:4791d1cb39f8 | 31 | data = serial.getc(); |
WAT34 | 0:4791d1cb39f8 | 32 | if(data == 255) //header |
WAT34 | 0:4791d1cb39f8 | 33 | { |
WAT34 | 0:4791d1cb39f8 | 34 | addrChecked = false; |
WAT34 | 0:4791d1cb39f8 | 35 | headerRecieved = true; |
WAT34 | 0:4791d1cb39f8 | 36 | }else |
WAT34 | 0:4791d1cb39f8 | 37 | if(headerRecieved && !addrChecked) |
WAT34 | 0:4791d1cb39f8 | 38 | { |
WAT34 | 0:4791d1cb39f8 | 39 | if((data>>4) == addr.read()) |
WAT34 | 0:4791d1cb39f8 | 40 | { |
WAT34 | 0:4791d1cb39f8 | 41 | addrChecked =true; |
WAT34 | 0:4791d1cb39f8 | 42 | pointedMotor = data%4; |
WAT34 | 0:4791d1cb39f8 | 43 | serialControl = 1; |
WAT34 | 0:4791d1cb39f8 | 44 | serial.putc(addr.read()); |
WAT34 | 0:4791d1cb39f8 | 45 | serialControl = 0; |
WAT34 | 0:4791d1cb39f8 | 46 | } |
WAT34 | 0:4791d1cb39f8 | 47 | }else if(headerRecieved && addrChecked) |
WAT34 | 0:4791d1cb39f8 | 48 | { |
WAT34 | 0:4791d1cb39f8 | 49 | motor[pointedMotor].setMotorSpeed(data/126.0-1.0); |
WAT34 | 0:4791d1cb39f8 | 50 | addrChecked = false; |
WAT34 | 0:4791d1cb39f8 | 51 | headerRecieved = false; |
eil4nyqn | 1:d802a9793080 | 52 | //timeout.attach(&forceStop,0.1); |
WAT34 | 0:4791d1cb39f8 | 53 | } |
WAT34 | 0:4791d1cb39f8 | 54 | |
WAT34 | 0:4791d1cb39f8 | 55 | } |
WAT34 | 0:4791d1cb39f8 | 56 | |
WAT34 | 0:4791d1cb39f8 | 57 | int main() { |
eil4nyqn | 1:d802a9793080 | 58 | addrChecked=false,headerRecieved=false; |
eil4nyqn | 1:d802a9793080 | 59 | motor[0].setMotorSpeed(0); |
eil4nyqn | 1:d802a9793080 | 60 | serial.baud(115200); |
eil4nyqn | 1:d802a9793080 | 61 | addr.mode(PullUp); |
WAT34 | 0:4791d1cb39f8 | 62 | serialControl = 0; |
WAT34 | 0:4791d1cb39f8 | 63 | serial.attach(&callback); |
WAT34 | 0:4791d1cb39f8 | 64 | |
WAT34 | 0:4791d1cb39f8 | 65 | while(1) { |
eil4nyqn | 1:d802a9793080 | 66 | //led = !led; |
eil4nyqn | 1:d802a9793080 | 67 | wait(1); |
WAT34 | 0:4791d1cb39f8 | 68 | } |
WAT34 | 0:4791d1cb39f8 | 69 | } |