DP / Mbed 2 deprecated RCControlOOPWithThrottle

Dependencies:   mbed

Fork of RCControlOOP by DP

Committer:
mfillinois
Date:
Wed Oct 08 19:29:07 2014 +0000
Revision:
3:b3ec75e9163f
Parent:
2:e9042e88abf1
Child:
5:dda15798ba1f
mostly working, needs cleanup;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mfillinois 0:78e2af20cbf3 1 #include "WirelessMousr.h"
mfillinois 3:b3ec75e9163f 2 #define INSTRUCTION 0
mfillinois 3:b3ec75e9163f 3 #define VELOCITY 1
mfillinois 0:78e2af20cbf3 4
mfillinois 0:78e2af20cbf3 5 WirelessMousr::WirelessMousr() : Mousr(), pc(p28, p27) {}
mfillinois 3:b3ec75e9163f 6 //WirelessMousr::WirelessMousr() : Mousr(), pc(USBTX, USBRX) {}
mfillinois 0:78e2af20cbf3 7
mfillinois 0:78e2af20cbf3 8 int WirelessMousr::init()
mfillinois 0:78e2af20cbf3 9 {
mfillinois 0:78e2af20cbf3 10 pc.attach(this,&WirelessMousr::rxCallback);
mfillinois 0:78e2af20cbf3 11 wait(0.1);
mfillinois 0:78e2af20cbf3 12 return 0;
mfillinois 0:78e2af20cbf3 13 }
mfillinois 0:78e2af20cbf3 14
mfillinois 0:78e2af20cbf3 15 void WirelessMousr::rxCallback()
mfillinois 0:78e2af20cbf3 16 {
mfillinois 3:b3ec75e9163f 17 char message = this->pc.getc(); // read RX character, clearing interrupt
mfillinois 3:b3ec75e9163f 18 static char oldstate;
mfillinois 3:b3ec75e9163f 19 char newstate;
mfillinois 3:b3ec75e9163f 20 float pwmval;
mfillinois 3:b3ec75e9163f 21 int numerator;
mfillinois 3:b3ec75e9163f 22 float denominator;
mfillinois 3:b3ec75e9163f 23 this->pc.putc(message);
mfillinois 3:b3ec75e9163f 24 this->pc.putc('\n');
mfillinois 3:b3ec75e9163f 25 newstate = message;
mfillinois 0:78e2af20cbf3 26
mfillinois 3:b3ec75e9163f 27
mfillinois 3:b3ec75e9163f 28 if ((oldstate == 'l') || (oldstate == 'r'))
mfillinois 3:b3ec75e9163f 29 {
mfillinois 3:b3ec75e9163f 30 this->pc.putc('V');
mfillinois 3:b3ec75e9163f 31
mfillinois 3:b3ec75e9163f 32 numerator = ((int)message - 128);
mfillinois 3:b3ec75e9163f 33 denominator = (float) 128;
mfillinois 3:b3ec75e9163f 34 pwmval = ((float) numerator) / denominator;
mfillinois 3:b3ec75e9163f 35 if (oldstate == 'l')
mfillinois 3:b3ec75e9163f 36 {
mfillinois 3:b3ec75e9163f 37 this->lefttire(pwmval);
mfillinois 3:b3ec75e9163f 38 this->pc.putc('L');
mfillinois 3:b3ec75e9163f 39 this->pc.putc('L');
mfillinois 3:b3ec75e9163f 40 }
mfillinois 3:b3ec75e9163f 41 else if (oldstate == 'r')
mfillinois 3:b3ec75e9163f 42 {
mfillinois 3:b3ec75e9163f 43 this->righttire(pwmval);
mfillinois 3:b3ec75e9163f 44 this->pc.putc('R');
mfillinois 3:b3ec75e9163f 45 this->pc.putc('R');
mfillinois 3:b3ec75e9163f 46 }
mfillinois 3:b3ec75e9163f 47 }
mfillinois 3:b3ec75e9163f 48 else
mfillinois 3:b3ec75e9163f 49 {
mfillinois 3:b3ec75e9163f 50 switch(message)
mfillinois 3:b3ec75e9163f 51 {
mfillinois 3:b3ec75e9163f 52 case 'q': //STOP
mfillinois 3:b3ec75e9163f 53 this->left90();
mfillinois 3:b3ec75e9163f 54 this->pc.putc('L');
mfillinois 3:b3ec75e9163f 55 this->pc.putc('9');
mfillinois 3:b3ec75e9163f 56 this->pc.putc('0');
mfillinois 3:b3ec75e9163f 57 this->pc.putc('\n');
mfillinois 3:b3ec75e9163f 58 break;
mfillinois 3:b3ec75e9163f 59 case 'a': //STRAIGHT
mfillinois 3:b3ec75e9163f 60 this->left180();
mfillinois 3:b3ec75e9163f 61 this->pc.putc('L');
mfillinois 3:b3ec75e9163f 62 this->pc.putc('8');
mfillinois 3:b3ec75e9163f 63 this->pc.putc('0');
mfillinois 3:b3ec75e9163f 64 this->pc.putc('\n');
mfillinois 3:b3ec75e9163f 65 break;
mfillinois 3:b3ec75e9163f 66 case 'e': //STRAIGHT SLOW
mfillinois 3:b3ec75e9163f 67 this->right90();
mfillinois 3:b3ec75e9163f 68 this->pc.putc('R');
mfillinois 3:b3ec75e9163f 69 this->pc.putc('9');
mfillinois 3:b3ec75e9163f 70 this->pc.putc('0');
mfillinois 3:b3ec75e9163f 71 this->pc.putc('\n');
mfillinois 3:b3ec75e9163f 72 break;
mfillinois 3:b3ec75e9163f 73 case 'd': //ROTATE LEFT MEDIUM
mfillinois 3:b3ec75e9163f 74 this->right180();
mfillinois 3:b3ec75e9163f 75 this->pc.putc('R');
mfillinois 3:b3ec75e9163f 76 this->pc.putc('8');
mfillinois 3:b3ec75e9163f 77 this->pc.putc('0');
mfillinois 3:b3ec75e9163f 78 this->pc.putc('\n');
mfillinois 3:b3ec75e9163f 79 break;
mfillinois 3:b3ec75e9163f 80 case 's': //ROTATE RIGHT MEDIUM
mfillinois 3:b3ec75e9163f 81 this->stop();
mfillinois 3:b3ec75e9163f 82 this->pc.putc('S');
mfillinois 3:b3ec75e9163f 83 this->pc.putc('T');
mfillinois 3:b3ec75e9163f 84 this->pc.putc('P');
mfillinois 3:b3ec75e9163f 85 this->pc.putc('\n'); break;
mfillinois 3:b3ec75e9163f 86 }
mfillinois 3:b3ec75e9163f 87 }
mfillinois 3:b3ec75e9163f 88 // }
mfillinois 3:b3ec75e9163f 89
mfillinois 3:b3ec75e9163f 90 oldstate = newstate;
mfillinois 3:b3ec75e9163f 91
mfillinois 3:b3ec75e9163f 92 }