Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of RCControlOOP by
WirelessMousr.cpp@3:b3ec75e9163f, 2014-10-08 (annotated)
- 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?
User | Revision | Line number | New 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 | } |