LEDFunctions.cpp

Committer:
PA
Date:
2012-06-20
Revision:
0:e4f37b52019a

File content as of revision 0:e4f37b52019a:

/*****************************************************************************
** @brief controlling                                                       **  
** @detail                                                                  **
** @argument: ipwd: pwd class                                               **
*****************************************************************************/  

#include "mbed.h"
#include "LEDFunctions.h"
#include "UniPWM.h" 
//#include "rtos.h"

//Serial pc(USBTX,USBRX);
 
LEDFunctions::LEDFunctions() 
{
    m_pwm.push_back(new UniPWM(p5));
    m_pwm[0]->duty(0);
    m_map.insert(std::pair<std::string, int>("p5", 0));
    m_pwm.push_back(new UniPWM(p6));
    m_pwm[1]->duty(0);
    m_map.insert(std::pair<std::string, int>("p6", 1));
    m_pwm.push_back(new UniPWM(p7));
    m_pwm[2]->duty(0);
    m_map.insert(std::pair<std::string, int>("p7", 2));
    m_pwm.push_back(new UniPWM(p8));
    m_pwm[3]->duty(0);
    m_map.insert(std::pair<std::string, int>("p8", 3));
    m_pwm.push_back(new UniPWM(p9));
    m_pwm[4]->duty(0);
    m_map.insert(std::pair<std::string, int>("p9", 4));
    m_pwm.push_back(new UniPWM(p10));
    m_pwm[5]->duty(0);
    m_map.insert(std::pair<std::string, int>("p10", 5));
    m_pwm.push_back(new UniPWM(p11));
    m_pwm[6]->duty(0);
    m_map.insert(std::pair<std::string, int>("p11", 6));
    m_pwm.push_back(new UniPWM(p12));
    m_pwm[7]->duty(0);
    m_map.insert(std::pair<std::string, int>("p12", 7));
    m_pwm.push_back(new UniPWM(p13));
    m_pwm[8]->duty(0);
    m_map.insert(std::pair<std::string, int>("p13", 8));
    m_pwm.push_back(new UniPWM(p14));
    m_pwm[9]->duty(0);
    m_map.insert(std::pair<std::string, int>("p14", 9));
    m_pwm.push_back(new UniPWM(p15)); // UniPWM(p15)
    m_pwm[10]->duty(0);
    m_map.insert(std::pair<std::string, int>("p15", 10));
    m_pwm.push_back(new UniPWM(p16));
    m_pwm[11]->duty(0);
    m_map.insert(std::pair<std::string, int>("p16", 11));
    m_pwm.push_back(new UniPWM(p17));
    m_pwm[12]->duty(0);
    m_map.insert(std::pair<std::string, int>("p17", 12));
    m_pwm.push_back(new UniPWM(p18));
    m_pwm[13]->duty(0);
    m_map.insert(std::pair<std::string, int>("p18", 13));
    m_pwm.push_back(new UniPWM(p19));
    m_pwm[14]->duty(0);
    m_map.insert(std::pair<std::string, int>("p19", 14));
    m_pwm.push_back(new UniPWM(p20));
    m_pwm[15]->duty(0);
    m_map.insert(std::pair<std::string, int>("p20", 15));
    m_pwm.push_back(new UniPWM(p21));
    m_pwm[16]->duty(0);
    m_map.insert(std::pair<std::string, int>("p21", 16));
    m_pwm.push_back(new UniPWM(p22));
    m_pwm[17]->duty(0);
    m_map.insert(std::pair<std::string, int>("p22", 17));
    m_pwm.push_back(new UniPWM(p23));
    m_pwm[18]->duty(0);
    m_map.insert(std::pair<std::string, int>("p23", 18));
    m_pwm.push_back(new UniPWM(p24));
    m_pwm[19]->duty(0);
    m_map.insert(std::pair<std::string, int>("p24", 19));
    m_pwm.push_back(new UniPWM(p25));
    m_pwm[20]->duty(0);
    m_map.insert(std::pair<std::string, int>("p25", 20));
    m_pwm.push_back(new UniPWM(p26));
    m_pwm[21]->duty(0);
    m_map.insert(std::pair<std::string, int>("p26", 21));
    m_pwm.push_back(new UniPWM(p27));
    m_pwm[22]->duty(0);
    m_map.insert(std::pair<std::string, int>("p27", 22));
    m_pwm.push_back(new UniPWM(p28));
    m_pwm[23]->duty(0);
    m_map.insert(std::pair<std::string, int>("p28", 23));
    m_pwm.push_back(new UniPWM(p29));
    m_pwm[24]->duty(0);
    m_map.insert(std::pair<std::string, int>("p29", 24));
    m_pwm.push_back(new UniPWM(p30));
    m_pwm[25]->duty(0);
    m_map.insert(std::pair<std::string, int>("p30", 25));
    m_pwm.push_back(new UniPWM(LED1));
    m_pwm[26]->duty(0);
    m_map.insert(std::pair<std::string, int>("LED1", 26));
    m_pwm.push_back(new UniPWM(LED2));
    m_pwm[27]->duty(0);
    m_map.insert(std::pair<std::string, int>("LED2", 27));
    m_pwm.push_back(new UniPWM(LED3));
    m_pwm[28]->duty(0);
    m_map.insert(std::pair<std::string, int>("LED3", 28));
    m_pwm.push_back(new UniPWM(LED4));
    m_pwm[29]->duty(0);
    m_map.insert(std::pair<std::string, int>("LED4", 29));
}

void LEDFunctions::on(int n, int d, float b, float s){
    if(s > 1){
        for(float k = b/s; k < b; k += b/s){
            p += b/s;
            m_pwm[n]->duty(p);
            //Thread::wait(100);
            wait(0.1);
        }
        for(float i = s*0.1; i < d; i += 0.1){
            m_pwm[n]->duty(b);
            //Thread::wait(100);
            wait(0.1);
        }
    }
    else{ 
        for(float i = 0; i < d; i += 1){
            m_pwm[n]->duty(b);
            //Thread::wait(1000);
            wait(1);
        }
    }
    m_pwm[n]->duty(0);
}

/*
void LEDFunctions::on_abst(int n, int starttime, int endtime, float b, float s){
    id(n);
    if(time==starttime){
        if(s > 1){
            for(k = 0; k = b; k = b/s){
                p = p + b/s;
                _pin.duty(p);
                wait(0.1);
            }
            for(i = starttime + b; i < endtime; i += 0.1){
                _pin.duty(b);
                wait(0.1);    
            }
        }
        else{ 
            for(i = starttime; i = endtime; i += 0.1){
                _pin.duty(b);
                wait(0.1);
            }
        }
    }
}
*/
void LEDFunctions::on_forever(int n, float b, float s){
    if(s > 1){
        for(float k = b/s; k < b; k += b/s){
            p += b/s;
            m_pwm[n]->duty(p);
            //Thread::wait(100);
            wait(0.1);
        }
    }
    else{ 
        m_pwm[n]->duty(b);
    }
}

void LEDFunctions::off_forever(int n, float b, float s){
    if(s > 1){
        for(float k = 1; k > b; k -= 1/s){
            p = k;
            m_pwm[n]->duty(p);
            //Thread::wait(100);
            wait(0.1);
        }
        m_pwm[n]->duty(b);
    }
    else{ 
        m_pwm[n]->duty(b);
    }
}

void LEDFunctions::blink(int n, int f, int d, float lb, float ub, float s){
    float time = 1.0 / (2.0*f);
    float inc = 1.0/f;
    for(float i = 0.0; i < d; i += inc){
        if(s > 1){
            for(float k = lb; k < ub; k += (ub-lb)/s){
                    p += (ub-lb)/s;
                    m_pwm[n]->duty(p);
                    //Thread::wait(time*1000/s)
                    wait(time/s);       
            }
            for(float k = ub; k > lb; k -= (ub-lb)/s){
                    p = k;
                    m_pwm[n]->duty(k);
                    //Thread::wait(time*1000/s);
                    wait(time/s);
            }
            m_pwm[n]->duty(lb);
            //Thread::wait(time*1000/s);
            wait(time/s);
        }
        else {
            m_pwm[n]->duty(ub);
            //Thread::wait(time*1000);
            wait(1);
            m_pwm[n]->duty(lb);
            //Thread::wait(time*1000);
            wait(1);
        }
    }
}
/*
void LEDFunctions::blink_abst(int n, int f, int startime, int endtime, float ub, float lb, float s){
    id(n);
    for(i = starttime; i = endtime; i += 1/frequency){
        if(s > 1){
            for(k = lb; k = ub; k += (ub-lb)/s){
                    lb = lb + (up-lb)/s;
                    _pin.duty(lb);
                    wait((1/2*f)/((ub-lb)/s));
            }
            for(k = ub; k = lb; k -= ub/s){
                    ub = ub - (ub-lb)/s;
                    _pin.duty(ub);
                    wait((1/2*f)/((ub-lb)/s));
            }
        }
        else{
            _pin.duty(ub);
            wait(1/2*f);
            _pin.duty(lb);
            wait(1/2*f);
        }
    }
}
*/