Capteur de son problème arduino

Bonjour/Bonsoir, je possède actuellement un capteur de son Grove (Référence : 101020023), auquel j’ai ajouté une LED pour vérifier son fonctionnement, le souci en question est que le capteur fonctionne lorsqu’il y a du son (la LED s’allume donc) mais ensuite la LED ne veut plus s’éteindre (alors qu’elle devrait s’éteindre lorsqu’il n’y a plus de son) je ne sais pas quoi faire, pouvez-vous m’aider s’il vous plaît ? J’ai aussi remarqué lorsque j’utilise le moniteur série d’Arduino des valeurs assez étranges, je vous écris le code ainsi qu’un screen du moniteur, merci.

// Function: If the sound sensor senses a sound that is up to the threshold you set in the code, the LED is on for 200ms.
// Hardware: Grove - Sound Sensor, Grove - LED
 
/*macro definitions of the sound sensor and the LED*/
#define SOUND_SENSOR A0
#define LED 2      // the number of the LED pin
 
#define THRESHOLD_VALUE 400//The threshold to turn the led on 400.00*5/1024 = 1.95v
void setup()
{
    Serial.begin(9600);
    pins_init();
}
 
void loop()
{
    int sensorValue = analogRead(SOUND_SENSOR);//use A0 to read the electrical signal
    
    Serial.println(sensorValue);
    if(sensorValue > THRESHOLD_VALUE)
    {
        turnOnLED();//if the value read from A0 is larger than 400,then light the LED
        
        delay(200);
    }
    else if (sensorValue < THRESHOLD_VALUE)
    {
      turnOffLED();
    }
  }
    
 
void pins_init()
{
    pinMode(LED, OUTPUT);
    pinMode(SOUND_SENSOR, INPUT);
}
void turnOnLED()
{
    digitalWrite(LED,HIGH);
}
void turnOffLED()
{
    digitalWrite(LED,LOW);
}

bonjour,
tu peux remplacer

    else if (sensorValue < THRESHOLD_VALUE)
    {
      turnOffLED();
    }

par

    else 
      turnOffLED();

sinon, ca sent le rebond quelque part

Je viens de le faire et aucun changement :s

essaye ceci, code plus simple

/
#define SOUND_SENSOR A0
#define LED 13

#define THRESHOLD_VALUE 400
void setup()
{
    Serial.begin(9600);
    pinMode(LED, OUTPUT);
    pinMode(SOUND_SENSOR, INPUT);
}

void loop()
{
    int sensorValue = analogRead(SOUND_SENSOR);
   
    Serial.println(sensorValue);
    if(sensorValue > THRESHOLD_VALUE)
    {
    digitalWrite(LED,HIGH);
       
        delay(200);
    }
    else 
      digitalWrite(LED,LOW);
   
  }

mets tes branchements aussi

Toujours le même problème.. :s

Chiji: Toujours le même problème.. :s

mets tes branchements aussi

Oui pas de souci :

|500x281

Ah et j'ai utilisé un autre programme, celui-ci :

 int led = 2;
int threshold = 450; //Change This
int volume;

void setup() {                
 Serial.begin(9600); // For debugging
 pinMode(led, OUTPUT);     
}

void loop() {
 
 volume = analogRead(A0); // Reads the value from the Analog PIN A0
 /*
   //Debug mode
   Serial.println(volume);
   delay(100);
 */
 
 if(volume>=threshold){
   digitalWrite(led, HIGH); //Turn ON Led
 }  
 else{
   digitalWrite(led, LOW); // Turn OFF Led
 }

}

Et il marche du tonnerre ! Le seul souci c'est lorsque je fais (volontairement) un bruit assez fort la led ne veut plus s'éteindre sinon elle fonctionne sans soucis, une idée ?

a part ceci qui change

#define THRESHOLD_VALUE 400

il faut peut être un temps pour que le micro se stailise

Aucune idée mais j'ai beau attendre 5 minutes après un son très fort la LED reste allumée.. donc je ne sais pas si c'est un souci ou si c'est "normal" :/

si le son est tr"s fort, le serial donne quoi en nb?

teste ca

void loop ()
{
  int val = digitalRead(A0);
  if (val == HIGH) 
  {
    digitalWrite (Led, HIGH);
  }
  else
  {
    digitalWrite (Led, LOW);
  }
}

Merci pour ton aide, ça fonctionne impec ! Mais le souci c'est comment savoir comment afficher le nombre de décibels ? Parce que dans ton code j'ai intégré un Serial.print(val); bah dans le terminal ça m'affiche tout le temps "1" une idée de comment je pourrais intégrer les décibels ? Merci !

Chiji: Merci pour ton aide, ça fonctionne impec ! Mais le souci c'est comment savoir comment afficher le nombre de décibels ? Parce que dans ton code j'ai intégré un Serial.print(val); bah dans le terminal ça m'affiche tout le temps "1" une idée de comment je pourrais intégrer les décibels ? Merci !

à mon avis, tu rêves... Une mesure de décibels avec ce hardware mal ficelé est impossible. Il faudrait commencer par un préampli sérieux, et de facon idéale un redresseur logarithmique.

La carte Grove, n'a même pas un préampli que l'on pourrait appeller comme ca: l'ampli op travaille en crabe autour de 0V, une monstruosité!

Chiji: Merci pour ton aide, ça fonctionne impec ! Mais le souci c'est comment savoir comment afficher le nombre de décibels ? Parce que dans ton code j'ai intégré un Serial.print(val); bah dans le terminal ça m'affiche tout le temps "1" une idée de comment je pourrais intégrer les décibels ? Merci !

normal que ca affiche 1 ou 0 suffit de lire le code digitalRead==> donne 1 ou 0

pour les décibels, il faut analogRead et faire son proto. il y a un op sur la carte du micro, mais bon.......

ce module est un " Détecteur de bruit " et pas une mesure de son la sortie du module se fait sur un condo en série donc l'entree analogique peut se balader ou bon lui semble donc tu fais une "mesure des bruits parasites" ramassés par les fils, le schield, ...

zavais pas assez agrandit la photo :( mea culpa j'ai un module electret quelque part sur mon bureau, mais pas la même chose

Je vous expose brièvement le problème, je dois implanter ce capteur de bruit dans une ruche afin de savoir si des abeilles sortent ou rentrent à l'intérieur. Je dois donc traduire la valeur de sortie du capteur en une valeur se rapportant au son (décibels). Y a t-il un moyen de convertir la valeur de sortie en un grandeur sonore facilement identifiable ?

il te faut peut être utiliser plutôt un micro que ce capteur (?) ou alors ce capteur t'es imposé comme une contrainte technique ?

Chiji: Je vous expose brièvement le problème, je dois implanter ce capteur de bruit dans une ruche afin de savoir si des abeilles sortent ou rentrent à l'intérieur.

le sujet m'interresse ... tu comptes obtenir quelles informations sur les entrées/sorties à partir de la mesure du bruit dans la ruche ou alors c'est pour prévenir d'un essaimage ?