ECE 4180 final project. Sound and Bluetooth activated coffee maker
Dependencies: mbed wave_player mbed-rtos C12832_lcd 4DGL-uLCD-SE LCD_fonts SDFileSystem
main.cpp
- Committer:
- nhummel3
- Date:
- 2019-10-03
- Revision:
- 5:18b2796e4847
- Parent:
- 4:79863d2ea5a0
- Child:
- 6:e4aba042979b
File content as of revision 5:18b2796e4847:
// example to test the mbed Lab Board lcd lib with the mbed rtos // Pot1 changes the contrast // Pot2 changes the speed of the sin wave #include "mbed.h" #include "rtos.h" #include "Small_6.h" #include "Small_7.h" #include "Arial_9.h" #include "stdio.h" #include "C12832_lcd.h" #include "sound.h" #define sample_freq 11025.0 //get and set the frequency from wav conversion tool GUI int i=0; Ticker sampletick; C12832_LCD LCD; AnalogIn Pot1(p19); AnalogIn Pot2(p20); PwmOut Speaker(p26); PwmOut RGBLED_r(p23); PwmOut RGBLED_g(p24); PwmOut RGBLED_b(p25); DigitalIn joyfire(p14); BusIn joy(p15,p12,p13,p16); BusOut leds(LED1,LED2,LED3,LED4); // mutex to make the lcd lib thread safe Mutex lcd_mutex; void audio_sample () { Speaker = sound_data[i]/255.0;//scale to 0.0 to 1.0 for PWM i++; if (i>= NUM_ELEMENTS) { i = 0; sampletick.detach(); } } // //// Thread 1 //// print counter into first line and wait for 1 s //void thread1(void const *args) //{ // int i; // while(true) { // thread loop // lcd_mutex.lock(); // LCD.locate(0,0); // LCD.set_font((unsigned char*) Small_6); // LCD.printf("Thread1 count: %d",i); // lcd_mutex.unlock(); // i++; // Thread::wait(1000); // } //} // //// Thread 2 //// print counter into third line and wait for 0,5s //void thread2(void const *args) //{ // int k; // while(true) { // thread loop // lcd_mutex.lock(); // LCD.locate(0,20); // LCD.set_font((unsigned char*) Arial_9); // LCD.printf("Thread 2 count : %d",k); // lcd_mutex.unlock(); // k++; // Thread::wait(500); // wait 0.5s // } //} // //// Thread 3 //// print a sin function in a small window //// the value of pot 1 changes the speed of the sine wave //void thread3(void const *args) //{ // int i,k,v; // double s,a; // k = 1; // lcd_mutex.lock(); // LCD.rect(89,0,127,17,1); // lcd_mutex.unlock(); // while(true) { // thread loop // v = Pot1.read_u16(); // get value of pot 1 // lcd_mutex.lock(); // for (i=90; i<127; i++) { // s = 8 * sin((long double)(i+k) /5); // pixel to print // a = 8 * sin((long double)(i+k-1) /5); // old pixel to erase // LCD.pixel(i,9 + (int)a ,0); // erase pixel // LCD.pixel(i,9 + (int)s ,1); // print pixel // } // LCD.copy_to_lcd(); // LCD.pixel does not update the lcd // lcd_mutex.unlock(); // k++; // Thread::wait(v/100); // value of pot1 / 100 // } //} // //// Thread 4 //// input pot 2 and change the contrast of LCD //void thread4(void const *args) //{ // int k; // while(true) { // thread loop // k = Pot2.read_u16(); // get the value of poti 2 // k = k >> 10; // need only 6 bits for contrast // lcd_mutex.lock(); // LCD.set_contrast(k); // lcd_mutex.unlock(); // Thread::wait(500); // wait 0.5s // } //} //// Thread 5 //// RGB LED //void thread5(void const *args) //{ // while(true) { // thread loop // RGBLED_r = 0.5 + (rand() % 11)/20.0; // RGBLED_g = 0.5 + (rand() % 11)/20.0; // RGBLED_b = 0.5 + (rand() % 11)/20.0; // Thread::wait(1667); // wait 1.5s // } //} //// Thread 6 //// Speaker //void thread6(void const *args) //{ // while(true) { // //sampletick.attach(&audio_sample, 1.0 / sample_freq); // /* // // thread loop // Speaker.period(1.0/800.0); // Speaker = 0.01; // Thread::wait(1000); // wait 1.0s // Speaker.period(1.0/969.0); // Speaker = 0.01; // Thread::wait(1000); // wait 1.0s // */ // } //} // //// Thread 7 //// Joystick controls onboard mbed LEDs //void thread7(void const *args) //{ // while(true) { // thread loop // if (joyfire) { // leds = 0xf; // } else { // leds = joy; // } // Thread::wait(200); // wait 0.25s // } //} int main() { //int j; //LCD.cls(); Speaker.period(1.0/250000.0); //Thread t1(thread1); //start thread1 //Thread t2(thread2); //start thread2 //Thread t3(thread3); //start thread3 //Thread t4(thread4); //start thread4 //Thread t5(thread5); //start thread5 //Thread t6(thread6); //start thread6 //Thread t7(thread7); //start thread7 while(true) { // main is the next thread //lcd_mutex.lock(); sampletick.attach(&audio_sample, 1.0 / sample_freq); //LCD.locate(0,9); //LCD.set_font((unsigned char*) Small_7); //j = LCD.get_contrast(); // read the actual contrast //LCD.printf("contrast : %d",j); //lcd_mutex.unlock(); // wait(1.0 / sample_freq); // wait 0.5s } }