Partage
  • Partager sur Facebook
  • Partager sur Twitter

[AIDE] Programme detection bouton

Arduino Mege 2560

    7 mai 2013 à 21:05:37

    Bonjour, voilà je suis tout nouveau dans le domaine, je suit le cours sur l'arduino et j'ai un problème.

    je cherche a détecter l'appui d'un bouton, si je n'appuie pas sur le bouton, les leds font un chenillard, si j'appuie, elles s'allument tous,

    mais le problème c'est que cela ne marche pas :( est ce que quelqu'un pourrait m'aide dans mon code?

    je précise que je n'ai pas de bouton j'utilise un simple fil qui fait office de contact.


    const int led_rouge_1 = 46; // déclarer numéros des pins
    const int led_verte = 23; // déclarer numéros des pins
    const int led_rouge_2 = 24; // déclarer numéros des pins
    const int bouton = 47;
    int etat = HIGH;


    void setup () {
     
      pinMode(bouton, INPUT); // mode input bp
      digitalWrite(bouton, HIGH); // on active la resistance de pull up.
      pinMode(led_rouge_1, OUTPUT); // mode output
      pinMode(led_verte, OUTPUT); // mode output
      pinMode(led_rouge_2, OUTPUT); // mode output
     
    }

    void loop () {
     
      etat = digitalRead(bouton);
     
      if ( etat == HIGH ){
        digitalWrite (led_rouge_1, LOW);
        digitalWrite (led_verte, LOW);
        digitalWrite (led_rouge_2, LOW);
      }
       
      else if ( etat == LOW ) {
        digitalWrite(led_rouge_1, LOW); // led alimenté sur l'anode en +5V, commande se fait sur LOW. allume rouge_1
        delay(200);   // fait une pause de 1 seconde
        digitalWrite(led_rouge_1, HIGH);   // éteint la LED rouge_1
        digitalWrite(led_verte, LOW);   // Allume la LED verte
        delay(200);   // fait une pause de 1 seconde
        digitalWrite(led_verte, HIGH);   // éteint la LED verte
        digitalWrite(led_rouge_2, LOW);   // allume la LED rouge 2.
        delay(200);   // fait une pause de 1 seconde
        digitalWrite(led_rouge_2,HIGH);
      
      }
     
    }

    MERCI !

    • Partager sur Facebook
    • Partager sur Twitter
      7 mai 2013 à 22:42:32

      (je lirais le code quand il sera dans une balise code :p )
      • Partager sur Facebook
      • Partager sur Twitter

      Retrouvez moi sur mon blog et ma chaine Youtube !

        7 mai 2013 à 22:43:45

        (J'ai une proposition de réponse, je te la poste quand ton code sera dans une balise code :p )
        • Partager sur Facebook
        • Partager sur Twitter

        Retrouvez moi sur mon blog et ma chaine Youtube !

          7 mai 2013 à 23:30:05

          une balise code c'est quoi ??? :/
          • Partager sur Facebook
          • Partager sur Twitter
            7 mai 2013 à 23:33:12

            Regarde dans l'éditeur de texte, l'avant dernier bouton. Quand tu clic dessus, ça t'ouvre une fenêtre où tu met en haut le type de langage (ici java) et un espace pour y coller ton code.
            • Partager sur Facebook
            • Partager sur Twitter
            2b||!2b   sqrt(4b²)
              7 mai 2013 à 23:42:14

              Il y a aussi le sujet post-it présent partout que tout les nouveaux sont censé lire et qui présente les bonne règle du forum et les outils à disposition pour faire des bons messages (dans ton cas juste la balise code, c'est dommage car tout y étais (bonjour, merci, problème bien exposé)).

              Je suis donc vraiment désolé d'avoir grogné si vite à ce sujet, mais j'en ai un peu marre de forcer sur mes yeux pour faire de l'indentation et de la mise en couleur dans ma tête (alors que la fameuse balise code fait ca toute seule et pas si mal).

              Sinon pour répondre à la question, je pense que le problème vient du fait que tu utilises des delays, qui sont bloquants et donc ton programme "ne voit pas passer" le changement d'état avant la fin complète du chenillard

              • Partager sur Facebook
              • Partager sur Twitter

              Retrouvez moi sur mon blog et ma chaine Youtube !

                7 mai 2013 à 23:44:33

                Je ne suis pas un expert en la matière mais il me semble que lorsque que tu appuis sur le bouton, le chenillard se lance mais ne s’arrête pas si tu relâche à cause de la fonction "delay()" qui met tout le programme en attente le temps de faire clignoter le tout.

                De plus tu as une autre petit erreur mais c'est au niveau des commentaire donc ça n'afflue pas sur le programme, la fonction "delay(200)" met le programme en pause pendant 200ms et non 1s

                Autrement je te conseil vivement d'utiliser la balise code comme expliqué plus haut :) et de hiérarchiser ton code pour qu'ils soit mieux lisible, par exemple au lieu d'écrire un bout de code comme ça :

                const int a = 10;
                int mavariable;
                
                void loop(){
                
                if(macondition){
                
                mafonction(mavariable);
                
                }
                }

                Écris le en espaçant bien le tout et en décalant les bouts de code appartenant à une seule et même instruction (condition, boucle, etc. ) comme par exemple : 

                const int a = 10;
                
                int mavariable;
                
                void loop()
                {
                
                  if(macondition)
                  {
                    mafonction(mavariable);
                  }
                
                }

                Après c'est qu'un conseil d'amis ;) mais je te jure que quand tu écris pas mal de code ça peut sauver la vie :)

                • Partager sur Facebook
                • Partager sur Twitter
                  8 mai 2013 à 12:08:25

                  oui en faite je me suis un peu trop précipité, en ouvrant ce topic, j'ai reussi à régler le problème, en y créant des fonction,c'est beaucoup plus propre et plus lisible.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [AIDE] Programme detection bouton

                  × 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