init

Dependencies:   SDFileSystem mbed-rtos mbed wave_player

main.cpp

Committer:
emanuel22e
Date:
21 months ago
Revision:
1:4fd1a4e54648
Parent:
0:47321458789d

File content as of revision 1:4fd1a4e54648:

//#include "mbed.h"
//#include "rtos.h"
//#include "wave_player.h"
//#include "SDFileSystem.h"
//SDFileSystem sd(p5, p6, p7, p8, "sd");
//PwmOut red(p21);
//PwmOut green(p22);
//PwmOut blue(p23);
//AnalogOut speaker(p18);
//wave_player waver(&speaker);
//Thread thread1;
//Thread thread2;
//void t1() {
//    red = 0;
//    green = 0;
//    blue = 0;
//    while (1) {
//        red = 1;
//        green = 0;
//        blue = 0;
//        Thread::wait(300);
//        red = 0;
//        green = 1;
//        blue = 0;
//        Thread::wait(300);
//        red = 0;
//        green = 0;
//        blue = 1;
//        Thread::wait(300);
//        
//    }
//void t2() {
//    FILE *wave_file;
//    //open wav file and play it
//    wave_file=fopen("/sd/thread_sound.wav","r");
//    waver.play(wave_file);
//    fclose(wave_file);
//    //end of program
//    Thread::wait(500);
//}
//
//int main() {
//    thread1.start(t1);
//    thread2.start(t2);
//    while(1) {
//        
//    }
//}


#include "mbed.h"
#include "rtos.h"
#include "wave_player.h"
#include "SDFileSystem.h"
#include "uLCD_4DGL.h"
SDFileSystem sd(p5, p6, p7, p8, "sd");
PwmOut red(p21);
PwmOut green(p22);
PwmOut blue(p23);
PwmOut speaker(p26);
Serial bluemod(p13,p14);
//wave_player waver(&speaker);
uLCD_4DGL uLCD(p28,p27,p11);
//Thread thread1;
Thread thread2;
Thread thread3;
Thread thread4;
Mutex u_mutex;
void t1() {
    red = 0;
    green = 0;
    blue = 0;
    while (1) {
        red = 1;
        green = 0;
        blue = 0;
        Thread::wait(300);
        red = 0;
        green = 1;
        blue = 0;
        Thread::wait(300);
        red = 0;
        green = 0;
        blue = 1;
        Thread::wait(300);
    }
}
void t2() {
    /*
    FILE *wave_file;
    //open wav file and play it
    wave_file=fopen("/sd/mario_sound.wav","r");
    waver.play(wave_file);
    fclose(wave_file);
    //end of program
    Thread::wait(500);
    */
    speaker.period(1.0/500.0); // 500hz period
        speaker =0.5; //50% duty cycle - max volume
        Thread::wait(3);
        speaker=0.0; // turn off audio
        Thread::wait(2);
}
void t3() {
    while (1) {
        u_mutex.lock();
        uLCD.text_width(2); //4X size text
        uLCD.text_height(2);
        u_mutex.unlock();
        u_mutex.lock();
        uLCD.color(RED);
        u_mutex.unlock();
        for (int i=10; i>=0; --i) {
            u_mutex.lock();
            uLCD.locate(1,2);
            uLCD.printf("%2D",i);
            u_mutex.unlock();
            Thread::wait(750);
        }
        //u_mutex.unlock();
        Thread::wait(1000);
    }
}
void t4() {
    while (1) {
        u_mutex.lock();
        uLCD.text_width(2); //4X size text
        uLCD.text_height(2);
        u_mutex.unlock();
        u_mutex.lock();
        uLCD.color(GREEN);
        u_mutex.unlock();
        for (int i=10; i>=0; --i) {
            u_mutex.lock();
            uLCD.locate(1,4);
            uLCD.printf("%2D",i);
            u_mutex.unlock();
            Thread::wait(1000);
        }
        //u_mutex.unlock();
        Thread::wait(1200);
    }
}
int main() {
    //thread1.start(t1);
    thread2.start(t2);
    thread3.start(t3);
    thread4.start(t4);
    char bred=0;
    char bgreen=0;
    char bblue=0;
    red = green = blue = 0;
    while(1) {
        if (bluemod.readable()) {
            u_mutex.lock();
        
            if (bluemod.getc()=='!') {
                if (bluemod.getc()=='C') { //color data packet
                    bred = bluemod.getc(); // RGB color values
                    bgreen = bluemod.getc();
                    bblue = bluemod.getc();
                    if (bluemod.getc()==char(~('!' + 'C' + bred + bgreen + bblue))) { //checksum OK?
                        red = bred/255.0; //send new color to RGB LED PWM outputs
                        green = bgreen/255.0;
                        blue = bblue/255.0;
                    }
                }
            }
            u_mutex.unlock();
        }
        
        
        
        
        
        
        
        /*
        red = 0;
        green = 0;
        blue = 0;
        while (1) {
            red = 1;
            green = 0;
            blue = 0;
            Thread::wait(300);
            //wait(.3);
            red = 0;
            green = 1;
            blue = 0;
            Thread::wait(300);
            //wait(.3);
            red = 0;
            green = 0;
            blue = 1;
            Thread::wait(300);
            //wait(.3);
        
        }
        */
        /*
        FILE *wave_file;
        //open wav file and play it
        wave_file=fopen("/sd/mario_sound.wav","r");
        waver.play(wave_file);
        fclose(wave_file);
        //end of program
        Thread::wait(500);
        */
        
        /*
        u_mutex.lock();
        uLCD.text_width(2); //4X size text
        uLCD.text_height(2);
        u_mutex.unlock();
        u_mutex.lock();
        uLCD.color(RED);
        u_mutex.unlock();
        for (int i=10; i>=0; --i) {
            u_mutex.lock();
            uLCD.locate(1,2);
            uLCD.printf("%2D",i);
            u_mutex.unlock();
            Thread::wait(750);
        }
        Thread::wait(1000);
        */
        
        /*
        speaker.period(1.0/500.0); // 500hz period
        speaker =0.5; //50% duty cycle - max volume
        Thread::wait(10);
        speaker=0.0; // turn off audio
        Thread::wait(10);
        */
        
    }
}