Capteur iduino aide pour codage

Bonjour à tous,
on aimerait de l’aide pour un projet BTS. On veut utiliser des capteurs de sons de ce type de capteur iduino, mais on arrive pas à coder le capteur pour récupérer une amplitude en fonction du temps. Voila la photo du capteur

pas de photo... je suppose que c'est parce que c'est votre premier post

c'est quoi un iduino ? (c'est une marque, ils ont une ribambelle de produits)

c'est ce "micro" ?

iduino-1485297-analogique-1-pcs-w635041-P-6976468-13597425_1

si oui vous alimentez le module avec le + sur le 5V et la pin G sur la pin GND de votre arduino et vous connectez la broche AO (Analog Out) à la broche A0 de votre Arduino et vous utilisez analogRead() pour voir une valeur entre 0 et 1023 correspondante au niveau capté par l'electret (le micro). Le potentiomètre (le truc bleu avec la petite vis) sert à régler la sensibilité du seuil de déclenchement en tout ou rien sur la pin DO (Digital Out)) qui vous dira si le son a dépassé un certain seuil ou pas (utile si vous n'êtes pas intéressé par la valeur de l'amplitude mais juste par un dépassement de niveau sonore)

Merci de ta réponse et oui justement on cherche a récupérer une amplitude et on se sait pas si c est possible.

oui avec le montage que j'ai décrit et la lecture sur A0

module    Arduino
   +         5V
   G         GND
   AO        A0

un truc simple comme ça devrait vous permettre de démarrer

const byte pinMicro = A0;

void setup() {
  pinMode(A0, INPUT); // absolument pas obligatoire pour une lecture analogique mais une bonne habitude à prendre en général
  Serial.begin(115200); Serial.println();
  Serial.println("Amplitude");
}

void loop() {
  int amplitudeMicro = analogRead(A0);
  Serial.println(amplitudeMicro);
  delay(100); // on bloque 100ms ➜ on échantillonne 10 fois par seconde soit 10 Hz
}

il faut ouvrir la console série et régler à 115200 bauds pour voir les valeurs

D’accord merci je vais tester dès maintenant.

donc pas la peine de connecter la broche DO de votre module (celle du bas sur la photo)

Salut, merci deja votre programme marche, et maintenant svp nous aimerions savoir comment on peut faire pour avoir la valeur de la tension de notre Récepteur en volt car nous ce qu'on obtient c'est une amplitude de la forme 1023... L'amplitude de 1023 correspond à 5V et nous on a 475 en amplitude on a la relation pour convertir en volt mais nous ne savons pas exactement où mettre la formule de calcul dans le programme arduino, pouvez-vous nous aider svp?

Actuellement, tu places le résultat de la conversion dans amplitudeMicro.
Maintenant, il faut entrer amplitudeMicro dans ta formule pour convertir en volt.

Un sujet utile,bon courage!

si 0 correspond à 0V
si 1023 correspond à 5V

à combien de V correspond une valeur x.. c'est la base de la règle de 3 - on voit ça en 6ème - voire avant non ?

:+1: effectivement, @J-M-L
Salut @absolkil Si tu a la valeur a 0, et celle a 5 volts, tu converties ta valeur avec map(0, 1023, 0, ...), en fonction du calcul de telle valeur est égale a tel voltage (règle de 3) :wink:

Attention map est en entier et tronque donc ne pas mette 5V mais plutôt 5000mV

Ah, oui, effectivement :woozy_face:

oui on sait pour la règle 3 mais ça marchait pas sinon on utilise la fonction map on met map(0,1023,0,5000) ?

les gars je voulais savoir comment récupérer les données arduino sur lab view directement afin d' avoir les graph de labview qui sont plus pratique

bonjour @absolkil ,

tu as tous les outils nécessaires dans le menu "Data Communication ==> Protocols ==> Serial" pour créer une liaison série entre ton PC et l'Arduino, exactement comme si tu communiquait via le Moniteur Série.

ensuite, il suffit d'envoyer les données depuis l'Arduino et de les récupérer dans LabView, pour ensuite les traiter comme n'importe quelle donnée afin de les afficher sous forme de WaveFormGraph ou XYGraph (pour les cours sur LabView, c'est un autre forum).

il faut faire le calcul en nombre flottant, pas en entiers. Si vous écrivez

float x = analogRead(A0) / 1023 * 5 ;

vous n'avez que des entiers (type int) à droite donc le calcul se fait en nombre entier et la division par 1023 vous est fatale = le résultat est toujours 0 sauf si analogRead(A0) donne 1023 auquel cas la division vaut bien 1. ensuite vous multipliez par 5 et donc vous avez 0 entre [0, 1022] et 5 pour 1023

Pour passer en nombre réel ça se fait en rajoutant .0 aux constantes par exemple

float x = analogRead(A0) / 1023.0 * 5.0;

dans ce cas le compilateur voit un nombre à virgule pour la division et donc effectuer la division en nombre réels et on aura bien 0,xxx que l'on pourra multiplier par 5