ok contrast may need to be adjusted with pot good demo for RTOS capabilities
Dependencies: C12832_lcd LCD_fonts mbed-rtos mbed
Fork of app-board-RTOS-Threads by
Revision 4:79863d2ea5a0, committed 2013-09-22
- Comitter:
- 4180_1
- Date:
- Sun Sep 22 17:57:46 2013 +0000
- Parent:
- 3:3ec443c0842a
- Commit message:
- ver 1.0 see https://mbed.org/users/4180_1/notebook/mbed-application-board-hands-on-demos/
Changed in this revision
diff -r 3ec443c0842a -r 79863d2ea5a0 C12832_lcd.lib --- a/C12832_lcd.lib Wed Dec 05 08:06:20 2012 +0000 +++ b/C12832_lcd.lib Sun Sep 22 17:57:46 2013 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/dreschpe/code/C12832_lcd/#8d812da33cdc +http://mbed.org/users/dreschpe/code/C12832_lcd/#c9afe58d786a
diff -r 3ec443c0842a -r 79863d2ea5a0 main.cpp --- a/main.cpp Wed Dec 05 08:06:20 2012 +0000 +++ b/main.cpp Sun Sep 22 17:57:46 2013 +0000 @@ -1,6 +1,6 @@ // example to test the mbed Lab Board lcd lib with the mbed rtos -// Pot1 change the contrast -// Pot2 change the speed of the sin wave +// Pot1 changes the contrast +// Pot2 changes the speed of the sin wave #include "mbed.h" #include "rtos.h" @@ -10,14 +10,19 @@ #include "stdio.h" #include "C12832_lcd.h" -// LCD object + 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 save +// mutex to make the lcd lib thread safe Mutex lcd_mutex; // Thread 1 @@ -54,7 +59,7 @@ // Thread 3 // print a sin function in a small window -// the value of pot 1 change the speed of the sinwave +// the value of pot 1 changes the speed of the sine wave void thread3(void const *args) { int i,k,v; @@ -66,13 +71,13 @@ 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 + 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.pixel(i,9 + (int)a ,0); // erase pixel + LCD.pixel(i,9 + (int)s ,1); // print pixel } - LCD.copy_to_lcd(); // LCD.pixel do not update the lcd + LCD.copy_to_lcd(); // LCD.pixel does not update the lcd lcd_mutex.unlock(); k++; Thread::wait(v/100); // value of pot1 / 100 @@ -80,31 +85,72 @@ } // Thread 4 -// input pot 2 and change the contrast of lcd +// 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; // we need only 6 bit for contrast - lcd_mutex.lock(); - LCD.set_contrast(k); - lcd_mutex.unlock(); - Thread::wait(500); // wait 0.5s + 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) { // 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 + } } -// print the actual contrast + int main() { int j; LCD.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 lcd_mutex.lock(); @@ -115,5 +161,4 @@ lcd_mutex.unlock(); Thread::wait(500); // wait 0.5s } - }
diff -r 3ec443c0842a -r 79863d2ea5a0 mbed-rtos.lib --- a/mbed-rtos.lib Wed Dec 05 08:06:20 2012 +0000 +++ b/mbed-rtos.lib Sun Sep 22 17:57:46 2013 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed-rtos/#88a1a9c26ae3 +http://mbed.org/users/mbed_official/code/mbed-rtos/#ee87e782d34f
diff -r 3ec443c0842a -r 79863d2ea5a0 mbed.bld --- a/mbed.bld Wed Dec 05 08:06:20 2012 +0000 +++ b/mbed.bld Sun Sep 22 17:57:46 2013 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/b60934f96c0c \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/a9913a65894f \ No newline at end of file