Demo Shiftbrite and Bluefruit LE. Waits for Bluefruit to get information about setting the LED based on user input and music intensity.

Dependencies:   ShiftBrite mbed

Committer:
kkizirian
Date:
Mon Oct 31 15:01:46 2016 +0000
Revision:
0:77f8c8e7e8a1
Initial commit

Who changed what in which revision?

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