testing

Dependencies:   C12832_lcd LCD_fonts LM75B MMA7660 mbed-rtos mbed

Committer:
embeddednerd
Date:
Sun Nov 02 20:41:59 2014 +0000
Revision:
0:0a2678204e37
testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
embeddednerd 0:0a2678204e37 1 #include "mbed.h"
embeddednerd 0:0a2678204e37 2 #include "rtos.h"
embeddednerd 0:0a2678204e37 3 #include "C12832_lcd.h"
embeddednerd 0:0a2678204e37 4 #include "Arial_9.h"
embeddednerd 0:0a2678204e37 5 #include "Small_7.h"
embeddednerd 0:0a2678204e37 6 #include "graphics.h"
embeddednerd 0:0a2678204e37 7 #include "MMA7660.h"
embeddednerd 0:0a2678204e37 8
embeddednerd 0:0a2678204e37 9
embeddednerd 0:0a2678204e37 10 DigitalIn fire(p14);
embeddednerd 0:0a2678204e37 11 PwmOut spkr(p26);
embeddednerd 0:0a2678204e37 12
embeddednerd 0:0a2678204e37 13 C12832_LCD lcd;
embeddednerd 0:0a2678204e37 14
embeddednerd 0:0a2678204e37 15 PwmOut r (p23);
embeddednerd 0:0a2678204e37 16 PwmOut g (p24);
embeddednerd 0:0a2678204e37 17 PwmOut b (p25);
embeddednerd 0:0a2678204e37 18
embeddednerd 0:0a2678204e37 19 MMA7660 MMA(p28, p27);
embeddednerd 0:0a2678204e37 20
embeddednerd 0:0a2678204e37 21 DigitalOut connectionLed(LED1);
embeddednerd 0:0a2678204e37 22 PwmOut Zaxis_p(LED2);
embeddednerd 0:0a2678204e37 23 PwmOut Zaxis_n(LED3);
embeddednerd 0:0a2678204e37 24
embeddednerd 0:0a2678204e37 25 Mutex lcd_mutex;
embeddednerd 0:0a2678204e37 26
embeddednerd 0:0a2678204e37 27 void Axisaccelerometer_thread(void const *args)
embeddednerd 0:0a2678204e37 28 {
embeddednerd 0:0a2678204e37 29 lcd_mutex.lock();
embeddednerd 0:0a2678204e37 30
embeddednerd 0:0a2678204e37 31 if (MMA.testConnection())
embeddednerd 0:0a2678204e37 32 connectionLed = 1;
embeddednerd 0:0a2678204e37 33
embeddednerd 0:0a2678204e37 34 while(1) {
embeddednerd 0:0a2678204e37 35 Zaxis_p = MMA.z();
embeddednerd 0:0a2678204e37 36 Zaxis_n = -MMA.z();
embeddednerd 0:0a2678204e37 37
embeddednerd 0:0a2678204e37 38 lcd_mutex.unlock();
embeddednerd 0:0a2678204e37 39 }
embeddednerd 0:0a2678204e37 40
embeddednerd 0:0a2678204e37 41 }
embeddednerd 0:0a2678204e37 42
embeddednerd 0:0a2678204e37 43 void RGB_thread(void const *args)
embeddednerd 0:0a2678204e37 44 {
embeddednerd 0:0a2678204e37 45
embeddednerd 0:0a2678204e37 46 r.period(0.001);
embeddednerd 0:0a2678204e37 47 while(1) {
embeddednerd 0:0a2678204e37 48
embeddednerd 0:0a2678204e37 49 for(float i = 0.0; i < 1.0 ; i += 0.001) {
embeddednerd 0:0a2678204e37 50 float p = 3 * i;
embeddednerd 0:0a2678204e37 51 r = 1.0 - ((p < 1.0) ? 1.0 - p : (p > 2.0) ? p - 2.0 : 0.0);
embeddednerd 0:0a2678204e37 52 g = 1.0 - ((p < 1.0) ? p : (p > 2.0) ? 0.0 : 2.0 - p);
embeddednerd 0:0a2678204e37 53 b = 1.0 - ((p < 1.0) ? 0.0 : (p > 2.0) ? 3.0 - p : p - 1.0); ;
embeddednerd 0:0a2678204e37 54 wait (0.01);
embeddednerd 0:0a2678204e37 55 }
embeddednerd 0:0a2678204e37 56
embeddednerd 0:0a2678204e37 57 }
embeddednerd 0:0a2678204e37 58
embeddednerd 0:0a2678204e37 59 }
embeddednerd 0:0a2678204e37 60
embeddednerd 0:0a2678204e37 61 void ChristmasLCD_thread(void const *args)
embeddednerd 0:0a2678204e37 62 {
embeddednerd 0:0a2678204e37 63
embeddednerd 0:0a2678204e37 64 lcd_mutex.lock();
embeddednerd 0:0a2678204e37 65
embeddednerd 0:0a2678204e37 66 int i,s;
embeddednerd 0:0a2678204e37 67 lcd.cls();
embeddednerd 0:0a2678204e37 68 lcd.set_font((unsigned char*) Arial_9);
embeddednerd 0:0a2678204e37 69 s = 3;
embeddednerd 0:0a2678204e37 70 lcd.print_bm(bitmTree,95,0); // print chistmas tree
embeddednerd 0:0a2678204e37 71 lcd.copy_to_lcd();
embeddednerd 0:0a2678204e37 72 lcd.setmode(XOR); // XOR - a second print will erase
embeddednerd 0:0a2678204e37 73 for(i = -15; i < 75; ){
embeddednerd 0:0a2678204e37 74 lcd.print_bm(bitmSan1,i,2);
embeddednerd 0:0a2678204e37 75 wait(0.5);
embeddednerd 0:0a2678204e37 76 lcd.copy_to_lcd(); // update lcd
embeddednerd 0:0a2678204e37 77 lcd.print_bm(bitmSan1,i,2); // erase
embeddednerd 0:0a2678204e37 78 i= i+s;
embeddednerd 0:0a2678204e37 79 lcd.print_bm(bitmSan2,i,2); // print next
embeddednerd 0:0a2678204e37 80 wait(0.5);
embeddednerd 0:0a2678204e37 81 lcd.copy_to_lcd(); // update lcd
embeddednerd 0:0a2678204e37 82 lcd.print_bm(bitmSan2,i,2); // erase
embeddednerd 0:0a2678204e37 83 i= i+s;
embeddednerd 0:0a2678204e37 84 lcd.print_bm(bitmSan3,i,2); // print next
embeddednerd 0:0a2678204e37 85 wait(0.5);
embeddednerd 0:0a2678204e37 86 lcd.copy_to_lcd(); // update lcd
embeddednerd 0:0a2678204e37 87 lcd.print_bm(bitmSan3,i,2); // erase
embeddednerd 0:0a2678204e37 88 i= i+s;
embeddednerd 0:0a2678204e37 89 }
embeddednerd 0:0a2678204e37 90 lcd.print_bm(bitmSan3,i,2);
embeddednerd 0:0a2678204e37 91 lcd.set_auto_up(0);
embeddednerd 0:0a2678204e37 92 for(i=-20; i<5; i++){ // scrolling text
embeddednerd 0:0a2678204e37 93 lcd.locate(5,i);
embeddednerd 0:0a2678204e37 94 lcd.printf("Happy");
embeddednerd 0:0a2678204e37 95 lcd.locate(5,i+12);
embeddednerd 0:0a2678204e37 96 lcd.printf("Christmas");
embeddednerd 0:0a2678204e37 97 lcd.copy_to_lcd();
embeddednerd 0:0a2678204e37 98 lcd.locate(5,i);
embeddednerd 0:0a2678204e37 99 wait(0.2);
embeddednerd 0:0a2678204e37 100 lcd.printf("Happy");
embeddednerd 0:0a2678204e37 101 lcd.locate(5,i+12);
embeddednerd 0:0a2678204e37 102 lcd.printf("Christmas");
embeddednerd 0:0a2678204e37 103 lcd.copy_to_lcd();
embeddednerd 0:0a2678204e37 104 i=i+1;
embeddednerd 0:0a2678204e37 105 }
embeddednerd 0:0a2678204e37 106 lcd.locate(5,i);
embeddednerd 0:0a2678204e37 107 lcd.printf("Happy");
embeddednerd 0:0a2678204e37 108 lcd.locate(5,i+12);
embeddednerd 0:0a2678204e37 109 lcd.printf("Christmas");
embeddednerd 0:0a2678204e37 110 lcd.copy_to_lcd();
embeddednerd 0:0a2678204e37 111
embeddednerd 0:0a2678204e37 112 lcd_mutex.unlock();
embeddednerd 0:0a2678204e37 113
embeddednerd 0:0a2678204e37 114 }
embeddednerd 0:0a2678204e37 115
embeddednerd 0:0a2678204e37 116 int main()
embeddednerd 0:0a2678204e37 117 {
embeddednerd 0:0a2678204e37 118 Thread thread1(RGB_thread);
embeddednerd 0:0a2678204e37 119 Thread thread2(ChristmasLCD_thread);
embeddednerd 0:0a2678204e37 120 Thread thread3(Axisaccelerometer_thread);
embeddednerd 0:0a2678204e37 121
embeddednerd 0:0a2678204e37 122
embeddednerd 0:0a2678204e37 123 while (1) {
embeddednerd 0:0a2678204e37 124
embeddednerd 0:0a2678204e37 125 for (float i=2000.0; i<10000.0; i+=100) {
embeddednerd 0:0a2678204e37 126 spkr.period(1.0/i);
embeddednerd 0:0a2678204e37 127 spkr=0.5;
embeddednerd 0:0a2678204e37 128 wait(0.1);
embeddednerd 0:0a2678204e37 129 }
embeddednerd 0:0a2678204e37 130 spkr=0.0;
embeddednerd 0:0a2678204e37 131 while(!fire) {}
embeddednerd 0:0a2678204e37 132 }
embeddednerd 0:0a2678204e37 133 }
embeddednerd 0:0a2678204e37 134