a small song

Dependencies:   C12832 LM75B MMA7660 mbed

main.cpp

Committer:
tyli
Date:
2015-02-16
Revision:
0:9d7b581da110

File content as of revision 0:9d7b581da110:

#include "main.h"
#include "morse.h"

#define DO 0.003822258
#define RE 0.003405245
#define MI 0.003033728
#define FA 0.002863458
#define SO 0.002551050
#define LA 0.002272727

#define UT 0.2
#define BREATH 0.02
#define V 0.5

BusIn joy(p15,p12,p13,p16);
C12832 lcd(p5,p7,p6,p8,p11);
MMA7660 MMA(p28,p27);
LM75B sensor(p28,p27);
PwmOut spkr(p26);

void MSSRSMDR()
{
    spkr.period(DO); spkr=V;   wait(0.5*UT-BREATH); 
                     spkr=0.0; wait(BREATH);
    spkr.period(RE); spkr=V;   wait(0.5*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(MI); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(SO); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(SO); spkr=V;   wait(1.5*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(LA); spkr=V;   wait(0.5*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(SO); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(MI); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(DO); spkr=V;   wait(1.5*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(RE); spkr=V;   wait(0.5*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr=0.0;
}

void MMRDR()
{
    spkr.period(MI); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(MI); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(RE); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(DO); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(RE); spkr=V;   wait(3.0*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr=0.0;
}

void MMRRD()
{
    spkr.period(MI); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(MI); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(RE); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(RE); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(DO); spkr=V;   wait(4.0*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr=0.0;
}

void FFLLSMDR()
{
    spkr.period(FA); spkr=V;   wait(2.0*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(FA); spkr=V;   wait(2.0*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(LA); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(LA); spkr=V;   wait(3.0*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(SO); spkr=V;   wait(2.0*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(MI); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(DO); spkr=V;   wait(UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr.period(RE); spkr=V;   wait(3.0*UT-BREATH);
                     spkr=0.0; wait(BREATH);
    spkr=0.0;
}

void sing()
{
    MSSRSMDR();
    MMRDR();
    MSSRSMDR();
    MMRRD();
    FFLLSMDR();
    MSSRSMDR();
    MMRRD();
}

void temp(int i)
{
    if(i>=0)
    {
        i=i%100;
        morse(i/10);
        morse(i%10);
    }
}

int main()
{
    float x,y,z;
    while(1)
    {
        x=MMA.x();
        y=MMA.y();
        z=MMA.z();
        if(x*x+y*y+z*z>3.5) temp((int)sensor);
        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("Temp = %d\n",(int)sensor);
        if(joy) sing();
        wait(0.02);
    }
}