Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino] Bouton poussoir

Je n'arrive pas à le faire fonctionner.

Sujet résolu
Anonyme
    11 juin 2013 à 19:44:08

    Bonjour à tous,

    Je suis actuellement en pleine lecture du tutoriel Arduino.

    J'ai donc essayé d'allumer une LED lors de l'appui sur un bouton poussoir. Impossible de la faire fonctionner, la LED s'allume toujours et il ne se passe rien lors de l'appui sur le bouton.

    Voici ma réalisation :

    Et voici mon code :

    const int led_rouge = 13;
    const int bouton = 10;
    int etat;
    
    void setup() {
      pinMode(led_rouge, OUTPUT);
      pinMode(bouton, INPUT);
    }
    
    void loop() {
      digitalWrite(led_rouge, HIGH);
      if(digitalRead(bouton) == LOW) {
        digitalWrite(led_rouge, LOW);
      }
    }

    Merci à vous !

    -
    Edité par Anonyme 11 juin 2013 à 19:45:04

    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2013 à 20:10:36

      Si tu fais ca ca donne quoi ?

      void loop() {
        if(digitalRead(bouton) == LOW) {
          digitalWrite(led_rouge, LOW);
        } else {
          digitalWrite(led_rouge, HIGH);
        }
      }


      (Je te fais confiance pour le cablage ?)

      • Partager sur Facebook
      • Partager sur Twitter

      Retrouvez moi sur mon blog et ma chaine Youtube !

      Anonyme
        11 juin 2013 à 20:19:58

        J'ai reproduis mon circuit à l'identique, mais je ne suis pas sûr du câblage, docn je veut bien que tu vérifie.

        J'essaye ton code.

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          11 juin 2013 à 20:29:42

          Je viens d'essayer, cela ne fonctionne pas non plus avec le code.

          Enfin, la LED reste allumée mais l'appui ne fait rien.

          -
          Edité par Anonyme 11 juin 2013 à 20:30:59

          • Partager sur Facebook
          • Partager sur Twitter
            11 juin 2013 à 20:43:11

            Tourne ton bouton d'un quart de tout pour voir...
            • Partager sur Facebook
            • Partager sur Twitter

            Retrouvez moi sur mon blog et ma chaine Youtube !

            Anonyme
              11 juin 2013 à 20:49:12

              Cela ne régle pas le problème.
              • Partager sur Facebook
              • Partager sur Twitter
                11 juin 2013 à 21:00:49

                Alors c'est que le cablage doit être mauvais quelques part... (tu peux aussi essayer de mettre ta led sur une autre broche que la 13, vu qu'il y a déjà une LED de connecté dessus ca peut fausser l'apercu (ta LED à toi pourrais briller moins fort et donc tu vois ptet pas la différence entre allumé/éteinte)

                Reprenons...

                Pour la LED :

                Pin x de l'Arduino -> résistance (330 ohm) -> Anode / Cathode -> masse

                OU

                5V -> Anode / Cathode -> résistance -> Pin x de l'Arduino

                (la led et la résistance peuvent être inversé)

                Pour le bouton (A et B sont juste des points de repère et n'existe pas réellement) :

                5V -> résistance (10k) -> A -> bouton -> B -> masse

                Entre A et B le condensateur.

                Et à partir de A vers la pin y de l'arduino

                EDIT : je parierais sur le bouton qui est mal mis/connecté ou fais des faux contacts sur ta breadboard

                -
                Edité par Eskimon 11 juin 2013 à 21:02:02

                • Partager sur Facebook
                • Partager sur Twitter

                Retrouvez moi sur mon blog et ma chaine Youtube !

                  11 juin 2013 à 21:01:20

                  Salut,

                  As-tu testé le bouton poussoir seul (en le montant en série avec la led par exemple)?

                  -
                  Edité par Wiikiing 11 juin 2013 à 21:01:45

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    11 juin 2013 à 21:05:16

                    Wiikiing : Le bouton fonctionne.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 juin 2013 à 21:18:29

                      Mais le bouton seul avec la LED sur la breadboard aussi ? (car perso j'ai eu des soucis de contact sur ma breadboard lorsque je voulais utiliser le bouton)
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Retrouvez moi sur mon blog et ma chaine Youtube !

                      Anonyme
                        12 juin 2013 à 13:02:05

                        Le bouton suel avec la LED sur la breadboard aussi.

                        Je réessaye depuis le début à partir de ton message, Eskimon.

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          12 juin 2013 à 13:06:37

                          Attends, tu a dis : "5V -> résistance (10k) -> A -> bouton -> B -> masse" mais en appuyant sur le bouton, cela créé un faux contact.

                          Puisque l'on envoie un 5 V résisté a la masse directement...

                          • Partager sur Facebook
                          • Partager sur Twitter
                            12 juin 2013 à 13:19:32

                            Justement la résistance permet d'éviter le faux contact ^^
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              12 juin 2013 à 13:33:05

                              Mais la Arduino ne captera rien du tout, puisque j'ai la masse à 0V et le courant à 0V
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                12 juin 2013 à 13:40:53

                                Alors là, j'ai la LED qui s'éteint au lieu de s'allumer lorsque j’appuie sur le bouton.

                                Je pense que ça vient du code :

                                const int bouton = 8;
                                const int led = 9;
                                void setup() {
                                  pinMode(bouton, INPUT);
                                  pinMode(led, OUTPUT);
                                }
                                
                                void loop() {
                                  if(digitalRead(bouton) == LOW) {
                                    digitalWrite(led, LOW);
                                  } else {
                                    digitalWrite(led, HIGH);
                                  }
                                }



                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 juin 2013 à 13:52:13

                                  Donc ca marche mais le comportement est inversé ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Retrouvez moi sur mon blog et ma chaine Youtube !

                                  Anonyme
                                    12 juin 2013 à 13:59:50

                                    Non, le comportement est inversé parce que le code dit qu'il doit être inversé, le problème étant que si je fait :

                                    const int bouton = 8;
                                    const int led = 9;
                                    void setup() {
                                    pinMode(bouton, INPUT);
                                    pinMode(led, OUTPUT);
                                    }
                                    void loop() {
                                    if(digitalRead(bouton) == LOW) {
                                    digitalWrite(led, HIGH);
                                    } else {
                                    digitalWrite(led, LOW);
                                    }
                                    }
                                    A la place du code précédent, rien ne se passe.



                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      12 juin 2013 à 14:01:53

                                      Si tu inverses les LOW/HIGH des lignes 10 et 12 ca ne change rien ?

                                      (Qu'on soit bien d'accord, tu as bien une réaction quand tu appuies sur le bouton ?)

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Retrouvez moi sur mon blog et ma chaine Youtube !

                                      Anonyme
                                        12 juin 2013 à 14:04:33

                                        J'ai une réaction (la LED s'éteint) mais lorsque j'inverse les lignes 10 et 12, plus aucune réaction, la LED reste allumée (mais je ne sais même pas pourquoi elle s'allume, au fait, je lui ai jamais demandé...).

                                        EDIT : Si cela peut aider, c'est un poussoir classique, pas un ON/OFF et c'est un bouton NO.

                                        -
                                        Edité par Anonyme 12 juin 2013 à 14:05:28

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          12 juin 2013 à 14:13:56

                                          Je viens de tester le code suivant :

                                          const int bouton = 8;
                                          const int led = 9;
                                          void setup() {
                                            pinMode(bouton, INPUT);
                                            pinMode(led, OUTPUT);
                                            Serial.begin(9600);
                                          }
                                          
                                          void loop() {
                                            Serial.print(digitalRead(bouton));
                                            delay(1000);
                                          }

                                          Qui me renvoie quelque chose... d'étrange.

                                          J'ai une grande suite de 0, puis sans aucun appui sur le bouton, une suite de 1 apparaît puis une autre suite de 0, etc...

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            12 juin 2013 à 14:17:37

                                            Je serais presque prêt à parier que soit ton bouton n'entre pas en contact avec la breaboard, soit il faut le tourner d'un quart de tour...

                                             EDIT : après avoir vu ton message, ca sent le contact qui merde... mais c'est bizarre quand même...

                                            Tu es sur que tu es bien brancher d'ailleurs ?

                                            -
                                            Edité par Eskimon 12 juin 2013 à 14:18:42

                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Retrouvez moi sur mon blog et ma chaine Youtube !

                                            Anonyme
                                              12 juin 2013 à 14:20:58

                                              J'ai branché comme tu me l'a dit...
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                12 juin 2013 à 14:34:29

                                                Bah écoute là je suis à court d'idée :/ je vois pas trop ce qui peut se passer...
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                Retrouvez moi sur mon blog et ma chaine Youtube !

                                                  12 juin 2013 à 15:51:12

                                                  Essaie un truc pour la led : le transistor en collecteur ouvert. Il te faudra un transi, une résistance de plus.

                                                  En gros tu tire du 5V ta led et ta résistance, puis tu relie à l'emetteur. Le collecteur est à la masse. pour piloter le transistor, tu relie la sortie de ton microp à la base par une résistance.

                                                  Et sinon essaie de pouvoir afficher en boucle l'état de ton bouton pour faire un test. si c'est pas le bouton qui merde, tente ce que je viens de dire ;)

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    12 juin 2013 à 16:05:58

                                                    Pour le test en boucle du bouton il a fait ca 4 posts au dessus et c'était pas hyper concluant :/ ...
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    Retrouvez moi sur mon blog et ma chaine Youtube !

                                                      12 juin 2013 à 16:15:15

                                                      Ouaip mais un test avec un affichage au fil de l'eau, la y a pas a chier : y à un contact ou pas, et le programme voit le contact, ou pas. Après, une ligne reliée qui bouffe l'autre, ça serait pas nouveau en électronique ...:p
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Anonyme
                                                        15 juin 2013 à 19:08:59

                                                        Alors oui, mais je sais pas trop bein me servir d'un transistor et j'en ai différents type :

                                                        PNP hFE : 100, PNP hFE : 200, NPN hFE : 200, NPN hFE : 100, Darlington PNP hFE : 30000, Darlington NPN hFE : 30000, Power PNP hFE : 40, Power NPN hFE : 40.

                                                        Je prends le quel ?

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          15 juin 2013 à 19:34:43

                                                          Les darlington sont les amplificateurs de courant, évite pour ça =)

                                                          Prends plutot un 22n222 je crois, ou sinon un réseau de transistors type ULN2803A (regarde ce que ça fait, y a plusieurs transistors comme ça pour tes prochaines applications ça sert).

                                                          Evite les types "POWER" : tu cherche pas de la puissance à driver, mais jsute un signal de µp

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            30 août 2013 à 15:29:24

                                                            Bonjour titi951 pour remédier a ton problème essai plutôt cela:

                                                            avec ce code:

                                                            const int buttonPin = 2;     

                                                            const int ledPin =  13;   

                                                            int buttonState = 0;        

                                                            void setup() {

                                                              pinMode(ledPin, OUTPUT);      

                                                              pinMode(buttonPin, INPUT);     

                                                            }

                                                            void loop(){

                                                              buttonState = digitalRead(buttonPin);

                                                              if (buttonState == HIGH) {     

                                                                digitalWrite(ledPin, LOW);  

                                                              } 

                                                              else {

                                                                digitalWrite(ledPin, HIGH); 

                                                              }

                                                            }

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              21 janvier 2014 à 14:49:05

                                                              Bonjour à tous, je suis en train de faire un petit projet, et je n'arrive pas à coder mon code pour une "fonction pause si un Bouton poussoir est engagé"

                                                              j'arrive à faire certaines choses, mais ça.....impossible

                                                              Quelqu'un peux m'aider?

                                                              pour info, voici une partie de mon code


                                                              #define RELAY_2 9  //eau chaude AV
                                                              #define RELAY_3 10 //eau froide AV


                                                              const ini ButtonPin = 2 //sonde de niveau branchée entre la borne 2


                                                              void setup()

                                                              {     // on initialise les sorties et on éteind les leds connectées    
                                                                
                                                              pinMode(RELAY_2, OUTPUT);      
                                                              digitalWrite(RELAY_2, HIGH);    
                                                              pinMode(RELAY_3, OUTPUT);      
                                                              digitalWrite(RELAY_3, HIGH);   
                                                              digitalWrite(RELAY_2, LOW);
                                                              digitalWrite(RELAY_3, LOW);
                                                              }

                                                              void loop ()
                                                              {

                                                              delay(5000);

                                                              digitalWrite(RELAY_2, HIGH);
                                                              delay(1000);
                                                              digitalWrite(RELAY_2, LOW);
                                                              delay(7000);
                                                                 
                                                              // je veux ici, une ligne de code qui met en pause le cycle LOOP,  si le fil en borne E2 est en contact avec une masse//
                                                              }
                                                                
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              [Arduino] Bouton poussoir

                                                              × 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