Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino] Problème capteur infrarouge

Sujet résolu
    9 mars 2013 à 14:23:01

    Bonjour à la communauté ! 

    Bon, alors voici mon problème : j'ai un capteur infrarouge, que j'ai acheté ici (boutique semageek).

    En suivant les datasheet (qui sont fournies en bas du 1er lien donné) et le mini-tuto du fournisseur, je l'ai branché à mon arduino.

    Accompagné du code : 

    const int capteur =A0;// A0 ou juste 0 ?!
    int valeurLue = 0;
    float tensionLue = 0;
    
    void setup() {
      Serial.begin (9600);
      pinMode (capteur, INPUT);// est-ce obligatoire ?!
    }
    
    void loop() {
      valeurLue = digitalRead (capteur);
      tensionLue = valeurLue*5.0/1024;
      Serial.print ("valeur lue = ");
      Serial.println (valeurLue);
      Serial.print ("Tension = ");
      Serial.println (tensionLue, 2);
      delay (1000);
      
    }

    Hélas, le moniteur série me renvoie des valeurs je dirais presque aléatoire :/ (je bouge ma main devant, rien ne change, puis d'un coup, il va changer de sortie). Si vous avez une idée ... Merci =) 

    • Partager sur Facebook
    • Partager sur Twitter
    Tagada, je suis une fraise !
      9 mars 2013 à 15:48:10

      Bonjour,

      A la ligne 11, tu lis une valeur digitale et non analogique alors sur le ligne 12, ton calcul ne sert à rien. Après je n'en sais pas plus !

      Bonne journée

      Toufik37

      • Partager sur Facebook
      • Partager sur Twitter
        9 mars 2013 à 15:54:27

        Ha oui, c'était pour mes différents test. Il s'agit d'une erreur que je vais éditer, mais de toute façon, que je lise en digital ou analogique, les valeurs retournées sont incompréhensible ^^'

        ====EDIT====

        la correction ne marche pas (je comprend pas) alors je vous mais le code corrigé ici : 

        const int capteur =A0;// A0 ou juste 0 ?!
        int valeurLue = 0;
        
        void setup() {
          Serial.begin (9600);
          pinMode (capteur, INPUT);// est-ce obligatoire ?!
        }
        
        void loop() {
          valeurLue = digitalRead (capteur);
          Serial.print ("valeur lue = ");
          Serial.println (valeurLue);
          delay (1000);
          
        }
         



        -
        Edité par Aero-Lighteur 9 mars 2013 à 16:04:59

        • Partager sur Facebook
        • Partager sur Twitter
        Tagada, je suis une fraise !
          9 mars 2013 à 17:11:03

          essaie avec une pin d'entrée numérique plutot qu'analogique (genre pin 3).

          Ensuite fais variere ta main entre 5 et 15 cm (puisque ton capteur est un tout ou rien qui bascule à 10 cm)

          • Partager sur Facebook
          • Partager sur Twitter

          Retrouvez moi sur mon blog et ma chaine Youtube !

            9 mars 2013 à 17:50:26

            Bon alors, je l'ai branché en numérique ( je pensais qu'il faisait aussi analogique, j'avais mal lu ^^, mais pas grave, j'avais juste besoin de la fonction 1/0). 

            Donc avec ce code : 

            const int capteur =3;
            int valeurLue = 0;
            
            void setup() {
              Serial.begin (9600);
              pinMode (capteur, INPUT);
            }
            
            void loop() {
              valeurLue = digitalRead (capteur);
              Serial.print ("valeur lue = ");
              Serial.println (valeurLue);
              delay (1000);
            }

            par contre, dans la doc, ils disent effectivement qu'entre 2 et 10, s'il y a quelque chose, ça passe à 0, sinon, c'est toujours à 5. Mais que se passe-t-il normalement quand il y a quelque chose en dessous de 2 ? moi, il affiche 0 ... Mais merci, entre 0 et 10, du coup, il affiche bien 0 en cas de réfléxion, ça me rassure, je commençais à m'inquiéter ! Merci Eskimon ! au passage, je tenais à vous dire bravo pour le tuto Arduino ;) 

            • Partager sur Facebook
            • Partager sur Twitter
            Tagada, je suis une fraise !
              9 mars 2013 à 20:36:40

              merci pour le tuto :)

              Sinon effectivement il y a une zone d'incertitude entre 0 et 2 à cause d'une histoire de conception du capteur. Il utilise un système de lentille et d'angle de réflexion pour mesurer la distance, et donc lorsqu'on est trop prèson sort de son champ de vision en quelque sorte (c'est un comme si je mettais un petit objet entre les deux yeux d'un cheval, proche de son museau, il ne le verra pas)

              • Partager sur Facebook
              • Partager sur Twitter

              Retrouvez moi sur mon blog et ma chaine Youtube !

              [Arduino] Problème capteur infrarouge

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown