TesysRail: Generazione Tono siunsoidale per vibrazione piezo con cassa acustica
Dependencies: mbed
Revision 5:9166f543c6b8, committed 2020-04-09
- Comitter:
- pinofal
- Date:
- Thu Apr 09 09:15:01 2020 +0000
- Parent:
- 4:c5559005c04b
- Commit message:
- TesysRail: Generazione Tono siunsoidale per vibrazione piezo con cassa acustica
Changed in this revision
| TesysRail_2.cpp | Show diff for this revision Revisions of this file |
| TesysRail_Sine.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/TesysRail_2.cpp Tue Feb 18 18:20:41 2020 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-#include "mbed.h"
-#define N 100
-
-
-// TEST DI GENERAZIONE SEGNALE AUDIO ANALOGICO
-
-// Definizione Seriale di comunicazione con PC
-Serial pc(USBTX, USBRX, 921600);
-
-//Pin di uscita del segnale Audio
-AnalogOut aAudioOut(PA_5);
-//DigitalOut dAudioOut (D13); // scopi diagnostici
-
-// periferiche presenti On Board
-DigitalOut OnBoardRedLED (LED3);
-DigitalOut OnBoardGreenLED (LED1);
-DigitalOut OnBoardBlueLED (LED2);
-DigitalIn OnBoardButton (USER_BUTTON);
-Ticker mySoundGeneration;
-
-
-
- //Dichiarazione variabioi volatili e globali
- volatile bool bStop;
- volatile int i = 0;
- double y;
- char cRxChar;
- volatile double afSin[N];
-
- //Funzione che inserisce nell'array 'afSin' la sinusoide generata
- void sineGeneration()
- {
- for(int j = 0;j<N;j++)
- {
- afSin[j]=(sin((6.28/N)*j)+1)/2.0;
-
- }
-
- }
-
- //Funzione la quale riproduce la sinusoide precedentemente messa nell'array 'afSin'
- void soundGeneration()
- {
-
- //pc.printf("Sono qui = 3\r\n"); //Necessità diagnostiche
- if(bStop==0) //Condizione necessaria per l'utilizzo di hyperterminal, nel caso si voglia fermare o far riprendere la produzione di frequenze
- {
- aAudioOut.write(afSin[i]);
- i++;
- if(i >=N)
- {
- i = 0;
- }
-
- }
-
- }
-
- void cambiaFrequenza(double _fs){
- double _Ts, _T;
- _Ts= 1/_fs;
- _T=_Ts/N;
-
- mySoundGeneration.detach();
- mySoundGeneration.attach(&soundGeneration, _T);
-
- }
-
-
-/********************/
-/* Main */
-/********************/
-
-
-
-int main()
-{
-
- // messaggio di benvenuto
- pc.printf("Welcome to Tesys-Rail\r\n");
-
- //inizializza variabili necessarie per l'utilizzo della seriale
- bStop=0;
- cRxChar = 0;
-
- // ACCENSIONE led DI BENVENUTO
- OnBoardRedLED=1;
- OnBoardBlueLED=1;
- OnBoardGreenLED=1;
- wait(2);
- OnBoardRedLED=0;
- OnBoardBlueLED=0;
- OnBoardGreenLED=0;
-
- //Dichiarazione variabili
- double fs = 40.0;
- volatile double Ts = 1.0/fs;
- volatile double T = Ts/N;
- //printf("T = %.6f\r\n", T); //Necessità diagnostiche
-
- // Agganciamento Ticker alla funzione soundGeneration
- sineGeneration();
- mySoundGeneration.attach(&soundGeneration, T);
-
-
-
-
-
- //++++++++++++++++++ INIZIO Test generazione Audio con segnale Analogico +++++++++++++++++++++ */
-
- /********************/
- /* Ciclo Principale */
- /********************/
- while(true)
- {
- //Inizio condizione per far fermare o riprendere l'esecuzione della funzione soundGeneration
-
-
-
- if(pc.readable())
- {
- //pc.printf("Sono qui = 0\r\n"); //Necessità diagnostiche
-
- cRxChar = pc.getc();
- //+++++++++++++++++++++++++++++++++++++++++++++++
- //Opzioni di cambio frequenza da seriale
- switch(cRxChar)
- {
- case '1':
- cambiaFrequenza(40.0);
- pc.printf("\r\n");
- break;
-
- case '2':
- cambiaFrequenza(80.0);
- pc.printf("\r\n");
- break;
-
- case '3':
- cambiaFrequenza(130.0);
- pc.printf("\r\n");
- break;
-
- case '4':
- cambiaFrequenza(180.0);
- pc.printf("\r\n");
- break;
-
- case '5':
- cambiaFrequenza(240.0);
- pc.printf("\r\n");
- break;
-
- case '6':
- cambiaFrequenza(300.0);
- pc.printf("\r\n");
- break;
-
- case 's':
- bStop = 1;
- pc.printf("\r\n");
- break;
-
- case 'r':
- bStop = 0;
- pc.printf("\r\n");
- break;
-
- case 'c':
- pc.printf("\033[2J");
- pc.printf("\r");
- break;
-
- default:
- pc.printf("\r\n");
- break;
-
- }
- //+++++++++++++++++++++++++++++++++++++++++++++++
-
- }
-
- }
- /********************/
- /* Fine */
- /* Ciclo Principale */
- /********************/
-
- }
-
- /********************/
- /* Fine */
- /* Main */
- /********************/
-
-
-
-
-
-
-
-
-
-
-
- //++++++++++++++++++ FINE Test generazione Audio con segnale Analogico +++++++++++++++++++++
-
- //++++++++++++++++++ INIZIO Test generazione Audio con segnale digitale +++++++++++++++++++++
- /*
- while(true)
- {
- dAudioOut = 1;
- wait_us(1270); // semiperiodo del segnale da generare (Sol 392Hz)
- dAudioOut = 0;
- wait_us(1270); // semiperiodo del segnale da generare
- }
- */
- //++++++++++++++++++ FINE Test generazione Audio con segnale digitale ++++++++++++++++++++++++
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TesysRail_Sine.cpp Thu Apr 09 09:15:01 2020 +0000
@@ -0,0 +1,219 @@
+#include "mbed.h"
+#define N 100
+
+
+// TEST DI GENERAZIONE SEGNALE AUDIO ANALOGICO
+
+// Definizione Seriale di comunicazione con PC
+Serial pc(USBTX, USBRX, 921600);
+
+//Pin di uscita del segnale Audio
+AnalogOut aAudioOut(PA_5);
+//DigitalOut dAudioOut (D13); // scopi diagnostici
+
+// periferiche presenti On Board
+DigitalOut OnBoardRedLED (LED3);
+DigitalOut OnBoardGreenLED (LED1);
+DigitalOut OnBoardBlueLED (LED2);
+DigitalIn OnBoardButton (USER_BUTTON);
+Ticker mySoundGeneration;
+
+
+
+ //Dichiarazione variabioi volatili e globali
+ volatile bool bStop;
+ volatile int i = 0;
+ double y;
+ char cRxChar;
+ volatile double afSin[N];
+
+ //Funzione che inserisce nell'array 'afSin' la sinusoide generata
+ void sineGeneration()
+ {
+ for(int j = 0;j<N;j++)
+ {
+ afSin[j]=(sin((6.28/N)*j)+1)/2.0;
+
+ }
+
+ }
+
+ //Funzione la quale riproduce la sinusoide precedentemente messa nell'array 'afSin'
+ void soundGeneration()
+ {
+
+ //pc.printf("Sono qui = 3\r\n"); //Necessità diagnostiche
+ if(bStop==0) //Condizione necessaria per l'utilizzo di hyperterminal, nel caso si voglia fermare o far riprendere la produzione di frequenze
+ {
+ aAudioOut.write(afSin[i]);
+ i++;
+ if(i >=N)
+ {
+ i = 0;
+ }
+
+ }
+
+ }
+
+ void cambiaFrequenza(double _fs){
+ double _Ts, _T;
+ _Ts= 1/_fs;
+ _T=_Ts/N;
+
+ mySoundGeneration.detach();
+ mySoundGeneration.attach(&soundGeneration, _T);
+
+ }
+
+
+/********************/
+/* Main */
+/********************/
+
+
+
+int main()
+{
+
+ // messaggio di benvenuto
+ pc.printf("Welcome to Tesys-Rail\r\n");
+
+ //inizializza variabili necessarie per l'utilizzo della seriale
+ bStop=0;
+ cRxChar = 0;
+
+ // ACCENSIONE led DI BENVENUTO
+ OnBoardRedLED=1;
+ OnBoardBlueLED=1;
+ OnBoardGreenLED=1;
+ wait(2);
+ OnBoardRedLED=0;
+ OnBoardBlueLED=0;
+ OnBoardGreenLED=0;
+
+ //Dichiarazione variabili
+ double fs = 40.0;
+ volatile double Ts = 1.0/fs;
+ volatile double T = Ts/N;
+ //printf("T = %.6f\r\n", T); //Necessità diagnostiche
+
+ // Agganciamento Ticker alla funzione soundGeneration
+ sineGeneration();
+ mySoundGeneration.attach(&soundGeneration, T);
+
+
+
+
+
+ //++++++++++++++++++ INIZIO Test generazione Audio con segnale Analogico +++++++++++++++++++++ */
+
+ /********************/
+ /* Ciclo Principale */
+ /********************/
+ while(true)
+ {
+ //Inizio condizione per far fermare o riprendere l'esecuzione della funzione soundGeneration
+
+
+
+ if(pc.readable())
+ {
+ //pc.printf("Sono qui = 0\r\n"); //Necessità diagnostiche
+
+ cRxChar = pc.getc();
+ //+++++++++++++++++++++++++++++++++++++++++++++++
+ //Opzioni di cambio frequenza da seriale
+ switch(cRxChar)
+ {
+ case '1':
+ cambiaFrequenza(40.0);
+ pc.printf("\r\n");
+ break;
+
+ case '2':
+ cambiaFrequenza(80.0);
+ pc.printf("\r\n");
+ break;
+
+ case '3':
+ cambiaFrequenza(130.0);
+ pc.printf("\r\n");
+ break;
+
+ case '4':
+ cambiaFrequenza(180.0);
+ pc.printf("\r\n");
+ break;
+
+ case '5':
+ cambiaFrequenza(240.0);
+ pc.printf("\r\n");
+ break;
+
+ case '6':
+ cambiaFrequenza(300.0);
+ pc.printf("\r\n");
+ break;
+
+ case 's':
+ bStop = 1;
+ pc.printf("\r\n");
+ break;
+
+ case 'r':
+ bStop = 0;
+ pc.printf("\r\n");
+ break;
+
+ case 'c':
+ pc.printf("\033[2J");
+ pc.printf("\r");
+ break;
+
+ default:
+ pc.printf("\r\n");
+ break;
+
+ }
+ //+++++++++++++++++++++++++++++++++++++++++++++++
+
+ }
+
+ }
+ /********************/
+ /* Fine */
+ /* Ciclo Principale */
+ /********************/
+
+ }
+
+ /********************/
+ /* Fine */
+ /* Main */
+ /********************/
+
+
+
+
+
+
+
+
+
+
+
+ //++++++++++++++++++ FINE Test generazione Audio con segnale Analogico +++++++++++++++++++++
+
+ //++++++++++++++++++ INIZIO Test generazione Audio con segnale digitale +++++++++++++++++++++
+ /*
+ while(true)
+ {
+ dAudioOut = 1;
+ wait_us(1270); // semiperiodo del segnale da generare (Sol 392Hz)
+ dAudioOut = 0;
+ wait_us(1270); // semiperiodo del segnale da generare
+ }
+ */
+ //++++++++++++++++++ FINE Test generazione Audio con segnale digitale ++++++++++++++++++++++++
+