gets BLE commands, displays turn and stop signals

Dependencies:   NeoStrip_edit2 mbed

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?

UserRevisionLine numberNew 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 }