Sudharshan Venkatesh
/
rc_car_bluetooth
This contains all the code required to move the RC car using the adafruit bluetooth companion app
main.cpp@0:f71a5a97e19e, 2021-05-04 (annotated)
- Committer:
- svenkatesh
- Date:
- Tue May 04 00:51:48 2021 +0000
- Revision:
- 0:f71a5a97e19e
initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
svenkatesh | 0:f71a5a97e19e | 1 | #include "mbed.h" |
svenkatesh | 0:f71a5a97e19e | 2 | #include "Motor.h" |
svenkatesh | 0:f71a5a97e19e | 3 | |
svenkatesh | 0:f71a5a97e19e | 4 | Motor mr(p23, p19, p20); // pwm, fwd, rev |
svenkatesh | 0:f71a5a97e19e | 5 | Motor ml(p24, p21, p22); // pwm, fwd, rev |
svenkatesh | 0:f71a5a97e19e | 6 | |
svenkatesh | 0:f71a5a97e19e | 7 | float r; |
svenkatesh | 0:f71a5a97e19e | 8 | float l; |
svenkatesh | 0:f71a5a97e19e | 9 | |
svenkatesh | 0:f71a5a97e19e | 10 | |
svenkatesh | 0:f71a5a97e19e | 11 | using namespace mbed; |
svenkatesh | 0:f71a5a97e19e | 12 | |
svenkatesh | 0:f71a5a97e19e | 13 | Serial blue(p9, p10); |
svenkatesh | 0:f71a5a97e19e | 14 | |
svenkatesh | 0:f71a5a97e19e | 15 | |
svenkatesh | 0:f71a5a97e19e | 16 | int main() { |
svenkatesh | 0:f71a5a97e19e | 17 | r = 0; |
svenkatesh | 0:f71a5a97e19e | 18 | l = 0; |
svenkatesh | 0:f71a5a97e19e | 19 | |
svenkatesh | 0:f71a5a97e19e | 20 | char bnum=0; |
svenkatesh | 0:f71a5a97e19e | 21 | char bhit=0; |
svenkatesh | 0:f71a5a97e19e | 22 | while(1) { |
svenkatesh | 0:f71a5a97e19e | 23 | if (blue.getc()=='!') { |
svenkatesh | 0:f71a5a97e19e | 24 | if (blue.getc()=='B') { //button data packet |
svenkatesh | 0:f71a5a97e19e | 25 | bnum = blue.getc(); //button number |
svenkatesh | 0:f71a5a97e19e | 26 | bhit = blue.getc(); //1=hit, 0=release |
svenkatesh | 0:f71a5a97e19e | 27 | if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { //checksum OK? |
svenkatesh | 0:f71a5a97e19e | 28 | switch (bnum) { |
svenkatesh | 0:f71a5a97e19e | 29 | case '5': //button 5 up arrow |
svenkatesh | 0:f71a5a97e19e | 30 | if (bhit=='1') { |
svenkatesh | 0:f71a5a97e19e | 31 | //add hit code here |
svenkatesh | 0:f71a5a97e19e | 32 | printf("fwd"); |
svenkatesh | 0:f71a5a97e19e | 33 | l = 1.0; |
svenkatesh | 0:f71a5a97e19e | 34 | r = 1.0; |
svenkatesh | 0:f71a5a97e19e | 35 | } else { |
svenkatesh | 0:f71a5a97e19e | 36 | //add release code here |
svenkatesh | 0:f71a5a97e19e | 37 | l = 0.0; |
svenkatesh | 0:f71a5a97e19e | 38 | r = 0.0; |
svenkatesh | 0:f71a5a97e19e | 39 | } |
svenkatesh | 0:f71a5a97e19e | 40 | break; |
svenkatesh | 0:f71a5a97e19e | 41 | case '6': //button 6 down arrow |
svenkatesh | 0:f71a5a97e19e | 42 | if (bhit=='1') { |
svenkatesh | 0:f71a5a97e19e | 43 | //add hit code here |
svenkatesh | 0:f71a5a97e19e | 44 | printf("bwd"); |
svenkatesh | 0:f71a5a97e19e | 45 | l = -1.0; |
svenkatesh | 0:f71a5a97e19e | 46 | r = -1.0; |
svenkatesh | 0:f71a5a97e19e | 47 | } else { |
svenkatesh | 0:f71a5a97e19e | 48 | //add release code here |
svenkatesh | 0:f71a5a97e19e | 49 | l = 0.0; |
svenkatesh | 0:f71a5a97e19e | 50 | r = 0.0; |
svenkatesh | 0:f71a5a97e19e | 51 | } |
svenkatesh | 0:f71a5a97e19e | 52 | break; |
svenkatesh | 0:f71a5a97e19e | 53 | case '7': //button 7 left arrow |
svenkatesh | 0:f71a5a97e19e | 54 | if (bhit=='1') { |
svenkatesh | 0:f71a5a97e19e | 55 | //add hit code here |
svenkatesh | 0:f71a5a97e19e | 56 | printf("left"); |
svenkatesh | 0:f71a5a97e19e | 57 | l = 1.0; |
svenkatesh | 0:f71a5a97e19e | 58 | r = -1.0; |
svenkatesh | 0:f71a5a97e19e | 59 | } else { |
svenkatesh | 0:f71a5a97e19e | 60 | //add release code here |
svenkatesh | 0:f71a5a97e19e | 61 | l = 0.0; |
svenkatesh | 0:f71a5a97e19e | 62 | r = 0.0; |
svenkatesh | 0:f71a5a97e19e | 63 | } |
svenkatesh | 0:f71a5a97e19e | 64 | break; |
svenkatesh | 0:f71a5a97e19e | 65 | case '8': //button 8 right arrow |
svenkatesh | 0:f71a5a97e19e | 66 | if (bhit=='1') { |
svenkatesh | 0:f71a5a97e19e | 67 | //add hit code here |
svenkatesh | 0:f71a5a97e19e | 68 | printf("right"); |
svenkatesh | 0:f71a5a97e19e | 69 | l = -1.0; |
svenkatesh | 0:f71a5a97e19e | 70 | r = 1.0; |
svenkatesh | 0:f71a5a97e19e | 71 | } else { |
svenkatesh | 0:f71a5a97e19e | 72 | //add release code here |
svenkatesh | 0:f71a5a97e19e | 73 | l = 0.0; |
svenkatesh | 0:f71a5a97e19e | 74 | r = 0.0; |
svenkatesh | 0:f71a5a97e19e | 75 | } |
svenkatesh | 0:f71a5a97e19e | 76 | break; |
svenkatesh | 0:f71a5a97e19e | 77 | default: |
svenkatesh | 0:f71a5a97e19e | 78 | break; |
svenkatesh | 0:f71a5a97e19e | 79 | } |
svenkatesh | 0:f71a5a97e19e | 80 | } |
svenkatesh | 0:f71a5a97e19e | 81 | } |
svenkatesh | 0:f71a5a97e19e | 82 | } |
svenkatesh | 0:f71a5a97e19e | 83 | mr.speed(l); |
svenkatesh | 0:f71a5a97e19e | 84 | ml.speed(r); |
svenkatesh | 0:f71a5a97e19e | 85 | printf("Left:%f Right:%f\n", l, r); |
svenkatesh | 0:f71a5a97e19e | 86 | } |
svenkatesh | 0:f71a5a97e19e | 87 | } |