Go Down

Topic: grafico onde sonore  (Read 637 times) previous topic - next topic

1simone0

salve di nuovo a tutti!
questa volta sto svolgendo un semplicissimo progetto ma mi manca ancora qualcosina per renderlo come veramente vorrei.
Vi spiego meglio: l'obiettivo del mio progetto è quello di graficare delle onde sonore costanti (50 Hz, 100Hz, 1000 Hz per intenderci)ed ottenere quindi delle belle sinusoidi sullo schermo.
Per fare ciò uso un arduino mega e ho acquistato un microfono come questo:https://www.amazon.it/gp/product/B01N10SPRS/ref=s9u_simh_gw_i1?ie=UTF8&pd_rd_i=B01N10SPRS&pd_rd_r=S2V9D10PASVG76F08C70&pd_rd_w=Tazvm&pd_rd_wg=mVPgx&pf_rd_m=A11IL2PNWYJU7H&pf_rd_s=&pf_rd_r=NWSF58A5N3XNXSRFF89D&pf_rd_t=36701&pf_rd_p=e7d7ac5f-c009-45dc-9db6-1fe7397811c6&pf_rd_i=desktop.
Per ottenere il grafico uso il serial plotter integrato nell'IDE di arduino e quindi un semplicissimo sketch:
Code: [Select]
int micValue=0;
int micPin=0;

void setup() {
Serial.begin(250000);
}

void loop() {
    Serial.println( analogRead(micPin)); 
}

che legge il segnale analogico del microfono e lo "stampa" a schermo tramite il Serial.print.
Vi assicuro che tutto funziona bene solo che per ottenere delle belle sinusoidi sullo schermo(per fare ciò faccio delle screenshoot al serial plotter xkè altrimenti il grafico scorrerebbe troppo veloce per i nostri occhi) ho bisogno di una frequenza relativamente bassa (< di 100 Hz perchè altrimenti avrei un'immagine con troppi periodi e la curva di distaccherebbe dall'essere sinusoidale) e di alzare il BAUD al massimo (250000) come potete vedere dallo sketch. Il problema è che per ottenere frequenza così basse si comincia ad avere bisogno di un subwoofer ed in piu dal serial plotter non so come fare (ammesso che ci sia il modo) a mettere sull'asse orizzontale il tempo in millisecondi e non i numeri di rilevamenti effettuati coma da default e magari aggiungere dei titoli agli assi scrivendo magari "tempo" per l'asse orizzontale ed "ampiezza" per quello verticale.

Vi chiedo quindi se siete a conoscenza di un modo per continuare ad usare il serial plotter e poter gestire meglio gli assi del grafico soprattutto quello orizzontale in modo da poter visualizzare decentemente anche frequenze piu alte tipo i 1000 Hz senza avere un'immagine con troppi periodi che si distacchi dalla forma sinusoidale.
Seconda opzione forse più realizzabile (anche se preferirei continuare ad usare il serial plotter per questione di comodità) vorrei sapere se esiste un modo magari usando un software per registrare il segnale dalla seriale e poi graficarlo potendo gestire a posteriori l'asse temporale.

grazie a tutti voi che mi aiuterete per questo semplice progetto!

astrobeed

Quello che vuoi fare non è possibile con il plotter seriale del IDE, è uno strumento molto limitato, praticamente inutile nella stragrande maggioranza dei casi.
Ti consiglio di cercare "arduino oscilloscope", trovi varie soluzioni ed è quello che stai cercando di realizzare, ovvero una cosa tipo questa.
Scientia potentia est

uwefed

Comunque gran parte delle onde sonore non sono sinusoidali.
Ciao Uwe

1simone0

Quote
Ti consiglio di cercare "arduino oscilloscope"
ok darò un'occhiata grazie del consiglio.

Go Up