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

Dependencies:   mbed SoftPWM MotorSMLAP

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?

UserRevisionLine numberNew 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 }