f
Dependencies: Speaker mbed wave_player mbed-rtos 4DGL-uLCD-SE LCD_fonts SDFileSystem_OldbutworkswithRTOS
main.cpp
- Committer:
- apaks180
- Date:
- 2019-02-21
- Revision:
- 5:5f393c6b02cb
- Parent:
- 4:79863d2ea5a0
- Child:
- 6:bb887c1a381b
File content as of revision 5:5f393c6b02cb:
// 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 "uLCD_4DGL.h" #include "stdio.h" #include "Speaker.h" #include "banner.h" #include "SDFileSystem.h" #include "wave_player.h" AnalogOut DACout(p18); wave_player waver(&DACout); SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card uLCD_4DGL uLCD(p13,p14,p11); //AnalogIn Pot1(p19); //AnalogIn Pot2(p20); //Speaker 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; //// 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(); uLCD.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) { int i = 0; while(true) { // thread loop if(i==0){ RGBLED_r = 1; RGBLED_g = 0; RGBLED_b = 0; } else if(i==1){ RGBLED_r = 1; RGBLED_g = 1; RGBLED_b = 1; } else{ RGBLED_r = 0; RGBLED_g = 0; RGBLED_b = 1; } i++; i=i%3; Thread::wait(673); // wait 1.5s } } //// Thread 6 //// Speaker void thread6(void const *args) { //while(true) { // thread loop // speaker.PlayNote(311.1, 1, .1); // Thread::wait(1000); // wait 1.0s // speaker.PlayNote(0,1,0); // Thread::wait(1000); // } FILE *wave_file; printf("\n\n\nHello, wave world!\n"); wave_file=fopen("/sd/banner2.wav","r"); waver.play(wave_file); fclose(wave_file); } void thread7(void const *args) { int i = 0; while(true) { // thread loop i++; printf("thread 1: %d\n", i); Thread::wait(200); // wait 0.25s } } int main() { // int j; uLCD.cls(); 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 // speaker.PlayNote(311.1, 1, .1); //Thread::wait(1000); // wait 1.0s // speaker.PlayNote(0,1,0); //Thread::wait(1000); // lcd_mutex.lock(); // uLCD.cls(); // uLCD.media_init(); // uLCD.set_sector_address(0x001D, 0x4C42); // uLCD.display_video(0,0); // lcd_mutex.unlock(); // Thread::wait(33); // wait 0.5s } }