PAC: Avionics Team / Mbed 2 deprecated airbrake_motor

Dependencies:   mbed QEI

Fork of airbrake_motor by Zheyuan Xie

Committer:
zxie
Date:
Sat Jun 08 20:50:14 2019 +0000
Revision:
0:9bfe3a86225a
publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zxie 0:9bfe3a86225a 1 #include "QEI.h"
zxie 0:9bfe3a86225a 2
zxie 0:9bfe3a86225a 3 Serial pc(USBTX, USBRX);
zxie 0:9bfe3a86225a 4 RawSerial smc(PC_6, PA_12);
zxie 0:9bfe3a86225a 5 //Use X2 encoding by default.
zxie 0:9bfe3a86225a 6 QEI wheel (PC_8, PC_5, NC, 624);
zxie 0:9bfe3a86225a 7
zxie 0:9bfe3a86225a 8 Ticker ctrl_tick;
zxie 0:9bfe3a86225a 9
zxie 0:9bfe3a86225a 10 int tgt = 5000;
zxie 0:9bfe3a86225a 11
zxie 0:9bfe3a86225a 12 void ctrl_event() {
zxie 0:9bfe3a86225a 13 static int rot = 0;
zxie 0:9bfe3a86225a 14 static int output = 0;
zxie 0:9bfe3a86225a 15 rot = wheel.getPulses();
zxie 0:9bfe3a86225a 16 pc.printf("Pulses is: %i\n\r", rot);
zxie 0:9bfe3a86225a 17 int err = tgt - rot;
zxie 0:9bfe3a86225a 18 if (err > 0) {
zxie 0:9bfe3a86225a 19 err = err;
zxie 0:9bfe3a86225a 20 output = (err * 0.1);
zxie 0:9bfe3a86225a 21 if (output > 127) output = 127;
zxie 0:9bfe3a86225a 22 smc.putc(0x8A);
zxie 0:9bfe3a86225a 23 smc.putc((uint8_t)output);
zxie 0:9bfe3a86225a 24 } else {
zxie 0:9bfe3a86225a 25 err = -err;
zxie 0:9bfe3a86225a 26 output = (err * 0.1);
zxie 0:9bfe3a86225a 27 if (output > 127) output = 127;
zxie 0:9bfe3a86225a 28 smc.putc(0x89);
zxie 0:9bfe3a86225a 29 smc.putc(output);
zxie 0:9bfe3a86225a 30 }
zxie 0:9bfe3a86225a 31 }
zxie 0:9bfe3a86225a 32
zxie 0:9bfe3a86225a 33 int main() {
zxie 0:9bfe3a86225a 34 pc.baud(115200);
zxie 0:9bfe3a86225a 35 smc.baud(115200);
zxie 0:9bfe3a86225a 36 ctrl_tick.attach(&ctrl_event, 0.1);
zxie 0:9bfe3a86225a 37 while(1){
zxie 0:9bfe3a86225a 38 wait(5);
zxie 0:9bfe3a86225a 39 if (tgt != 0) tgt = 0;
zxie 0:9bfe3a86225a 40 else tgt = 5000;
zxie 0:9bfe3a86225a 41 }
zxie 0:9bfe3a86225a 42 }