
Demo Shiftbrite and Bluefruit LE. Waits for Bluefruit to get information about setting the LED based on user input and music intensity.
main.cpp@0:77f8c8e7e8a1, 2016-10-31 (annotated)
- Committer:
- kkizirian
- Date:
- Mon Oct 31 15:01:46 2016 +0000
- Revision:
- 0:77f8c8e7e8a1
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kkizirian | 0:77f8c8e7e8a1 | 1 | #include "mbed.h" |
kkizirian | 0:77f8c8e7e8a1 | 2 | #include "ShiftBrite.h" |
kkizirian | 0:77f8c8e7e8a1 | 3 | |
kkizirian | 0:77f8c8e7e8a1 | 4 | //bluefruit setup |
kkizirian | 0:77f8c8e7e8a1 | 5 | RawSerial dev(p28,p27); |
kkizirian | 0:77f8c8e7e8a1 | 6 | SPI spi(p11, p12, p13); |
kkizirian | 0:77f8c8e7e8a1 | 7 | |
kkizirian | 0:77f8c8e7e8a1 | 8 | //shiftbrite setup |
kkizirian | 0:77f8c8e7e8a1 | 9 | ShiftBrite myBrite(p15,p16,spi); //latch, enable, spi |
kkizirian | 0:77f8c8e7e8a1 | 10 | |
kkizirian | 0:77f8c8e7e8a1 | 11 | enum color {RED, GREEN, BLUE} currColor; |
kkizirian | 0:77f8c8e7e8a1 | 12 | char c = 'r'; |
kkizirian | 0:77f8c8e7e8a1 | 13 | int change = 0; |
kkizirian | 0:77f8c8e7e8a1 | 14 | int musicMode = 0; |
kkizirian | 0:77f8c8e7e8a1 | 15 | |
kkizirian | 0:77f8c8e7e8a1 | 16 | //get char from bluetooth |
kkizirian | 0:77f8c8e7e8a1 | 17 | void dev_recv() |
kkizirian | 0:77f8c8e7e8a1 | 18 | { |
kkizirian | 0:77f8c8e7e8a1 | 19 | change = 1; //new receive, change LED |
kkizirian | 0:77f8c8e7e8a1 | 20 | while(dev.readable()) { |
kkizirian | 0:77f8c8e7e8a1 | 21 | c = dev.getc(); |
kkizirian | 0:77f8c8e7e8a1 | 22 | } |
kkizirian | 0:77f8c8e7e8a1 | 23 | } |
kkizirian | 0:77f8c8e7e8a1 | 24 | |
kkizirian | 0:77f8c8e7e8a1 | 25 | int main() |
kkizirian | 0:77f8c8e7e8a1 | 26 | { |
kkizirian | 0:77f8c8e7e8a1 | 27 | dev.baud(9600); |
kkizirian | 0:77f8c8e7e8a1 | 28 | |
kkizirian | 0:77f8c8e7e8a1 | 29 | dev.attach(&dev_recv, Serial::RxIrq); |
kkizirian | 0:77f8c8e7e8a1 | 30 | |
kkizirian | 0:77f8c8e7e8a1 | 31 | //initialize shiftbrite to red |
kkizirian | 0:77f8c8e7e8a1 | 32 | currColor = RED; |
kkizirian | 0:77f8c8e7e8a1 | 33 | myBrite.Write(255, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 34 | |
kkizirian | 0:77f8c8e7e8a1 | 35 | while(1) { |
kkizirian | 0:77f8c8e7e8a1 | 36 | //if LED has not changed, do nothing |
kkizirian | 0:77f8c8e7e8a1 | 37 | if (change == 0) { |
kkizirian | 0:77f8c8e7e8a1 | 38 | sleep(); |
kkizirian | 0:77f8c8e7e8a1 | 39 | } else { |
kkizirian | 0:77f8c8e7e8a1 | 40 | if (musicMode == 0) { |
kkizirian | 0:77f8c8e7e8a1 | 41 | if (c == 'r') { |
kkizirian | 0:77f8c8e7e8a1 | 42 | myBrite.Write(255, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 43 | currColor = RED; |
kkizirian | 0:77f8c8e7e8a1 | 44 | } else if (c == 'g') { |
kkizirian | 0:77f8c8e7e8a1 | 45 | myBrite.Write(0, 255, 0); |
kkizirian | 0:77f8c8e7e8a1 | 46 | currColor = GREEN; |
kkizirian | 0:77f8c8e7e8a1 | 47 | } else if (c == 'b') { |
kkizirian | 0:77f8c8e7e8a1 | 48 | myBrite.Write(0 , 0, 255); |
kkizirian | 0:77f8c8e7e8a1 | 49 | currColor = BLUE; |
kkizirian | 0:77f8c8e7e8a1 | 50 | } else if (c == 'm') |
kkizirian | 0:77f8c8e7e8a1 | 51 | musicMode = 1; |
kkizirian | 0:77f8c8e7e8a1 | 52 | } else { |
kkizirian | 0:77f8c8e7e8a1 | 53 | if (c == 'm') |
kkizirian | 0:77f8c8e7e8a1 | 54 | musicMode = 0; |
kkizirian | 0:77f8c8e7e8a1 | 55 | if (currColor == RED) { |
kkizirian | 0:77f8c8e7e8a1 | 56 | if (c == '1') |
kkizirian | 0:77f8c8e7e8a1 | 57 | myBrite.Write(25, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 58 | else if (c == '2') |
kkizirian | 0:77f8c8e7e8a1 | 59 | myBrite.Write(50, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 60 | else if (c == '3') |
kkizirian | 0:77f8c8e7e8a1 | 61 | myBrite.Write(75, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 62 | else if (c == '4') |
kkizirian | 0:77f8c8e7e8a1 | 63 | myBrite.Write(100, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 64 | else if (c == '5') |
kkizirian | 0:77f8c8e7e8a1 | 65 | myBrite.Write(125, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 66 | else if (c == '6') |
kkizirian | 0:77f8c8e7e8a1 | 67 | myBrite.Write(150, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 68 | else if (c == '7') |
kkizirian | 0:77f8c8e7e8a1 | 69 | myBrite.Write(175, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 70 | else if (c == '8') |
kkizirian | 0:77f8c8e7e8a1 | 71 | myBrite.Write(200, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 72 | else if (c == '9') |
kkizirian | 0:77f8c8e7e8a1 | 73 | myBrite.Write(225, 0, 0); |
kkizirian | 0:77f8c8e7e8a1 | 74 | } else if (currColor == GREEN) { |
kkizirian | 0:77f8c8e7e8a1 | 75 | if (c == '1') |
kkizirian | 0:77f8c8e7e8a1 | 76 | myBrite.Write(0, 25, 0); |
kkizirian | 0:77f8c8e7e8a1 | 77 | else if (c == '2') |
kkizirian | 0:77f8c8e7e8a1 | 78 | myBrite.Write(0, 50, 0); |
kkizirian | 0:77f8c8e7e8a1 | 79 | else if (c == '3') |
kkizirian | 0:77f8c8e7e8a1 | 80 | myBrite.Write(0, 75, 0); |
kkizirian | 0:77f8c8e7e8a1 | 81 | else if (c == '4') |
kkizirian | 0:77f8c8e7e8a1 | 82 | myBrite.Write(0, 100, 0); |
kkizirian | 0:77f8c8e7e8a1 | 83 | else if (c == '5') |
kkizirian | 0:77f8c8e7e8a1 | 84 | myBrite.Write(0, 125, 0); |
kkizirian | 0:77f8c8e7e8a1 | 85 | else if (c == '6') |
kkizirian | 0:77f8c8e7e8a1 | 86 | myBrite.Write(0, 150, 0); |
kkizirian | 0:77f8c8e7e8a1 | 87 | else if (c == '7') |
kkizirian | 0:77f8c8e7e8a1 | 88 | myBrite.Write(0, 175, 0); |
kkizirian | 0:77f8c8e7e8a1 | 89 | else if (c == '8') |
kkizirian | 0:77f8c8e7e8a1 | 90 | myBrite.Write(0, 200, 0); |
kkizirian | 0:77f8c8e7e8a1 | 91 | else if (c == '9') |
kkizirian | 0:77f8c8e7e8a1 | 92 | myBrite.Write(0, 225, 0); |
kkizirian | 0:77f8c8e7e8a1 | 93 | } else if (currColor == BLUE) { |
kkizirian | 0:77f8c8e7e8a1 | 94 | if (c == '1') |
kkizirian | 0:77f8c8e7e8a1 | 95 | myBrite.Write(0, 0, 25); |
kkizirian | 0:77f8c8e7e8a1 | 96 | else if (c == '2') |
kkizirian | 0:77f8c8e7e8a1 | 97 | myBrite.Write(0, 0, 50); |
kkizirian | 0:77f8c8e7e8a1 | 98 | else if (c == '3') |
kkizirian | 0:77f8c8e7e8a1 | 99 | myBrite.Write(0, 0, 75); |
kkizirian | 0:77f8c8e7e8a1 | 100 | else if (c == '4') |
kkizirian | 0:77f8c8e7e8a1 | 101 | myBrite.Write(0, 0, 100); |
kkizirian | 0:77f8c8e7e8a1 | 102 | else if (c == '5') |
kkizirian | 0:77f8c8e7e8a1 | 103 | myBrite.Write(0, 0, 125); |
kkizirian | 0:77f8c8e7e8a1 | 104 | else if (c == '6') |
kkizirian | 0:77f8c8e7e8a1 | 105 | myBrite.Write(0, 0, 150); |
kkizirian | 0:77f8c8e7e8a1 | 106 | else if (c == '7') |
kkizirian | 0:77f8c8e7e8a1 | 107 | myBrite.Write(0, 0, 175); |
kkizirian | 0:77f8c8e7e8a1 | 108 | else if (c == '8') |
kkizirian | 0:77f8c8e7e8a1 | 109 | myBrite.Write(0, 0, 200); |
kkizirian | 0:77f8c8e7e8a1 | 110 | else if (c == '9') |
kkizirian | 0:77f8c8e7e8a1 | 111 | myBrite.Write(0, 0, 225); |
kkizirian | 0:77f8c8e7e8a1 | 112 | } |
kkizirian | 0:77f8c8e7e8a1 | 113 | } |
kkizirian | 0:77f8c8e7e8a1 | 114 | change = 0; |
kkizirian | 0:77f8c8e7e8a1 | 115 | } |
kkizirian | 0:77f8c8e7e8a1 | 116 | } |
kkizirian | 0:77f8c8e7e8a1 | 117 | } |