gets BLE commands, displays turn and stop signals
Dependencies: NeoStrip_edit2 mbed
main.cpp@2:d81dd88ca8a1, 2014-04-26 (annotated)
- Committer:
- rhodes42
- Date:
- Sat Apr 26 18:01:38 2014 +0000
- Revision:
- 2:d81dd88ca8a1
- Parent:
- 1:2718fc5af65d
N=128;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rhodes42 | 0:c78d0ce17cf3 | 1 | #include "mbed.h" |
rhodes42 | 0:c78d0ce17cf3 | 2 | #include "NeoStrip.h" |
rhodes42 | 0:c78d0ce17cf3 | 3 | #include "Arrows.h" |
rhodes42 | 0:c78d0ce17cf3 | 4 | |
rhodes42 | 0:c78d0ce17cf3 | 5 | #define TURN_LEFT 76 |
rhodes42 | 0:c78d0ce17cf3 | 6 | #define TURN_RIGHT 86 |
rhodes42 | 0:c78d0ce17cf3 | 7 | #define STOP 96 |
rhodes42 | 0:c78d0ce17cf3 | 8 | |
rhodes42 | 0:c78d0ce17cf3 | 9 | |
rhodes42 | 2:d81dd88ca8a1 | 10 | #define N 128 |
rhodes42 | 0:c78d0ce17cf3 | 11 | #define PATTERNS 4 |
rhodes42 | 0:c78d0ce17cf3 | 12 | |
rhodes42 | 0:c78d0ce17cf3 | 13 | |
rhodes42 | 0:c78d0ce17cf3 | 14 | void patternLeft(); |
rhodes42 | 0:c78d0ce17cf3 | 15 | void patternRight(); |
rhodes42 | 0:c78d0ce17cf3 | 16 | void patternStop(); |
rhodes42 | 0:c78d0ce17cf3 | 17 | void patternNone(); |
rhodes42 | 0:c78d0ce17cf3 | 18 | |
rhodes42 | 0:c78d0ce17cf3 | 19 | // array of function pointers to the various patterns |
rhodes42 | 0:c78d0ce17cf3 | 20 | void (*patterns[])(void) = {&patternLeft, &patternRight, &patternStop, &patternNone}; |
rhodes42 | 0:c78d0ce17cf3 | 21 | |
rhodes42 | 0:c78d0ce17cf3 | 22 | Serial pc(USBTX, USBRX); // tx, rx |
rhodes42 | 0:c78d0ce17cf3 | 23 | Serial device(p13,p14); //serial connection for BLE chip, tx,rx |
rhodes42 | 0:c78d0ce17cf3 | 24 | |
rhodes42 | 0:c78d0ce17cf3 | 25 | NeoStrip strip(p18, N); |
rhodes42 | 0:c78d0ce17cf3 | 26 | |
rhodes42 | 0:c78d0ce17cf3 | 27 | int main() { |
rhodes42 | 0:c78d0ce17cf3 | 28 | unsigned char command; |
rhodes42 | 0:c78d0ce17cf3 | 29 | int pattern = 3; |
rhodes42 | 0:c78d0ce17cf3 | 30 | //set mbed baud rate the same as BLE mini baud rate |
rhodes42 | 0:c78d0ce17cf3 | 31 | device.baud(57600); |
rhodes42 | 0:c78d0ce17cf3 | 32 | |
rhodes42 | 0:c78d0ce17cf3 | 33 | strip.setBrightness(.1); |
rhodes42 | 0:c78d0ce17cf3 | 34 | |
rhodes42 | 0:c78d0ce17cf3 | 35 | //simple polling demonstrate serial communication |
rhodes42 | 0:c78d0ce17cf3 | 36 | while(1) { |
rhodes42 | 0:c78d0ce17cf3 | 37 | |
rhodes42 | 0:c78d0ce17cf3 | 38 | if(device.readable()) { |
rhodes42 | 0:c78d0ce17cf3 | 39 | command=device.getc(); |
rhodes42 | 0:c78d0ce17cf3 | 40 | switch(command){ |
rhodes42 | 0:c78d0ce17cf3 | 41 | case TURN_LEFT: |
rhodes42 | 0:c78d0ce17cf3 | 42 | pattern = 0; |
rhodes42 | 0:c78d0ce17cf3 | 43 | break; |
rhodes42 | 0:c78d0ce17cf3 | 44 | case TURN_RIGHT: |
rhodes42 | 0:c78d0ce17cf3 | 45 | pattern = 1; |
rhodes42 | 0:c78d0ce17cf3 | 46 | break; |
rhodes42 | 0:c78d0ce17cf3 | 47 | case STOP: |
rhodes42 | 0:c78d0ce17cf3 | 48 | pattern = 2; |
rhodes42 | 0:c78d0ce17cf3 | 49 | break; |
rhodes42 | 0:c78d0ce17cf3 | 50 | default: |
rhodes42 | 0:c78d0ce17cf3 | 51 | break; |
rhodes42 | 0:c78d0ce17cf3 | 52 | } |
rhodes42 | 0:c78d0ce17cf3 | 53 | |
rhodes42 | 0:c78d0ce17cf3 | 54 | //blink 5 times |
rhodes42 | 0:c78d0ce17cf3 | 55 | patterns[pattern](); |
rhodes42 | 0:c78d0ce17cf3 | 56 | strip.write(); |
rhodes42 | 0:c78d0ce17cf3 | 57 | wait_ms(500); |
rhodes42 | 0:c78d0ce17cf3 | 58 | patterns[3](); |
rhodes42 | 0:c78d0ce17cf3 | 59 | strip.write(); |
rhodes42 | 0:c78d0ce17cf3 | 60 | wait_ms(500); |
rhodes42 | 0:c78d0ce17cf3 | 61 | patterns[pattern](); |
rhodes42 | 0:c78d0ce17cf3 | 62 | strip.write(); |
rhodes42 | 0:c78d0ce17cf3 | 63 | wait_ms(500); |
rhodes42 | 0:c78d0ce17cf3 | 64 | patterns[3](); |
rhodes42 | 0:c78d0ce17cf3 | 65 | strip.write(); |
rhodes42 | 0:c78d0ce17cf3 | 66 | wait_ms(500); |
rhodes42 | 0:c78d0ce17cf3 | 67 | patterns[pattern](); |
rhodes42 | 0:c78d0ce17cf3 | 68 | strip.write(); |
rhodes42 | 0:c78d0ce17cf3 | 69 | wait_ms(500); |
rhodes42 | 0:c78d0ce17cf3 | 70 | patterns[3](); |
rhodes42 | 0:c78d0ce17cf3 | 71 | strip.write(); |
rhodes42 | 0:c78d0ce17cf3 | 72 | wait_ms(500); |
rhodes42 | 0:c78d0ce17cf3 | 73 | patterns[pattern](); |
rhodes42 | 0:c78d0ce17cf3 | 74 | strip.write(); |
rhodes42 | 0:c78d0ce17cf3 | 75 | wait_ms(500); |
rhodes42 | 0:c78d0ce17cf3 | 76 | patterns[3](); |
rhodes42 | 0:c78d0ce17cf3 | 77 | strip.write(); |
rhodes42 | 0:c78d0ce17cf3 | 78 | |
rhodes42 | 0:c78d0ce17cf3 | 79 | } else { |
rhodes42 | 0:c78d0ce17cf3 | 80 | pattern = 3; |
rhodes42 | 0:c78d0ce17cf3 | 81 | } |
rhodes42 | 0:c78d0ce17cf3 | 82 | |
rhodes42 | 0:c78d0ce17cf3 | 83 | //for (int i = 0; i < 3; i++) |
rhodes42 | 0:c78d0ce17cf3 | 84 | //{ |
rhodes42 | 0:c78d0ce17cf3 | 85 | // pattern = i; |
rhodes42 | 0:c78d0ce17cf3 | 86 | |
rhodes42 | 0:c78d0ce17cf3 | 87 | |
rhodes42 | 0:c78d0ce17cf3 | 88 | |
rhodes42 | 0:c78d0ce17cf3 | 89 | //} |
rhodes42 | 0:c78d0ce17cf3 | 90 | } |
rhodes42 | 0:c78d0ce17cf3 | 91 | |
rhodes42 | 0:c78d0ce17cf3 | 92 | } |
rhodes42 | 0:c78d0ce17cf3 | 93 | |
rhodes42 | 0:c78d0ce17cf3 | 94 | |
rhodes42 | 0:c78d0ce17cf3 | 95 | void patternLeft() |
rhodes42 | 0:c78d0ce17cf3 | 96 | { |
rhodes42 | 0:c78d0ce17cf3 | 97 | for (int i = 0; i < N; i++) |
rhodes42 | 0:c78d0ce17cf3 | 98 | { |
rhodes42 | 2:d81dd88ca8a1 | 99 | if (maskLeft128[i] == 1) |
rhodes42 | 0:c78d0ce17cf3 | 100 | strip.setPixel(i, 0, 0xff, 0); |
rhodes42 | 0:c78d0ce17cf3 | 101 | else |
rhodes42 | 0:c78d0ce17cf3 | 102 | strip.setPixel(i, 0); |
rhodes42 | 0:c78d0ce17cf3 | 103 | } |
rhodes42 | 0:c78d0ce17cf3 | 104 | } |
rhodes42 | 0:c78d0ce17cf3 | 105 | |
rhodes42 | 0:c78d0ce17cf3 | 106 | void patternRight() |
rhodes42 | 0:c78d0ce17cf3 | 107 | { |
rhodes42 | 0:c78d0ce17cf3 | 108 | for (int i = 0; i < N; i++) |
rhodes42 | 0:c78d0ce17cf3 | 109 | { |
rhodes42 | 2:d81dd88ca8a1 | 110 | if (maskRight128[i] == 1) |
rhodes42 | 0:c78d0ce17cf3 | 111 | strip.setPixel(i, 0, 0xff, 0); |
rhodes42 | 0:c78d0ce17cf3 | 112 | else |
rhodes42 | 0:c78d0ce17cf3 | 113 | strip.setPixel(i, 0); |
rhodes42 | 0:c78d0ce17cf3 | 114 | } |
rhodes42 | 0:c78d0ce17cf3 | 115 | } |
rhodes42 | 0:c78d0ce17cf3 | 116 | |
rhodes42 | 0:c78d0ce17cf3 | 117 | void patternStop() |
rhodes42 | 0:c78d0ce17cf3 | 118 | { |
rhodes42 | 0:c78d0ce17cf3 | 119 | for (int i = 0; i < N; i++) |
rhodes42 | 0:c78d0ce17cf3 | 120 | { |
rhodes42 | 2:d81dd88ca8a1 | 121 | if (maskStop128[i] == 1) |
rhodes42 | 0:c78d0ce17cf3 | 122 | strip.setPixel(i, 0xff, 0, 0); |
rhodes42 | 0:c78d0ce17cf3 | 123 | else |
rhodes42 | 0:c78d0ce17cf3 | 124 | strip.setPixel(i, 0); |
rhodes42 | 0:c78d0ce17cf3 | 125 | } |
rhodes42 | 0:c78d0ce17cf3 | 126 | } |
rhodes42 | 0:c78d0ce17cf3 | 127 | |
rhodes42 | 0:c78d0ce17cf3 | 128 | void patternNone() |
rhodes42 | 0:c78d0ce17cf3 | 129 | { |
rhodes42 | 0:c78d0ce17cf3 | 130 | for (int i = 0; i < N; i++) |
rhodes42 | 0:c78d0ce17cf3 | 131 | { |
rhodes42 | 0:c78d0ce17cf3 | 132 | strip.setPixel(i, 0); |
rhodes42 | 0:c78d0ce17cf3 | 133 | } |
rhodes42 | 0:c78d0ce17cf3 | 134 | } |