bluetooth

Dependencies:   4DGL-uLCD-SE RGBLED2 SDFileSystem mbed-rtos mbed wave_player

Fork of rtos_mutex by mbed official

Committer:
elirobelo
Date:
Thu Feb 23 22:46:41 2017 +0000
Revision:
9:206ac7626c16
Parent:
8:6266d6dce0ed
bluetooth;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 1:0f886ffbe0c1 1 #include "mbed.h"
mbed_official 7:bd0aa7f21f53 2 #include "rtos.h"
elirobelo 8:6266d6dce0ed 3 #include "SDFileSystem.h"
elirobelo 8:6266d6dce0ed 4 #include "uLCD_4DGL.h"
elirobelo 8:6266d6dce0ed 5 #include "rgb-led.h"
elirobelo 8:6266d6dce0ed 6 #include "wave_player.h"
elirobelo 8:6266d6dce0ed 7 #include <string>
elirobelo 8:6266d6dce0ed 8
elirobelo 8:6266d6dce0ed 9 using namespace std;
emilmont 1:0f886ffbe0c1 10
Bartek Szatkowski 5:384d6cef11d4 11 Mutex stdio_mutex;
elirobelo 8:6266d6dce0ed 12 uLCD_4DGL uLCD(p28, p27, p29);
elirobelo 8:6266d6dce0ed 13 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
elirobelo 8:6266d6dce0ed 14 AnalogOut DACout(p18);
elirobelo 8:6266d6dce0ed 15 wave_player waver(&DACout);
elirobelo 8:6266d6dce0ed 16 RGBLed myRGBled(p21, p22, p23);
elirobelo 8:6266d6dce0ed 17 Serial pc(USBTX, USBRX);
mbed_official 7:bd0aa7f21f53 18
elirobelo 8:6266d6dce0ed 19 BusOut myled(LED1,LED2,LED3,LED4);
elirobelo 8:6266d6dce0ed 20 Serial bluemod(p13 ,p14);
elirobelo 8:6266d6dce0ed 21 PwmOut red(p21);
elirobelo 8:6266d6dce0ed 22 PwmOut green(p22);
elirobelo 8:6266d6dce0ed 23 PwmOut blue(p23);
elirobelo 8:6266d6dce0ed 24
elirobelo 8:6266d6dce0ed 25 Thread t2;
elirobelo 8:6266d6dce0ed 26 Thread t3;
elirobelo 8:6266d6dce0ed 27 Thread t4;
elirobelo 8:6266d6dce0ed 28 string color;
elirobelo 8:6266d6dce0ed 29
emilmont 1:0f886ffbe0c1 30
elirobelo 8:6266d6dce0ed 31 void lightsULCD() {
elirobelo 8:6266d6dce0ed 32 while(1) {
elirobelo 8:6266d6dce0ed 33 stdio_mutex.lock();
elirobelo 8:6266d6dce0ed 34 uLCD.locate(3,4);
elirobelo 8:6266d6dce0ed 35 uLCD.puts("Color of Led: ");
elirobelo 8:6266d6dce0ed 36 if (color == "red") {
elirobelo 8:6266d6dce0ed 37 uLCD.puts("Color of LED: red");
elirobelo 8:6266d6dce0ed 38 }
elirobelo 8:6266d6dce0ed 39 if (color == "blue") {
elirobelo 8:6266d6dce0ed 40 uLCD.puts("Color of LED: blue");
elirobelo 8:6266d6dce0ed 41 }
elirobelo 8:6266d6dce0ed 42 if (color == "green") {
elirobelo 8:6266d6dce0ed 43 uLCD.puts("Color of LED: green");
elirobelo 8:6266d6dce0ed 44 }
elirobelo 8:6266d6dce0ed 45
elirobelo 8:6266d6dce0ed 46 stdio_mutex.unlock();
elirobelo 8:6266d6dce0ed 47 pc.printf("Hello from thread1\n");
elirobelo 8:6266d6dce0ed 48 Thread::wait(1000);
emilmont 1:0f886ffbe0c1 49 }
emilmont 1:0f886ffbe0c1 50 }
emilmont 1:0f886ffbe0c1 51
elirobelo 8:6266d6dce0ed 52 void timeULCD() {
elirobelo 8:6266d6dce0ed 53 int count = 0;
elirobelo 8:6266d6dce0ed 54 while(1) {
elirobelo 8:6266d6dce0ed 55 stdio_mutex.lock();
elirobelo 8:6266d6dce0ed 56 if(count%3==0){
elirobelo 8:6266d6dce0ed 57 uLCD.locate(3,8);
elirobelo 8:6266d6dce0ed 58 uLCD.puts("Ah, ha, ha, ha");
elirobelo 8:6266d6dce0ed 59 }
elirobelo 8:6266d6dce0ed 60 else if(count%3==1){
elirobelo 8:6266d6dce0ed 61 uLCD.locate(3,8);
elirobelo 8:6266d6dce0ed 62 uLCD.puts("Stayin' Alive");
elirobelo 8:6266d6dce0ed 63 }
elirobelo 8:6266d6dce0ed 64 else {
elirobelo 8:6266d6dce0ed 65 uLCD.locate(3,8);
elirobelo 8:6266d6dce0ed 66 uLCD.puts("Stayin' Alive");
elirobelo 8:6266d6dce0ed 67 }
elirobelo 8:6266d6dce0ed 68 count++;
elirobelo 8:6266d6dce0ed 69 stdio_mutex.unlock();
elirobelo 8:6266d6dce0ed 70 pc.printf("Hello from thread2\n");
elirobelo 8:6266d6dce0ed 71
elirobelo 8:6266d6dce0ed 72 Thread::wait(1000);
elirobelo 8:6266d6dce0ed 73 }
elirobelo 8:6266d6dce0ed 74
elirobelo 8:6266d6dce0ed 75 }
mbed_official 7:bd0aa7f21f53 76
elirobelo 8:6266d6dce0ed 77 void playSound() {
elirobelo 8:6266d6dce0ed 78 // char bnum=0;
elirobelo 8:6266d6dce0ed 79 // while(1) {
elirobelo 8:6266d6dce0ed 80 // FILE *wave_file;
elirobelo 8:6266d6dce0ed 81 // stdio_mutex.lock();
elirobelo 8:6266d6dce0ed 82 // if (bluemod.getc()=='!') {
elirobelo 8:6266d6dce0ed 83 // if (bluemod.getc()=='B') { //button data
elirobelo 8:6266d6dce0ed 84 // bnum = bluemod.getc(); //button number
elirobelo 8:6266d6dce0ed 85 // if ((bnum=='1')) { //is a number button 1..4
elirobelo 8:6266d6dce0ed 86 // wave_file=fopen("/sd/stayin.wav","r");
elirobelo 8:6266d6dce0ed 87 // waver.play(wave_file);
elirobelo 8:6266d6dce0ed 88 // fclose(wave_file);
elirobelo 8:6266d6dce0ed 89 // } else if (bnum == '2'){
elirobelo 8:6266d6dce0ed 90 // wave_file=fopen("/sd/disco.wav","r");
elirobelo 8:6266d6dce0ed 91 // waver.play(wave_file);
elirobelo 8:6266d6dce0ed 92 // fclose(wave_file);
elirobelo 8:6266d6dce0ed 93 // }
elirobelo 8:6266d6dce0ed 94 // }
elirobelo 8:6266d6dce0ed 95 // }
elirobelo 8:6266d6dce0ed 96 // stdio_mutex.unlock();
elirobelo 8:6266d6dce0ed 97
elirobelo 8:6266d6dce0ed 98 Thread::wait(1000);
elirobelo 8:6266d6dce0ed 99 // }
elirobelo 8:6266d6dce0ed 100 }
elirobelo 8:6266d6dce0ed 101
elirobelo 8:6266d6dce0ed 102
elirobelo 8:6266d6dce0ed 103 int main() {
elirobelo 8:6266d6dce0ed 104
Bartek Szatkowski 5:384d6cef11d4 105
elirobelo 8:6266d6dce0ed 106 t2.start(lightsULCD);
elirobelo 8:6266d6dce0ed 107 t3.start(timeULCD);
elirobelo 8:6266d6dce0ed 108 t4.start(playSound);
elirobelo 8:6266d6dce0ed 109 pc.printf("hello\n");
elirobelo 8:6266d6dce0ed 110 //test_thread((void *)"Th 1");
elirobelo 8:6266d6dce0ed 111
elirobelo 8:6266d6dce0ed 112 char bred=0;
elirobelo 8:6266d6dce0ed 113 char bgreen=0;
elirobelo 8:6266d6dce0ed 114 char bblue=0;
elirobelo 8:6266d6dce0ed 115 red = green = blue = 0;
elirobelo 8:6266d6dce0ed 116 while(1) {
elirobelo 8:6266d6dce0ed 117 stdio_mutex.lock();
elirobelo 8:6266d6dce0ed 118 if (bluemod.getc()=='!') {
elirobelo 8:6266d6dce0ed 119 if (bluemod.getc()=='C') { //color data packet
elirobelo 8:6266d6dce0ed 120 bred = bluemod.getc(); // RGB color values
elirobelo 8:6266d6dce0ed 121 bgreen = bluemod.getc();
elirobelo 8:6266d6dce0ed 122 bblue = bluemod.getc();
elirobelo 8:6266d6dce0ed 123 if (bluemod.getc()==char(~('!' + 'C' + bred + bgreen + bblue))) { //checksum OK?
elirobelo 8:6266d6dce0ed 124 red = bred/255.0; //send new color to RGB LED PWM outputs
elirobelo 8:6266d6dce0ed 125 green = bgreen/255.0;
elirobelo 8:6266d6dce0ed 126 blue = bblue/255.0;
elirobelo 8:6266d6dce0ed 127 }
elirobelo 8:6266d6dce0ed 128 }
elirobelo 8:6266d6dce0ed 129 }
elirobelo 8:6266d6dce0ed 130 stdio_mutex.unlock();
elirobelo 8:6266d6dce0ed 131 Thread::wait(1000);
elirobelo 8:6266d6dce0ed 132 }
emilmont 1:0f886ffbe0c1 133 }
elirobelo 8:6266d6dce0ed 134