bluetooth control
Dependencies: 4DGL-uLCD-SE RgbLED SDFileSystem Speaker mbed-rtos mbed wave_player
main.cpp
- Committer:
- vm9
- Date:
- 2017-02-16
- Revision:
- 0:016340684080
File content as of revision 0:016340684080:
#include "mbed.h" #include "rtos.h" #include "uLCD_4DGL.h" #include "RGBLed.h" #include "wave_player.h" #include "SDFileSystem.h" BusOut myled(LED1,LED2,LED3,LED4); //DigitalOut myled(LED1); //uLCD_4DGL uLCD(p28, p27, p30); uLCD_4DGL uLCD(p9, p10, p6); //DigitalOut audio (p26); SDFileSystem sd(p11, p12, p13, p8, "sd"); AnalogOut DACout(p18); wave_player waver(&DACout); RawSerial bluemod(p28,p27); RGBLed rgb(p23, p22, p21); Mutex stdio_mutex; Mutex lcd_mutex; Mutex bluetooth_mutex; int i_globe1 = 0; int i_globe2 = 0; const char* sound = "/sd/wavfiles/applause.wav"; void send_data(void const * name) { while(1) { stdio_mutex.lock(); printf("%s %d", name, i_globe1++); stdio_mutex.unlock(); Thread::wait(500); } } void count_1(void const *args) { while(1) { lcd_mutex.lock(); uLCD.locate(0,0); uLCD.printf("%d", i_globe1++); lcd_mutex.unlock(); Thread::wait(500); } } void count_2(void const *args) { while(1) { lcd_mutex.lock(); uLCD.locate(5,0); uLCD.printf("%d",i_globe2++); lcd_mutex.unlock(); Thread::wait(500); } } void play_sound(void const *args) { while(1) { FILE* fp = fopen(sound, "r"); waver.play(fp); fclose(fp); Thread::wait(1000); } } void control_rgb1(void const *args) { while(1) { stdio_mutex.lock(); rgb.setColor (0, 0.0, 0); stdio_mutex.unlock(); } Thread::wait(1000); } void control_rgb2(void const *args) { while(1) { //if (on = 0) { stdio_mutex.lock() ; for (float i = 0; i < 1; i+=.1) { rgb.setColor (i, i, 1.0); } stdio_mutex.unlock(); } //} Thread::wait(1000); } int main() { char bred=0; char bgreen=0; char bblue=0; float red = 0.0f; float green = 0.0f; float blue = 0.0f; Thread t1 (play_sound); //Thread::wait(1000); //Thread t2 (send_data, (void *)"th 2"); //Thread::wait(1000); //Thread t3 (send_data, (void *)"th 3"); //Thread t2 (control_rgb1); //Thread t3 (control_rgb2); Thread t4 (count_1); //Thread::wait(1000); Thread t5 (count_2); char bnum=0; while(1) { if (bluemod.getc()=='!') { if (bluemod.getc()=='C') { //color data packet bred = bluemod.getc(); // RGB color values bgreen = bluemod.getc(); bblue = bluemod.getc(); if (bluemod.getc()==char(~('!' + 'C' + bred + bgreen + bblue))) { //checksum OK? red = bred/255.0; //send new color to RGB LED PWM outputs green = bgreen/255.0; blue = bblue/255.0; bluetooth_mutex.lock(); rgb.setColor(1 - green, 1 - blue , 1 - red); bluetooth_mutex.unlock(); } } if (bluemod.getc()=='B') { //button data bnum = bluemod.getc(); //button number if ((bnum =='1') && bluemod.getc()){ //is a number button 1..4 lcd_mutex.lock(); //i_globe1 = 0; //turn on/off that num LED uLCD.color(0xFF); //sound = "/sd/wavfiles/BUZZER.wav"; lcd_mutex.unlock(); } else if (bnum == '2' && bluemod.getc()) { lcd_mutex.lock(); sound = "/sd/wavfiles/BUZZER.wav"; lcd_mutex.unlock(); } } } Thread::wait(200); } }