Bonjour j'aimerai savoir s'il est possible d'allumer une led en permanence en appuyant sur un bouton je voudrais que quand j'appuye sur mon bouton la led s'allume et quand je re-clic su le bouton la led s'eteigne mais ja n'y arrive pas si vous avez une solution ?!
Non ca ne marche pas la led est allumée sans que je touche au bouton et elle s'éteint quand j'appui sur le bouton mais dès que je le relache la led se rallume !!
ce que je veux c'est que je fais un appui sur le bouton (j'appuie et je relache ) et la led s'allume et reste allumée et quand je ré appui sur le bouton la led s'éteint !
E ca ne marche pas avec ce programme j'ai essayé quelque trucs mais je vois pas comment faire là
Il te faut une variable qui contiendra l'état de la LED en bool. (true ou false)
ex: bool ledStatus;
Ensuite quand ton code détecte un appui tu changes l'état de cette variable.
ex: ledStatus = !ledStatus;
x = l'inverse de x
Donc true devient false et inversement.
En fonction de l'état de cette variable tu allume ou non la led.
ex:
Ca ne marche toujours pas je ne comprend pas comment ca ne peut pas marcher !
Tu n'as pas lu dans le message de "Bienvenue" qu'il faut fournir les schémas de ce que tu as réellement câblé, pas un schéma provenant d'internet, et ton code ?
Comment veut tu qu'on détecte la conne*ie , Avec une boule de cristal ?
mon schéma de cablage je n'en ai pas juste, une led bleue connectée avec une resistance de 220ohm a a carte arduino et un bouton poussoir une broche connecté a la masse avec une resistance de 12kohm en série, une autre broche au Vcc et la dernière à une broche digitale !
c'est pas le cablage le plus difficile je pense !
Le code le voici :
int BPPin = 2 ;
int led = 9 ;
int BP ;
void setup() {
Serial.begin(9600);
pinMode(led,OUTPUT);
pinMode(BPPin,INPUT);
}
void loop() {
BP = digitalRead(BPPin);
if (BP == 1 ){
digitalWrite(led, HIGH);
}else{
digitalWrite(led,LOW);
}
}
La Led est éteinte de base quand j'appui sur le bouton elle s'allume mais si je le relache elle s'éteint
/*
Commande d'allumage et d'extinction d'une LED avec un seul poussoir.
La LED avec une résistance de 1K est raccordée sur D2
A0 avec une résistance de 10K au 5V
Le poussoir sur A0 avec contact à la masse
*/
void setup()
{
pinMode(2, OUTPUT); // emplacement de la LED-1
digitalWrite(2, LOW); // LED-1 éteinte
}
void loop() // Boucle sans fin
{
int bouton=analogRead(0); // Lire l'état du bouton poussoir
/*
if (bouton < 100) // Si bouton poussoir est pressé et la ligne est longue
*/
if (bouton == 0) // Si bouton poussoir est pressé et la ligne est courte
{
if (digitalRead(2)==0) // et si LED éteinte
{
digitalWrite(2, HIGH); // alors allumer la LED
}
else // et si la LED était déja adlummée
{
digitalWrite(2,LOW); // alors éteindre la LED
}
delay(1000); // attendre 1 sec
}
}
Il ne faut aucun long delay() ou éventuellement juste de 10 pour 15ms pour débouncer le bouton. le code ci dessus fera clignoter la lampe toute les secondes si vous tenez le bouton appuyé et ne le relâchez pas...
Il faut une variable d'état qui mémorise que le bouton a été relâché.
Regardez le code que j'avais proposé pour une question similaire dans la réponse 3 et quelques explications en 5
Moi j'utilise ma méthode depuis plusieurs années pour commander 6 appareils électriques depuis un pupitre de commande à 6 poussoirs et je n'ai aucune difficulté à enclencher ou déclencher en moins d'une seconde.
Gilbert - tenez votre bouton enforcé 10 secondes sur votre pupitre si vous avez ce code et regardez le comportement de vos appareils... Votre code fonctionne si vous relâchez le bouton dans la seconde qui suit son appui.
d'accord, c'est que vous avez un "bouton poussoir à impulsion" sans doute - Un click dessus envoit une impulsion et se relâche immédiatement tout seul. c'est pour cela que ça fonctionne pour vous.
Bichongri a un bouton de base, tant qu'il est enfoncé, la connexion est active. c'est pour cela qu'il faut qu'il en tienne compte dans son code
Bonjour à tous, dsl le topic est un peu vieux mais s'il y en a qui se demande toujours comment faire, j'ai réussi à bricoler ça sans delay. Si certains veulent me faire des propositions d'amélioration je suis preneur car je débute un peu...
Merci beaucoup
int button = 8 ;
int led = 12 ;
bool a = 0;
bool b = 0;
void setup() {
pinMode(button, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
bool BP = digitalRead(button);
while (a == 0) {
BP = digitalRead(button);
while (BP == 1) {
BP = digitalRead(button);
digitalWrite(led, HIGH);
b = 1;
}
if (b == 1) {
a = 1;
}
}
while (a == 1) {
BP = digitalRead(button);
while (BP == 1) {
BP = digitalRead(button);
digitalWrite(led, LOW);
b = 0;
}
if (b == 0) {
a = 0;
}
}
}