Pages: 1 [2]   Go Down
Author Topic: Problema con la libreria FFT  (Read 1809 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@leo72: avevo già guardato la FHT perchè nel mio caso sarebbe stata più utile e veloce. Purtroppo però l' unica cosa che cambia dalla FFT precedente è che riempe l' array solo con dati reali, e quindi il vettore fft_input[] è grande la metà. Oltre ciò rimane sempre il problema della traduzione dei bit in ASCII...

@astrobeed vittorio68 : io non mando un segnale continuo con il potenziometro perchè altrimenti mi darebbe sempre 0.  Muovo il potenziometro velocemente così da produrre un segnale a diversa ampiezza e variabile nel tempo.

Ciao
Kama90
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22924
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ancora nessuno ha risposto a questa domanda:
Ma non è che forse spedisce i dati compressi?
Forse i dati arrivano in un qualche formato non direttamente visionabile? Cioè, devono essere elaborati?
Logged


Battipaglia (SA)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Forse i dati arrivano in un qualche formato non direttamente visionabile? Cioè, devono essere elaborati?

Forse in maniera criptica, e me ne scuso, ma pensavo di aver risposto io. Il vettore fft_log_out inviato alla seriale è il risultato della FFT. Sono solo 128 bytes perchè sta facendo la trasformata su 256 campioni (#define FFT_N 256 all'inizio dello sketch) ed i restanti 128 bytes sono simmetrici.

Il primo byte = 255 rappresenta lo start (c'è scritto nel commento) per un programma che deve capire che stanno per arrivare i dati. I successivi 128 sono l'output della FFT.

Se scrivi un programma PC che legge i dati dalla seriale potresti, per esempio utilizzare i 128 bytes per disegnare un istogramma dello spettro.

Se invece vuoi leggere nel serial monitor questi valori, puoi commentare il primo Serial.Write(255) e inviare i successivi 128 con un Serial.println(xxx, DEC). In questo modo se un valore, per esempio è = 12, la println(12, DEC) invierà alla seriale i bytes 49 (codice ASCII del "1") e 50 (codice ASCII del "2") e tu vedrai "12". La Write invece invia il byte 12 e tu vedi il corrispondente ASCII (non ricordo cosa sia...) ossia le lettere strane di cui parli nel primo post.

per essere più chiaro:

Code:
    //Serial.write(255);
    for (int i = 0; i < 128; i++) Serial.println(fft_log_out[i], DEC);

Ciao.
« Last Edit: November 14, 2012, 07:24:29 am by vittorio68 » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22924
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ossia le lettere strane di cui parli nel primo post.
Sì, non ero io ad aver aperto il thread ma avevo però posto la domanda perché mi era venuto il dubbio sui "caratteri strani" che l'amico vedeva: di solito sono appunto la stampa in ASCII di byte.
Logged


Battipaglia (SA)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@leo: nono, sono partito quotando te, ma il post era sempre diretto a kama90 che ha fatto la domanda iniziale, infatti cito il suo post. Conosco bene la tua competenza avendo letto molti tuoi post.

Ciao.
Logged

Pages: 1 [2]   Go Up
Jump to: