bonjours, je voudrais savoir comment faire pour que quand on appui sur un bouton la LED s'allume et qu'au bout de 3s elle se met a clignoter 5s et qu'elle s’arrête .
merci
-----
bonjours, je voudrais savoir comment faire pour que quand on appui sur un bouton la LED s'allume et qu'au bout de 3s elle se met a clignoter 5s et qu'elle s’arrête .
merci
Bonjour,
ne petite lecture s'impose:
http://forums.futura-sciences.com/el...-rappeler.html
A+
j'ai dejat une partie de mon programme mais quand j'ajoute un delay au lieu qu'elle reste allumée 3s elle s'allume au bout de 3s.Code:const int bouton = 12; //le bouton est connecté à la broche 2 de la carte Adruino const int led = 13; //la LED à la broche 13 int etatBouton; //variable qui enregistre l'état du bouton void setup() { pinMode(led, OUTPUT); //la led est une sortie pinMode(bouton, INPUT); //le bouton est une entrée etatBouton = HIGH; //on initialise l'état du bouton comme "relaché" } void loop() { etatBouton = digitalRead(bouton); //Rappel : bouton = 2 if(etatBouton == HIGH) //test si le bouton a un niveau logique HAUT { digitalWrite(led,HIGH); //la LED reste éteinte } else //test si le bouton a un niveau logique différent de HAUT (donc BAS) { digitalWrite(led,LOW); //le bouton est appuyé, la LED est allumée } }
je vois pas comment si prendre si quelqu'un pouvais me donner juste une petite aide ?
Bonjour
Le programme que tu donnes ici est similaire à l'exemple "Button" fourni avec l'Arduino. Mais sa fonction est de recopier en temps-réel l'état du bouton sur la led, et ne correspond donc pas vraiment à ce que tu dois réaliser, qui est de déclencher une séquence particulière d'allumage de la led dès qu'on a appuyé sur le bouton.
Cliquez pour afficherCode:/* Lorsqu'on appuie sur le bouton-poussoir, la led s'allume durant 3 s, clignote pendant 5 s et s'éteint. On utilise la led témoin située sur le circuit de l'Arduino, qui est commandée par la sortie 13. Le bouton-poussoir est connecté entre l'entrée 2 et la masse GND. Afin d'éviter de rajouter une résistance externe, on active la la résistance de rappel interne de l'entrée 2. */ // Led sur la broche 13 const int sortieLed = 13; // Bouton-poussoir sur la broche 2 const int entreeBouton = 2; void setup() { // programme la broche de la led en sortie pinMode(sortieLed, OUTPUT); // programme la broche du bouton-poussoir en entrée pinMode(entreeBouton, INPUT); // active la résistance de rappel interne pour le bouton-poussoir digitalWrite(entreeBouton, HIGH); } void loop() { // teste l'état du bouton (LOW si bouton appuyé, HIGH si bouton relâché) if (digitalRead(entreeBouton)==LOW) { // si le bouton est appuyé, on déroule la séquence : ... (ICI LA SÉQUENCE D'ALLUMAGE DE LA LED) } }
Quant au placement du délai d'éclairement de la led, il doit se situer entre l'allumage et l'extinction de celle-ci.
Cliquez pour afficherCode:// allume la led digitalWrite(sortieLed, HIGH); // attend 3 secondes (=3000 millisecondes) delay(3000); // éteint la led digitalWrite(sortieLed, LOW);
merci cela fonctionne mai elle clignote indéfiniment et je voudrait seulement pendant 5s et je sais pas comment faire?
Code:void loop() { // teste l'état du bouton (LOW si bouton appuyé, HIGH si bouton relâché) if (digitalRead(entreeBouton)==LOW) { // si le bouton est appuyé, on déroule la séquence : digitalWrite(sortieLed, LOW); // on allume la LED delay(3000); // pendant un durée de 3s // allume la led digitalWrite(sortieLed, HIGH); // attend 3 secondes (=3000 millisecondes) delay(3000); // éteint la led digitalWrite(sortieLed, LOW); } }
j'ai un problème enfaite elle clignote même sans appuyer sur le bouton. J'ai ressayer et quand je fait ceci :
elle ne s'allume qu'au bout de 3s alors que je voudrait l'inverse :/Code:if (digitalRead(entreeBouton)==LOW) { // si le bouton est appuyé, on déroule la séquence : digitalWrite(sortieLed, LOW); // on allume la LED delay(3000); // pendant un durée de 3s
D'après ton programme, elle ne clignote pas « indéfiniment » mais seulement tant que tu restes appuyé sur le bouton (du moins si la configuration électrique est correcte, notamment en ce qui concerne la résistance de rappel).
Ta séquence n'est constituée que de :
- une extinction de 3 secondes
- un allumage de 3 secondes
- une extinction
et elle est exécutée en boucle tant qu'on détecte que le bouton est appuyé.
Concernant ton code, la séquence devrait commencer par l'allumage et non pas par l'extinction, et elle devrait contenir également toutes les commandes correspondant au clignotement pendant 5 secondes qui doit suivre.
Par ailleurs, s'il faut comprendre dans ton « ... et qu'elle s’arrête » qu'il faut que le programme cesse définitivement de détecter l'appui sur le bouton afin de ne plus recommencer la séquence, alors il faut inclure dans cette séquence une commande adéquate. Si ton programme ne fait rien d'autre à côté, alors tu peux le bloquer en mettant une boucle infinie (« while(1); ») à la fin de la séquence (et pour redémarrer, il faudra appuyer sur le petit bouton RESET ou bien débrancher puis rebrancher l'Arduino). Sinon tu pourrais positionner une variable qui sera testée au début de la boucle, avant ou en même temps que l'état du bouton, pour que la séquence ne soit pas exécutée une seconde fois.
Je doit avoir un problème dans ma configuration électrique je vais chercher comment y brancher correctement merci .
Si tu connectes le bouton poussoir entre l'entrée et la masse, alors tu dois avoir une résistance de rappel entre l'entrée et Vcc (+5V).
Deux solutions s'offrent à toi :
- soit tu ajoutes physiquement cette résistance à ton montage
- soit tu actives logiciellement la résistance interne dont l'entrée de l'ATMega est pourvue : l'exemple que j'ai fourni dans mon premier « spoiler » montre comment procéder.
le pourrai avoir le lien de l'exemple svp?
Pour voir mon exemple, il suffit de cliquer sur la première zone « Cliquez pour afficher » de mon post #4 ci-dessus.
(NB: Je pourrais donner un exemple complet et fonctionnel réalisant la séquence attendue. Mais comme l'a rappelé Jack, en matière de travail scolaire il n'est pas dans la politique du forum de donner tout de suite le résultat.)
ok, mais sinon es que vous auriez un schéma de montage pour ma programmation? que j'ai rechercher sur internet et j'arrive pas a trouver un tuto avec une LED et un bouton?
et je n'est pas de résistance de rappel *
j'ai finalement réussi a faire mon branchement , excuser moi . Mais j'ai toujours le même problème qui est qu'elle s'allume 3secondes après :/
après plusieurs teste j'ai pue résoudre le problème mon programme fonctionne bien il me reste plus que sa :
digitalWrite(led, LOW);
delay(1000);
digitalWrite(led, HIGH);
delay(100);
je voudrait qu'il l’exécute 5 seconde , comment je pourrait le faire svp?
Cela explique que le clignotement soit permanent. Le niveau de l'entrée reste à l'état bas après un premier appui sur le bouton du fait des charges électriques emmagasinées dans la capacité parasite de l'entrée.
On trouve des exemples de montage sur le site officiel de l'Arduino.
Pour la led, on utilise la led intégrée à la carte Arduino.
Pour le bouton-poussoir, il y a deux façons de le brancher :
- soit entre l'entrée et le +5V, avec une résistance entre l'entrée et GND (voir premier schéma) : le niveau d'entrée est à l'état bas (LOW) au repos, et passe à l'état haut (HIGH) lorsqu'on appuie sur le bouton ;
- soit entre l'entrée et GND, avec une résistance entre l'entrée et le +5V (voir second schéma) : le niveau d'entrée est à l'état haut (HIGH) au repos, et passe à l'état bas (LOW) lorsqu'on appuie sur le bouton.
Comme je l'ai expliqué, on peut se passer de la résistance dans ce dernier cas (voir troisième schéma), à condition d'utiliser la résistance intégrée à l'entrée de l'ATMega. L'activation de cette résistance est réalisée en écrivant un niveau logique haut sur le port correspondant à l'entrée (commande « digitalWrite(numéro de l'entrée, HIGH); »). J'admets qu'il n'est pas très logique de devoir écrire sur une entrée, mais c'est comme cela que fonctionne cette astuce.
button_schem.png
button_schem_inv.png
button_schem_inv_rr.png
Bonjour,
merci d'utiliser dès à présent les balises [*code]....[/code] (enlever juste l'étoile) pour une meilleure lisibilité.
J'ai déjà modifié vos premiers posts.
j'en ai fini avec cette programmation . Merci de m'avoir aider , j'ai pue comprendre mes erreurs .