Go Down

Topic: capteur de son (Read 483 times) previous topic - next topic

michelm600

Bonjour,

Je suis nouveau dans ce monde Arduino. ai suivi les cours MOOC sur fun.

J'ai un pb avec le code ci dessous que je n'arrive pas a résoudre.

Matériel:
un écran 2 lignes LCD connecté sur Arduino UNO en 12,11,6,5,4,3

un capteur de son retour sur 9

une LED sur 10


je veux faire afficher un mot de 5 lettres (non, pas celui là ;-))

Je fais défiler l'alphabet. au bruit détecté, la lettre reste affichée, la LED s'allume et l'alphabet redemarre en seconde position sur l'écran.


Ce qu'il se passe :

pas de bruit,   affichage de 5  A , la LED s'allume a chaque fois
si je mets en commentaire le traitement du capteur de son, Les 5 alphabets s'affichent bien cote à cote.

Je ne comprends pas ou j'ai commis une erreur ...

Help !

Code: [Select]
/* Afficher un mot
 *  Montage
 * un écran 2 lignes LCD connecté sur Arduino UNO en 12,11,6,5,4,3
* un capteur de son retour sur 9
* une LED sur 10
*/

#include <LiquidCrystal.h> ;

LiquidCrystal monEcran(12,11,6,5,4,3);

const int capteur =9;// pin connecté à la sortie digital du capteur
const int LED =10;// pin connecté à la LED + resistance
int iLettre = 0;
int iNom =0;

void setup()
{
   pinMode(capteur, INPUT);
   pinMode(LED, OUTPUT);

   digitalWrite(LED, LOW);
   monEcran.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
   monEcran.clear(); // on efface l'
 
}

void loop()
{
for(iNom = 0; iNom<5; iNom++ ) {

   
    // on affiche l'alphabet
    for(iLettre = 65; iLettre<91; iLettre++ ) {

        monEcran.setCursor(iNom,0);
        char iAlpha = (char)(iLettre) ;
        monEcran.write(iAlpha);
        delay(2000);

        // si un son détecté, arret de l'alphabet et LED allumée
        if(digitalRead(capteur) ==HIGH){
          digitalWrite(LED, HIGH);// Allumer la LED
          delay(1000);// Temps de traitement
          digitalWrite(LED, LOW);// Eteindre la LED
          break ;       
        }
     
    }
     
  } 
}




J-M-L

#1
Dec 28, 2017, 03:37 pm Last Edit: Dec 28, 2017, 03:38 pm by J-M-L
 Faites un petit programme qui ne fait que ça
Code: [Select]
const byte capteur =9;// pin connecté à la sortie digital du capteur

void setup()
{
   Serial.begin(115200);
   pinMode(capteur, INPUT);
}

void loop()
{
   Serial.println(digitalRead(capteur));
}


Pour voir ce que dit votre capteur réellement ( dans la console ouverte à  115200 bauds)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

michelm600

JML,

merci, effectivement, le capteur renvoie 1 (si son) ou 0 (si rien de détecté)

en remplacant (== HIGH) par (== 1) dans mon test, cela fonctionne.

merci
Michel

J-M-L

#3
Dec 29, 2017, 01:49 pm Last Edit: Dec 29, 2017, 01:50 pm by J-M-L
HIGH et 1 c'est pareil...(cf le code source)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up