testing

Dependencies:   C12832_lcd LCD_fonts LM75B MMA7660 mbed-rtos mbed

main.cpp

Committer:
embeddednerd
Date:
2014-11-02
Revision:
0:0a2678204e37

File content as of revision 0:0a2678204e37:

#include "mbed.h"
#include "rtos.h"
#include "C12832_lcd.h"
#include "Arial_9.h"
#include "Small_7.h"
#include "graphics.h" 
#include "MMA7660.h"


DigitalIn fire(p14);
PwmOut spkr(p26);

C12832_LCD lcd;

PwmOut r (p23);
PwmOut g (p24);
PwmOut b (p25);

MMA7660 MMA(p28, p27);

DigitalOut connectionLed(LED1);
PwmOut Zaxis_p(LED2);
PwmOut Zaxis_n(LED3);

Mutex lcd_mutex;

void Axisaccelerometer_thread(void const *args) 
{
   lcd_mutex.lock();
  
      if (MMA.testConnection())
        connectionLed = 1;
        
    while(1) {
        Zaxis_p = MMA.z();
        Zaxis_n = -MMA.z();
        
    lcd_mutex.unlock(); 
    }
   
}

void RGB_thread(void const *args) 
{    
  
r.period(0.001);
    while(1) {

        for(float i = 0.0; i < 1.0 ; i += 0.001) {
            float p = 3 * i;
            r = 1.0 - ((p < 1.0) ? 1.0 - p : (p > 2.0) ? p - 2.0 : 0.0);
            g = 1.0 - ((p < 1.0) ? p : (p > 2.0) ? 0.0 : 2.0 - p);
            b = 1.0 - ((p < 1.0) ? 0.0 : (p > 2.0) ? 3.0 - p : p - 1.0);  ;  
            wait (0.01);
        }
 
   }

}

void ChristmasLCD_thread(void const *args) 
{   

lcd_mutex.lock();

int i,s;
    lcd.cls();
    lcd.set_font((unsigned char*) Arial_9);
    s = 3;
    lcd.print_bm(bitmTree,95,0);  // print chistmas tree
    lcd.copy_to_lcd(); 
    lcd.setmode(XOR);             // XOR - a second print will erase  
    for(i = -15; i < 75; ){     
        lcd.print_bm(bitmSan1,i,2);
        wait(0.5);
        lcd.copy_to_lcd();           // update lcd  
        lcd.print_bm(bitmSan1,i,2);  // erase
        i= i+s;
        lcd.print_bm(bitmSan2,i,2);  // print next
        wait(0.5);
        lcd.copy_to_lcd();           // update lcd   
        lcd.print_bm(bitmSan2,i,2);  // erase
        i= i+s;
        lcd.print_bm(bitmSan3,i,2);  // print next 
        wait(0.5);
        lcd.copy_to_lcd();           // update lcd
        lcd.print_bm(bitmSan3,i,2);  // erase
        i= i+s;
   }
   lcd.print_bm(bitmSan3,i,2);
   lcd.set_auto_up(0);
   for(i=-20; i<5; i++){             // scrolling text
     lcd.locate(5,i);
     lcd.printf("Happy");
     lcd.locate(5,i+12);
     lcd.printf("Christmas");
     lcd.copy_to_lcd();
     lcd.locate(5,i);
     wait(0.2);
     lcd.printf("Happy");
     lcd.locate(5,i+12);
     lcd.printf("Christmas");
     lcd.copy_to_lcd();
     i=i+1;
   }  
   lcd.locate(5,i);
   lcd.printf("Happy");
   lcd.locate(5,i+12);
   lcd.printf("Christmas");
   lcd.copy_to_lcd();
   
   lcd_mutex.unlock();  

}

int main()
{
     Thread thread1(RGB_thread);
     Thread thread2(ChristmasLCD_thread);
     Thread thread3(Axisaccelerometer_thread);
     
     
    while (1) {
        
        for (float i=2000.0; i<10000.0; i+=100) {
            spkr.period(1.0/i);
            spkr=0.5;
            wait(0.1);
        }
        spkr=0.0;
        while(!fire) {}
    }
}