Grove - Sound Sensor - Non funziona?!

Ho acquistato questo componente: http://www.seeedstudio.com/depot/grove-sound-sensor-p-752.html?cPath=144_148

Nella descrizione su come usarlo indicano semplicemente uno sketch che legge il valore analogico dell'input di questo sensore, ma i risultati sono oscillanti tra 0 e 30 con valori casuali sia con il silenzio che con la mia voce, ho provato a fare anche un vettore per fare un po' di smooth facendo una media tra 20 valori, ma il risultato è sempre molto incomprensibile. C'è anche un potenziometro per variare il gain del microfono, ma non pare cambi niente, solo se lo metto al minimo i risultati letti si avvicinano molto a 0.

Suggerimenti? qualcuno lo ha provato? Grazie 1000

Ciao,per poter capire ci devi dire come lo hai collegato e devi farci vedere il codice altrimenti è difficile individuare il problema ! :)

il codice è quello riportato in questo indirizzo: http://www.seeedstudio.com/wiki/index.php?title=Twig_-_Sound_Sensor

e l'ho collegato attraverso l'apposito cavetto al grove base shield all'input a0

http://www.seeedstudio.com/depot/grove-base-shield-p-754.html?cPath=132_134

Se il codice è questo

const int ledPin =  12;      // the number of the LED pin
const int thresholdvalue=400;//The threshold to turn the led on
void setup() {
     pinMode(ledPin, OUTPUT); 
}

void loop() {
  int sensorValue = analogRead(A0);//use A0 to read the electrical signal
  if(sensorValue>thresholdvalue)
  digitalWrite(ledPin,HIGH);//if the value read from A0 is larger than 400,then light the LED
  delay(200);
  digitalWrite(ledPin,LOW);
 }

non vedo come hai fatto a leggere i valori , manca qualcosa...

Sorry me lo ricordavo nell’esempio.
Uso questo che ho fatto io:

const int smoothSize = 20;
int tot = 0;
int avg = 0;
int smooth[smoothSize];
int value = 0;
int smoothIndex = 0;

void setup(){
   Serial.begin(9600);
   for (int k = 0; k < smoothSize; k++){
    smooth[k] = 0;  
  }
}

void loop(){
  
  value = analogRead(A3);
  tot -= smooth[smoothIndex];
  smooth[smoothIndex] = value;
  tot += smooth[smoothIndex];
  avg = tot / smoothSize;
  
  smoothIndex++;                   
    if (smoothIndex >= smoothSize){
      smoothIndex = 0;
    }
      
  Serial.print("Value: ");
  Serial.println(avg);
  delay(300);
}

Ciao,io inizierei a fare una semplice lettura del microfono visualizzando i valori. Va bene anche il codice che ho trovato nell'esempio con il led sul pin 12, gli aggiungerei il serial begin e la stampa del sensor value così si può verificare il funzionamento del microfono.

Non so se hai letto il mio post sopra con il codice che uso, quello stampa proprio i valori che leggo dal sensore puri, che sono qualcosa come:

20 25 10 0 9 9 20 36 30 20 10 35 34 23

Non so se hai letto il mio post sopra con il codice che uso, quello stampa proprio i valori che leggo dal sensore puri

Il messeggio l’ho letto ma il codice che dici di usare adesso non è quello che dicevi di usare prima…e nel codice che usi adesso non fai una lettura pura del microfono stampando il contenuto della variabile value ma stampi il contenuto della variabile avg.
Io,per quel poco che so, sto cercando di aiutarti ma ricordati che non sono li con te… :slight_smile:

il codice è quello riportato in questo indirizzo:
http://www.seeedstudio.com/wiki/index.php?title=Twig_-_Sound_Sensor

e l’ho collegato attraverso l’apposito cavetto al grove base shield all’input a0

http://www.seeedstudio.com/depot/grove-base-shield-p-754.html?cPath=132_134

Poi qui dici di averlo collegato all’input A0 ma nello scketch l’analogRead è A3…

E' vero ho fatto confusione nell'esposizione del problema. Lo sketch che ho usato, legge il valore analogico con una Analogread() Poi per rendere i dati più omogenei ho fatto una media, ma ho anche provato a stamparli direttamente ed il risultato che arriva dal sensore è randomico e oscilla tra 0 e 30. Ho provato a collegarlo a diversi ingressi analogici ma è sempre il solito valore. Al circuito non ho fatto nessuna modifica poichè come indicano basta collegarlo ad un ingresso analogico

A questo punto ti direi di controllare che arrivi l'alimentazione al modulino (che magari non ci sia un cavetto difettoso) o addirittura lo collegherei direttamente ad arduino eliminando lo shield ,credo che sui connettori si riesca a metterci un filo innestato......cercherei di andare per esclusione....