Partage
  • Partager sur Facebook
  • Partager sur Twitter

Capteur infrarouge Arduino

Sujet résolu
    7 avril 2021 à 21:06:33

    Bonjour ! 

    Je dois aider un ami en Arduino pour un projet perso, et je rencontre un problème avec un capteur infrarouge. Le capteur me renvoie toujours la même valeur, peu importe si quelque chose est devant ou pas.

    J'ai essayé avec plusieurs version de code, différents branchements, rien n'y fais je n'arrive pas à le faire fonctionner car il ne change jamais d'état.

    J'utilise ce capteur : https://boutique.semageek.com/fr/1403-capteur-optique-infrarouge-a-reflexion-ir-avec-resistances-470-et-10k-3009373191794.html

    Et il est branché exactement comme ça:

    Et voici le code, il ne fait rien de fou pour l'instant car je veux juste vérifier que le capteur fonctionne.

      int LED = 13;
      int capteur = 9;
      int val = 0;
      
    void setup() {
      pinMode(LED, OUTPUT);
      pinMode(capteur, INPUT);
      Serial.begin(9600);
    
      Serial.println(val);
    }
    
    void loop() {
      val = digitalRead(capteur);
      Serial.println(val);
      delay(2000);
      digitalWrite(LED, val);
    
    }


    Je suis vraiment débutant avec Arduino, en revanche je me débrouille (normalement) au niveau codage.

    Si quelqu'un pouvait m'éclairer ça m'aiderait bien car j'ai beau chercher je ne trouve pas la solution

    Merci d'avance

    -
    Edité par Gabind51 7 avril 2021 à 21:10:48

    • Partager sur Facebook
    • Partager sur Twitter
      8 avril 2021 à 14:01:51

      Bonjour,

      C'est un capteur réflectif, donc la LED infrarouge du capteur doit être allumée avant de faire une lecture.

      Tu devrais aussi changer de broche pour cette LED, par exemple la broche 12, ce qui permettrait d'utiliser la LED de l'arduino qui est déjà sur la broche 13, pour signaler la détection. Le delay dans la lecture du capteur doit être supprimé, sinon tu peux rater des détections qui arriveraient juste pendant le delay.

      const int LED_CAPTEUR = 12;
      const int CAPTEUR = 9;
      int etat = 0;
         
      void setup() {
        Serial.begin(9600);
      
        pinMode(LED_CAPTEUR, OUTPUT);
        pinMode(LED_BUILTIN, OUTPUT); // broche 13 sur l'arduino UNO
        pinMode(CAPTEUR, INPUT);
      
        Serial.println("Test Capteur");
        digitalWrite(LED_CAPTEUR, HIGH); // Allume la LED infrarouge
      }
       
      void loop() {
        int value = digitalRead(CAPTEUR);
        if(value != etat) { // N'affiche que les changements d'état
          etat = value;    
          Serial.println(etat);  
          digitalWrite(LED_BUILTIN, etat);    
        }
      }



      • Partager sur Facebook
      • Partager sur Twitter
        8 avril 2021 à 15:39:45

        Merci de ton aide

        J'ai testé avec ton code et en mettant la LED sur la broche 12 : même résultat qu'avant.

        Le moniteur affiche "Test capteur", puis "1".

        Ensuite même en mettant quelque chose devant le capteur, il ne détecte aucun changement, il est toujours bloqué sur 1.

        • Partager sur Facebook
        • Partager sur Twitter
          9 avril 2021 à 13:36:58

          Comme je l'ai dis le côté "matériel" je ne m'y connais pas trop, mais d'après ce que j'ai trouvé sur internet :

          10 000 Ohm pour celle du fil rouge

          460 pour la deuxième

          Elles ont les mêmes bandes que celles sur la photo de mon premier message

          • Partager sur Facebook
          • Partager sur Twitter
            9 avril 2021 à 17:41:39

            Tu peux essayer de tester séparément les 2 éléments, en utilisant un appareil photo numérique (d'un smartphone par exemple), pour voir si la led infrarouge s'allume bien, et en utilisant une télécommande infrarouge (ou l'IR blaster d'un smartphone) dirigée vers le photo transistor pour vérifier si avec le code actuel le capteur change d'état.

            Tu peux également lire le capteur en analogique, puisque le courant qu'il laisse passer dépend de l'intensité IR reçue, en connectant le capteur sur A0, puis en modifiant la fonction loop comme ceci:

            const int CAPTEUR = A0;
            
            void loop() {
               Serial.println(analogRead(CAPTEUR));
               delay(1000);   
            }

            Si la valeur change en relation avec la présence d'un objet devant le capteur, il faudra simplement augmenter la valeur de la résistance de pullup (fil rouge).

            • Partager sur Facebook
            • Partager sur Twitter
              9 avril 2021 à 20:32:11

              Avec mon smartphone, je vois bien que la LED infrarouge s'allume.

              Par contre, le capteur ne change toujours pas d'état que ça soit avec une télécommande ou avec la lecture analogique. En connectant sur A0 et en modifiant le code il me retourne en permanence 1023, aucun moyen d'obtenir une autre valeur -_-

              • Partager sur Facebook
              • Partager sur Twitter
                9 avril 2021 à 22:48:34

                Tu as bien connecté la masse sur la led ET le capteur, comme sur le schéma ?
                • Partager sur Facebook
                • Partager sur Twitter
                  10 avril 2021 à 0:50:34

                  Oui oui tout est bien comme sur le schéma
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 avril 2021 à 18:56:12

                    Si tu as fait ton montage sur une breadboard, vérifie quand même qu'il n'y a pas de faux contact.

                    Tu peux essayer de remplacer la résistance de 10kΩ par une résistance de 100kΩ, pour augmenter la sensibilité du capteur. Après ça, si la valeur analogique ne change toujours pas, ton capteur est probablement grillé.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Capteur infrarouge Arduino

                    × 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