test program for mbed Lab Board

Test program for the mbed application board. It use the mbed rtos to create 5 threads.

Two threads are counting, one setup the contrast with pot 1, one is printing a rotating sinwave and the last prints the actual contrast.

## main.cpp

Committer:
dreschpe
Date:
2012-12-05
Revision:
3:3ec443c0842a
Parent:
2:a69c8c5f5b03

### File content as of revision 3:3ec443c0842a:

```// 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"
#include "Small_7.h"
#include "Arial_9.h"
#include "stdio.h"
#include "C12832_lcd.h"

// LCD object
C12832_LCD LCD;

// mutex to make the lcd lib thread save
Mutex lcd_mutex;

// print counter into first line and wait for 1 s
{
int i;
lcd_mutex.lock();
LCD.locate(0,0);
LCD.set_font((unsigned char*) Small_6);
lcd_mutex.unlock();
i++;
}
}

// print counter into third line and wait for 0,5s
{
int k;
lcd_mutex.lock();
LCD.locate(0,20);
LCD.set_font((unsigned char*) Arial_9);
lcd_mutex.unlock();
k++;
}
}

// print a sin function in a small window
// the value of pot 1 change the speed of the sinwave
{
int i,k,v;
double s,a;
k = 1;
lcd_mutex.lock();
LCD.rect(89,0,127,17,1);
lcd_mutex.unlock();
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 do not update the lcd
lcd_mutex.unlock();
k++;
Thread::wait(v/100);   // value of pot1 / 100
}
}

// input pot 2 and change the contrast of lcd
{
int k;
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();
}
}

// print the actual contrast
int main()
{
int j;
LCD.cls();

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();    // read the actual contrast
LCD.printf("contrast : %d",j);
lcd_mutex.unlock();