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 2:a69c8c5f5b03, committed 2012-10-26
- Comitter:
- dreschpe
- Date:
- Fri Oct 26 18:18:33 2012 +0000
- Parent:
- 1:1c6a9eaf55b5
- Child:
- 3:3ec443c0842a
- Commit message:
- Test program for appboard + lcd + rtos
Changed in this revision
--- a/C12832_lcd.lib Tue Oct 16 17:51:10 2012 +0000 +++ b/C12832_lcd.lib Fri Oct 26 18:18:33 2012 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/dreschpe/code/C12832_lcd/#66dd8afbfd06 +http://mbed.org/users/dreschpe/code/C12832_lcd/#468cdccff7af
--- a/LCD_fonts.lib Tue Oct 16 17:51:10 2012 +0000 +++ b/LCD_fonts.lib Fri Oct 26 18:18:33 2012 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/dreschpe/code/LCD_fonts/#ac9b0945fdb1 +http://mbed.org/users/dreschpe/code/LCD_fonts/#d0b7d7bf1f56
--- a/main.cpp Tue Oct 16 17:51:10 2012 +0000
+++ b/main.cpp Fri Oct 26 18:18:33 2012 +0000
@@ -1,8 +1,7 @@
-// example to test the mbed Lab Board lcd
+// 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
-
#include "mbed.h"
#include "rtos.h"
#include "Small_6.h"
@@ -11,114 +10,110 @@
#include "stdio.h"
#include "C12832_lcd.h"
-Serial pc(USBTX, USBRX);
-
-
// LCD object
C12832_LCD LCD("LCD");
AnalogIn Pot1(p19);
AnalogIn Pot2(p20);
-// defines to make lib thread save
-#define _lock lcd_mutex.lock();
-#define _unlock lcd_mutex.unlock();
+
+// mutex to make the lcd lib thread save
Mutex lcd_mutex;
-// print data into first line and wait for 1s
+// Thread 1
+// print counter into first line and wait for 1 s
void thread1(void const *args)
{
int i;
while(true) { // thread loop
- _lock
+ lcd_mutex.lock();
LCD.locate(0,0);
LCD.set_font((unsigned char*) Small_6);
printf("Thread1 count: %d",i);
- LCD.copy_to_lcd();
- _unlock
+ lcd_mutex.unlock();
i++;
Thread::wait(1000);
}
}
-// print data into third line and wait for 0,5s
+// Thread 2
+// print counter into third line and wait for 0,5s
void thread2(void const *args)
{
int k;
while(true) { // thread loop
- _lock
+ lcd_mutex.lock();
LCD.locate(0,20);
LCD.set_font((unsigned char*) Arial_9);
printf("Thread 2 count : %d",k);
- LCD.copy_to_lcd();
- _unlock
+ lcd_mutex.unlock();
k++;
- Thread::wait(500);
+ Thread::wait(500); // wait 0.5s
}
}
-
-void thread4(void const *args)
+// Thread 3
+// print a sin function in a small window
+// the value of pot 1 change the speed of the sinwave
+void thread3(void const *args)
{
int i,k,v;
double s,a;
k = 1;
- _lock
+ lcd_mutex.lock();
LCD.rect(89,0,127,17,1);
- _unlock
+ lcd_mutex.unlock();
while(true) { // thread loop
- _lock
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);
- a = 8 * sin((long double)(i+k-1) /5);
- LCD.pixel(i,9 + (int)a ,0);
- LCD.pixel(i,9 + (int)s ,1);
+ 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();
- _unlock
+ LCD.copy_to_lcd(); // LCD.pixel do not update the lcd
+ lcd_mutex.unlock();
k++;
- Thread::wait(v/100);
+ Thread::wait(v/100); // value of pot1 / 100
}
}
-
-void thread5(void const *args)
+// 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; // we need only 6 bit
- _lock
+ k = k >> 10; // we need only 6 bit for contrast
+ lcd_mutex.lock();
LCD.set_contrast(k);
- _unlock
- Thread::wait(500);
+ lcd_mutex.unlock();
+ Thread::wait(500); // wait 0.5s
}
}
+
+// 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
- LCD.claim(stdout); // send stdout to the LCD display
- LCD.cls();
- //start thread1
- Thread t1(thread1);
- //start thread2
- Thread t2(thread2);
- //start thread4
- Thread t4(thread4);
- Thread t5(thread5);
-
- while(true) { // this is the third thread
- _lock
+ while(true) { // main is the next thread
+ lcd_mutex.lock();
LCD.locate(0,9);
LCD.set_font((unsigned char*) Small_7);
- j = LCD.get_contrast();
+ j = LCD.get_contrast(); // read the actual contrast
printf("contrast : %d",j);
- LCD.copy_to_lcd();
- _unlock
- Thread::wait(500);
+ lcd_mutex.unlock();
+ Thread::wait(500); // wait 0.5s
}
}
--- a/mbed.bld Tue Oct 16 17:51:10 2012 +0000 +++ b/mbed.bld Fri Oct 26 18:18:33 2012 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/cd19af002ccc \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/e2ed12d17f06 \ No newline at end of file
