Bonjour à tous et à toutes,
Je suis débutant en arduino. J'ai fait un peu de python au lycée et je maîtrise quelques bases en C++. Mon projet
est de réaliser une bande LED qui s'allume par le son (en claquant des doigts par ex). Lors du premier son la bande LED s'allume et lors du deuxième la bande LED s'éteint etc... Le circuit
Pour cela j'ai à disposition une arduino nano, un module KY-037 et un relais qui est relié à la bande led.
Le problème
C'est au niveau du code je pense. Quand je téléverse le programme, le relais s'active mais quand je claque des doigts le relais ne réagit pas.
Par contre dans ton programme tu mets: if(digitalRead(micro)==0){
C'est mieux de mettre: if(digitalRead(micro)==1){
la broche D0 du module passe à 1 en cas de bruit.
votre micro (electret) dispose d'un potentiomètre qui règle le niveau sonore pour lequel la sortie numérique (DO) s'active.
il faut le régler de telle sorte que votre claquement de doigt déclenche cette sortie
sinon prendre la sortie AO (Analog out) et la lire avec un analogRead() et comparer avec un seuil pertinent que vous réglez en logiciel
pour trouver le seuil vous pouvez prendre ce petit code
const byte pinMicroAnalogique = A0; // connectez la broche AO du micro vers broche A0 de l'arduino
const byte pinMicroNumerique = 3; // connectez la broche DO du micro vers broche 3 de l'arduino
void setup() {
pinMode(pinMicroNumerique, INPUT);
Serial.begin(115200);
Serial.println("D\tA");
}
void loop() {
Serial.print(digitalRead(pinMicroNumerique) == LOW ? 0 : 1023);
Serial.write('\t');
Serial.println(analogRead(pinMicroAnalogique));
delay(50);
}
chargez le code, ouvrez la console série à 115200 bauds (en mode graphique ou texte) et regardez les valeurs qui défilent lorsque vous claquez des doigts versus le bruit ambiant habituel.
vous pouvez aussi jouer (doucement) sur la vis du potentiomètre.
sinon un booléen c'est true ou false qu'on utilise, pas 0 ou 1 qui sont des entiers (même si c'est converti, ce n'est pas "prorpe")
Merci pour vos réponses😃. J'ai réglé le potentiomètre. J'ai également modifié le programme mais cette fois-ci quand un son est détecté le relais s'active pendant 200 millisecondes.
Bonsoir
Comportement normal vu le code
Il faut declarer une variable booleene correspondant a l allumage et dans la loop changer cette variable quand il y a du bruit puis affecter cette variale a la sortie
Ne pas tester le cas ou il n y a pas de bruit
Il suffit de stocker l'état du relais dans une variable et de faire changer l'état et d'utiliser cette variable pour activer/désactiver le relais à chaque bruit.
non ce n'est pas propre vous appliquez un opérateur booléen sur une variable de type inconnu qui vaut HIGH ou LOW. en pratique ça fonctionne jusqu'au jour où arduino changera le type de HIGH et LOW (ils l'ont déjà fait)
donc on écrit soit avec un if
if (digitalRead(relais) == HIGH)
digitalWrite(relais, LOW);
else
digitalWrite(relais, HIGH);