Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
TesysRail_Sine.cpp
00001 #include "mbed.h" 00002 #define N 100 00003 00004 00005 // TEST DI GENERAZIONE SEGNALE AUDIO ANALOGICO 00006 00007 // Definizione Seriale di comunicazione con PC 00008 Serial pc(USBTX, USBRX, 921600); 00009 00010 //Pin di uscita del segnale Audio 00011 AnalogOut aAudioOut(PA_5); 00012 //DigitalOut dAudioOut (D13); // scopi diagnostici 00013 00014 // periferiche presenti On Board 00015 DigitalOut OnBoardRedLED (LED3); 00016 DigitalOut OnBoardGreenLED (LED1); 00017 DigitalOut OnBoardBlueLED (LED2); 00018 DigitalIn OnBoardButton (USER_BUTTON); 00019 Ticker mySoundGeneration; 00020 00021 00022 00023 //Dichiarazione variabioi volatili e globali 00024 volatile bool bStop; 00025 volatile int i = 0; 00026 double y; 00027 char cRxChar; 00028 volatile double afSin[N]; 00029 00030 //Funzione che inserisce nell'array 'afSin' la sinusoide generata 00031 void sineGeneration() 00032 { 00033 for(int j = 0;j<N;j++) 00034 { 00035 afSin[j]=(sin((6.28/N)*j)+1)/2.0; 00036 00037 } 00038 00039 } 00040 00041 //Funzione la quale riproduce la sinusoide precedentemente messa nell'array 'afSin' 00042 void soundGeneration() 00043 { 00044 00045 //pc.printf("Sono qui = 3\r\n"); //Necessità diagnostiche 00046 if(bStop==0) //Condizione necessaria per l'utilizzo di hyperterminal, nel caso si voglia fermare o far riprendere la produzione di frequenze 00047 { 00048 aAudioOut.write(afSin[i]); 00049 i++; 00050 if(i >=N) 00051 { 00052 i = 0; 00053 } 00054 00055 } 00056 00057 } 00058 00059 void cambiaFrequenza(double _fs){ 00060 double _Ts, _T; 00061 _Ts= 1/_fs; 00062 _T=_Ts/N; 00063 00064 mySoundGeneration.detach(); 00065 mySoundGeneration.attach(&soundGeneration, _T); 00066 00067 } 00068 00069 00070 /********************/ 00071 /* Main */ 00072 /********************/ 00073 00074 00075 00076 int main() 00077 { 00078 00079 // messaggio di benvenuto 00080 pc.printf("Welcome to Tesys-Rail\r\n"); 00081 00082 //inizializza variabili necessarie per l'utilizzo della seriale 00083 bStop=0; 00084 cRxChar = 0; 00085 00086 // ACCENSIONE led DI BENVENUTO 00087 OnBoardRedLED=1; 00088 OnBoardBlueLED=1; 00089 OnBoardGreenLED=1; 00090 wait(2); 00091 OnBoardRedLED=0; 00092 OnBoardBlueLED=0; 00093 OnBoardGreenLED=0; 00094 00095 //Dichiarazione variabili 00096 double fs = 40.0; 00097 volatile double Ts = 1.0/fs; 00098 volatile double T = Ts/N; 00099 //printf("T = %.6f\r\n", T); //Necessità diagnostiche 00100 00101 // Agganciamento Ticker alla funzione soundGeneration 00102 sineGeneration(); 00103 mySoundGeneration.attach(&soundGeneration, T); 00104 00105 00106 00107 00108 00109 //++++++++++++++++++ INIZIO Test generazione Audio con segnale Analogico +++++++++++++++++++++ */ 00110 00111 /********************/ 00112 /* Ciclo Principale */ 00113 /********************/ 00114 while(true) 00115 { 00116 //Inizio condizione per far fermare o riprendere l'esecuzione della funzione soundGeneration 00117 00118 00119 00120 if(pc.readable()) 00121 { 00122 //pc.printf("Sono qui = 0\r\n"); //Necessità diagnostiche 00123 00124 cRxChar = pc.getc(); 00125 //+++++++++++++++++++++++++++++++++++++++++++++++ 00126 //Opzioni di cambio frequenza da seriale 00127 switch(cRxChar) 00128 { 00129 case '1': 00130 cambiaFrequenza(40.0); 00131 pc.printf("\r\n"); 00132 break; 00133 00134 case '2': 00135 cambiaFrequenza(80.0); 00136 pc.printf("\r\n"); 00137 break; 00138 00139 case '3': 00140 cambiaFrequenza(130.0); 00141 pc.printf("\r\n"); 00142 break; 00143 00144 case '4': 00145 cambiaFrequenza(180.0); 00146 pc.printf("\r\n"); 00147 break; 00148 00149 case '5': 00150 cambiaFrequenza(240.0); 00151 pc.printf("\r\n"); 00152 break; 00153 00154 case '6': 00155 cambiaFrequenza(300.0); 00156 pc.printf("\r\n"); 00157 break; 00158 00159 case 's': 00160 bStop = 1; 00161 pc.printf("\r\n"); 00162 break; 00163 00164 case 'r': 00165 bStop = 0; 00166 pc.printf("\r\n"); 00167 break; 00168 00169 case 'c': 00170 pc.printf("\033[2J"); 00171 pc.printf("\r"); 00172 break; 00173 00174 default: 00175 pc.printf("\r\n"); 00176 break; 00177 00178 } 00179 //+++++++++++++++++++++++++++++++++++++++++++++++ 00180 00181 } 00182 00183 } 00184 /********************/ 00185 /* Fine */ 00186 /* Ciclo Principale */ 00187 /********************/ 00188 00189 } 00190 00191 /********************/ 00192 /* Fine */ 00193 /* Main */ 00194 /********************/ 00195 00196 00197 00198 00199 00200 00201 00202 00203 00204 00205 00206 //++++++++++++++++++ FINE Test generazione Audio con segnale Analogico +++++++++++++++++++++ 00207 00208 //++++++++++++++++++ INIZIO Test generazione Audio con segnale digitale +++++++++++++++++++++ 00209 /* 00210 while(true) 00211 { 00212 dAudioOut = 1; 00213 wait_us(1270); // semiperiodo del segnale da generare (Sol 392Hz) 00214 dAudioOut = 0; 00215 wait_us(1270); // semiperiodo del segnale da generare 00216 } 00217 */ 00218 //++++++++++++++++++ FINE Test generazione Audio con segnale digitale ++++++++++++++++++++++++ 00219
Generated on Wed Jul 27 2022 12:33:25 by
1.7.2