priprema za LV5 zad 04 Sumejja Porča

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #define PI 3.1415926 
00003 
00004 AnalogOut aout(PTE30);
00005 
00006 //[f1(t)*sin(t) + f2(t)]
00007 //f1(t) amplitude
00008 //f2(t) x translation
00009 //t our steps
00010 
00011 int hills(48), oneHill(40); //number of hills in signature, number of steps in one hill
00012 int hold(5); //number of milliseconds that are going to hold the signal
00013 float ampl, transl;
00014 
00015 void amplRefresh(int t)
00016 {
00017     if(t < 2 * oneHill || (t >= 12 * oneHill && t < 14 * oneHill) || ( t >= 24 * oneHill && t < 26 * oneHill) || ( t >= 36 * oneHill && t < 38 * oneHill))
00018     ampl = 0.1;
00019     else if (t >= 2 * oneHill && t < 5 * oneHill)
00020      {
00021     if ((t + oneHill/2) % oneHill == 0) ampl *= 3;
00022      }
00023     else if ( t >= 5 * oneHill && t < 9 * oneHill)
00024     ampl = 1;
00025     else if ( t >= 9*oneHill && t < 12 * oneHill)
00026     {
00027     if ((t + oneHill/2) % oneHill == 0) ampl /= 3.;
00028     }
00029     else if ( t >= 14 * oneHill && t < 18 * oneHill)
00030     ampl = 0.7;
00031     else if ( t >= 18 * oneHill && t < 20 * oneHill)
00032     ampl = 0.35;
00033     else if ( t >= 20 * oneHill && t < 24 * oneHill)
00034     ampl = 1;
00035     else if ( t >= 26 * oneHill && t < 28 * oneHill)
00036     ampl = 1;
00037     else if ( t >= 28 * oneHill && t < 30 * oneHill)
00038     ampl = 0.8;
00039     else if ( t >= 30 * oneHill && t < 32 * oneHill)
00040     ampl = 1;
00041     else if ( t >= 32 * oneHill && t < 34 * oneHill)
00042     ampl = 0.8;
00043     else if ( t >= 34 * oneHill && t < 36 * oneHill)
00044     ampl = 1;
00045     else if ( t >= 38 * oneHill && t < 42 * oneHill)
00046     ampl = 0.5;
00047     else if ( t >= 42 * oneHill && t < 44 * oneHill)
00048     ampl = 0.4;
00049     else if ( t >= 44 * oneHill && t < 48 * oneHill)
00050     ampl = 1;  
00051 }
00052 
00053 float transRefresh(int t)
00054 {
00055     
00056     if(t < 2 * oneHill || (t >= 12 * oneHill && t < 14 * oneHill) || ( t >= 24 * oneHill && t < 26 * oneHill) || ( t >= 36 * oneHill && t < 38 * oneHill))
00057     transl = 1;
00058     else if ( t >= 5 * oneHill && t < 9 * oneHill)
00059     transl = 0.7;
00060     else if ( t >= 9 * oneHill && t < 12 * oneHill)
00061     transl = 0.5;
00062     else if ( t >= 14 * oneHill && t < 18 * oneHill)
00063     {
00064     if( t == 14) transl = 0.7;
00065         else if ( (t + oneHill/2) % oneHill == 0 ) 
00066         transl -= 0.05;
00067     }
00068     else if ( t >= 18 * oneHill && t < 20 * oneHill)
00069     transl = 0.5;
00070     else if ( t >= 20 * oneHill && t < 24 * oneHill)
00071     transl = 0.7;
00072     else if ( t >= 26 * oneHill && t < 28 * oneHill)
00073     transl = 0.7;
00074     else if ( t >= 28 * oneHill && t < 30 * oneHill)
00075     {
00076     if( t == 28 )
00077         transl = 0.8;
00078         else if ( (t + oneHill/2) % oneHill == 0 )
00079         transl -= 0.05;
00080     }
00081     else if ( t >= 30 * oneHill && t < 32 * oneHill)
00082     transl = 0.7;
00083     else if ( t >= 32 * oneHill && t < 34 * oneHill)
00084       {
00085     if( t == 32 )
00086         transl = 0.8;
00087         else if ( (t + oneHill/2) % oneHill == 0 )
00088         transl -= 0.05;
00089     }
00090     else if ( t >= 34 * oneHill && t < 36 * oneHill)
00091     transl = 0.7;
00092     else if ( t >= 38 * oneHill && t < 42 * oneHill)
00093      {
00094     if( t == 38 )
00095         transl = 0.7;
00096         else if ( (t + oneHill/2) % oneHill == 0 )
00097         transl -= 0.05;
00098     }
00099     else if ( t >= 42 * oneHill && t < 44 * oneHill)
00100     transl = 0.5;
00101     else if ( t >= 44 * oneHill && t < 48 * oneHill)
00102      {
00103     if( t == 44 )
00104         transl = 0.2;
00105         else if ( (t + oneHill/2) % oneHill == 0 )
00106         transl += 0.05;
00107     } 
00108 }
00109 
00110 void writeLetter(int step){
00111    
00112     amplRefresh(step);
00113     transRefresh(step);
00114     aout = sin(PI / oneHill * step)*ampl/3.3 + transl;
00115     wait_us(hold);
00116 }
00117 
00118 
00119 int main() {
00120     for(int t = 0;;t++)
00121     {
00122     t %= hills * oneHill;
00123         writeLetter(t);
00124     }
00125 }