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
--- 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
--- 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
}
-
}
--- 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
--- 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
