priprema za LV5 zad 04 Sumejja Porča
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Wed Jul 20 2022 13:52:56 by
1.7.2