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);
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.
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
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
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.
[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.
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !