Une question bête

Toutes les discussions sur l'Arduino !

Modérateur : MOD

Sash28
Causant
Messages : 211
Enregistré le : mer. 01 juil. 2009, 08:00
Âge : 45

Une question bête

Message par Sash28 » lun. 22 déc. 2014, 19:14

Bonjour à tous.

Je suis en train de chercher une astuce pour allumer une led avec un bouton poussoir (là ça va) mais j'aimerai que cette led RESTE ALLUMEE jusqu'à ce que j'appuie de nouveau sur le MEME bouton poussoir.
Je sèche la-dessus et vu mon projet je ne suis pas rendu au bout de mes galères je crois.

Merci de votre aide.

Steph.

Avatar du membre
likiki
Éloquent
Messages : 301
Enregistré le : dim. 29 avr. 2012, 15:21
Echelle pratiquée : H0 3R
Prénom : Christian
Site Internet : http://passionnement.forumactif.org
Localisation : Corbeil Essonne
Âge : 52

Re: Une question bête

Message par likiki » lun. 22 déc. 2014, 19:32

Pour t'aider et te mettre sur le bon chemin :

il te faut une variable mémorisant la position de la LED (allumé ou éteinte).

1) On attend une action sur le bouton.

2 ) Quand tu a appuyé sur ton bouton, tu vérifie l'état de cette variable (1 ou 0) et tu y met le contraire.

3) Selon l'état de la variable (1 ou 0), tu allume ou éteint ta LED.

4) Retour au point 1

Je pense que tu as deux ou trois solutions différente pour arriver au résultat souhaité. On vas voir comment tu vas t'aiguiller vers LA solution.

:D
Cordialement,

Christian.

Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Une question bête

Message par Arduino » lun. 22 déc. 2014, 19:40

Bonjour Steph,

Il y a plusieurs solutions pour ton problème :
-électromécanique (avec relais qui n'est rien d'autre qu'une mémoire)
-électronique (par exemple un télérupteur à base de circuit 555)
-Arduino (ou électronique programmable).

A mon avis, la plus compliquée sera avec relais, mais les deux autres sont assez simples à mettre en oeuvre. Ce que tu veux faire ressemble à ce qui équipe nos maisons, quand il s'agit d'allumer un couloir depuis plusieurs points de commande, sauf que dans ton cas, tu n'utilises qu'un seul point de commande.

Bon, comme je ne pense pas que tu veuilles éclairer un couloir de ta maison avec une LED :lol: , dis moi dans quel cadre tu veux faire cela et je te dirai ce qui te convient le mieux.

Guillaume22
Papotier
Messages : 145
Enregistré le : dim. 29 sept. 2013, 09:20

Re: Une question bête

Message par Guillaume22 » lun. 22 déc. 2014, 19:43

Pas de question bête.
Je complète sur ce qui a été dit.

voici une partie de la solution, sans code donc.
Il faut créer une variable booléenne qui note l'état de la led soit allumé soit éteinte. En effet, HIGH = 1 et LOW = 0
Ensuite dans le loop :
un digitalWrite(DEL, booléen);
puis une condition pour changer la valeur de la variable si le bouton poussoir est allumé (un if est parfait). Un indice variable = ! variable
! signifie dans ce cadre là contraire si variable = 1 elle deviendra 0 et vice-versa.

A toi de jouer. A noter qu'il n'existe pas une seule solution mais la tienne et qu'elle sera en fonction du code que tu souhaites mettre sur l'arduino.
Tu peux trouver une partie en exemple dans l'IDE arduino dans Fichier/Exemples/Digital/BlinkWithoutDelay dans le ! dont je parlais.
Si question pose, il ne faut pas hésiter

Je suis parti du principe que tu veux faire avec Arduino, vu que c'est son forum.

Sash28
Causant
Messages : 211
Enregistré le : mer. 01 juil. 2009, 08:00
Âge : 45

Re: Une question bête

Message par Sash28 » lun. 22 déc. 2014, 19:53

Merci les gars.

En effet c'est un code que j'utiliserai avec Arduino. Je veux déjà tester pour ensuite incorporer ce code dans un programme qui sera plus grand.

j'ai d'ailleurs commencé à lire certains trucs à propos de ce ! et des variables que je commence à peine à comprendre. Je suis un cerveau lent :siffle:

Avatar du membre
likiki
Éloquent
Messages : 301
Enregistré le : dim. 29 avr. 2012, 15:21
Echelle pratiquée : H0 3R
Prénom : Christian
Site Internet : http://passionnement.forumactif.org
Localisation : Corbeil Essonne
Âge : 52

Re: Une question bête

Message par likiki » lun. 22 déc. 2014, 19:56

La vitesse d'apprentissage n'est pas importante, ce qui compte c'est d'arriver au but que l'on c'est fixé.

:ange:
Cordialement,

Christian.

Avatar du membre
groumfit
Papotier
Messages : 143
Enregistré le : sam. 25 oct. 2014, 11:25
Prénom : Denis
Âge : 63

Re: Une question bête

Message par groumfit » lun. 22 déc. 2014, 20:50

Pour te convaincre définitivement de le faire avec un Arduino, dis-toi que ça n'est pas si facile que ça à faire en électronique.
Sur ton moteur de recherche préféré, tape "télérupteur 001" et regarde le schéma...
Et tu feras avec un Arduino ! :D
J'y arriverai ... demain !

Sash28
Causant
Messages : 211
Enregistré le : mer. 01 juil. 2009, 08:00
Âge : 45

Re: Une question bête

Message par Sash28 » mar. 23 déc. 2014, 00:59

Je dois vraiment être très con! Je n'arrive à rien; Quand je vois ce que certains sont capable de faire et moi qui ne suis même pas foutu de gérer un bouton poussoir!
Je sens que ma gestion d'éclairage du réseau avec Arduino va se terminer par un bon vieux rhéostat et de l'électronique de base!
Autant je me débrouillai avec le Visual Basic qu'avec ce truc, je n'entrave rien.

J'y retourne, je vais bien réussir à tourver bordel!!

(Oui, je suis un peu énervé). Et par chance, le basard n'a pas encore volé dans la pièce ;-) J'ai peut-être été un peu présomptueux en me disant que j'allais réussir à faire quelquechose avec cette petite carte.

Bonnes fêtes de fin d'année à tous et merci de vos précisions. Je reviendrai vers vous si j'arrive à faire autre chose que clignoter une led.

Sash28
Causant
Messages : 211
Enregistré le : mer. 01 juil. 2009, 08:00
Âge : 45

Re: Une question bête

Message par Sash28 » mar. 23 déc. 2014, 08:46

Bon après avour dormi et m'être calmé je vais retourner à mes réflexions. Je pensais que la nuit porterai conseil mais ce n'est pas le cas.
Je vais bien trouver quand même.

Je vous tiens au jus mais avant passez tous un bon réveillon de Noël.

Guillaume22
Papotier
Messages : 145
Enregistré le : dim. 29 sept. 2013, 09:20

Re: Une question bête

Message par Guillaume22 » mar. 23 déc. 2014, 08:52

Il faut faire par étapes :
je vais t'aider un peu plus en te donnant la fonction loop par étapes :
le reste je pense que tu y arrives :
- tu allumes ou éteins la DEL en fonction de la variable booléenne avec un digitalWrite
-tu lis le bouton ou tu peux le faire dans la condition directement
- condition du bouton : cela dépend du bp et du cablage à savoir que si il est appuyé tire-t-il vers le 0 ou 5V. Bref :
if (bp appuyé) {EtatLed = ! EtalLed}

Aussi simple que cela au final : 2 ou 3 lignes de déclaration, 2 dans le setup de pinMode, et aussi peu dans le loop.
C'est une solution parmi tant d'autres, tout dépendra après de la longueur du programme et donc après la possibilité de voir cela sous un autre angle.

Avatar du membre
jlb
Fécond
Messages : 694
Enregistré le : jeu. 04 oct. 2012, 16:38
Echelle pratiquée : N
Prénom : Jean-Luc
Site Internet : http://modelleisenbahn.triskell.org

Re: Une question bête

Message par jlb » mar. 23 déc. 2014, 08:58

Bonjour

Restons zen :)

Gères tu les rebonds de ton poussoir ? Aucun dispositif mécanique ne produit un contact net et franc quand il établit le contact.

Gères tu le fait que ce n'est pas l'état du poussoir qui t'intéresse mais son changement d'état d'ouvert vers fermé. Les transitions.

Enfin chaque transition ouvert -> fermé engendré un changement d'état de la LED comme mes camarades l'ont expliqué.

Pour faire un anti-rebond, il faut lire 2 fois le poussoir à quelques ms d'intervalle. Si 2 lectures espacées de disons 5ms donnent le même résultat alors l'état du poussoir est fiable. Le plus simple et d'insérer un delay(5) entre deux lectures et donc de faire systématiquement deux lectures.

Pour détecter les transitions ouvert -> fermé, il faut mémoriser l'état précédent du poussoir. La transition est détectée si l'état précédent était ouvert et que le nouvel etat est fermé. Le nouvel état est ensuite recopié dans l'état précédent.

Enfin comme déjà expliqué, l'état de la LED est changé à chaque détection.

Je poste un programme de démonstration dès que j'ai quelques instants.

Sash28
Causant
Messages : 211
Enregistré le : mer. 01 juil. 2009, 08:00
Âge : 45

Re: Une question bête

Message par Sash28 » mar. 23 déc. 2014, 14:50

Ok ok.

je vais relire tout ça au calme. Le pire c'est que je comprend complètement ce que vous voulez que je fasse. Mais pour le moment, je n'arrive pas à le mettre en usage.
Je l'aurai, un jour, je l'aurai :mdr:

Avatar du membre
jlb
Fécond
Messages : 694
Enregistré le : jeu. 04 oct. 2012, 16:38
Echelle pratiquée : N
Prénom : Jean-Luc
Site Internet : http://modelleisenbahn.triskell.org

Re: Une question bête

Message par jlb » mar. 23 déc. 2014, 14:58

J'ai fait un programme de démo. Tu veux bosser encore un peu le sujet ou bien je le poste ?

Sash28
Causant
Messages : 211
Enregistré le : mer. 01 juil. 2009, 08:00
Âge : 45

Re: Une question bête

Message par Sash28 » mar. 23 déc. 2014, 15:18

Merci JLB.

Mets le de côté. Je vais essayer de me débrouiller pour le moment. Avec les fêtes ça va être chaud par contre, si lundi prochain il n'y a rien de nouveau, postes le s'il te plaît.
Ca me laisse le temps de bosser dessus. Il faut que j'y arrive sacré non de non!!

En tout cas merci à toi.

Avatar du membre
Arduino
Prolixe
Messages : 1700
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Une question bête

Message par Arduino » mer. 24 déc. 2014, 01:14

sash28 a écrit : Ca me laisse le temps de bosser dessus. Il faut que j'y arrive sacré non de non!!
Et bien sûr que tu vas y arriver !

Tu as dû remarquer que pratiquement toutes les réponses ont été faites dans l'esprit Arduino, J'ai été le seul à te proposer d'autres solutions plus électroniques. La raison de ce déferlement de solutions Arduinesques vient justement du fait qu'avec Arduino, on oublie (ou presque) l'électronique.

Pour commander une LED avec un bouton poussoir (B/P), il faut au moins une LED et un B/P ! :lol: Et bien sûr, quelque chose entre les deux qui peut être soit un montage à base de 555 (le circuit à tout faire) ou bien un module Arduino. Supposons que ce soit le module Arduino que tu veuilles mettre en oeuvre, peux-tu déjà nous dire comment tu as monté l'ensemble pour que nous puissions vérifier ton montage (dessin ou photo). Si tu t'es inspiré de mes articles dans LR (ou d'un livre), cela devrait être correct.

Ensuite, il te faut un bout de programme, constitué de deux fonctions, le setup pour initialiser les entrées-sorties (le B/P est en entrée et la LED est en sortie) et la fonction loop qui va surveiller le B/P et allumer ou éteindre la LED à chaque appui.

Dire qu'il faut une variable booléenne ou bien qu'il faut gérer les rebonds, c'est déjà du domaine du spécialiste :geek: alors si tu veux bien, on va d'abord faire simple, ne serait-ce que pour tester. Cela marchera, mais peut-être pas à tous les coups, alors tu amélioreras en gérant les rebonds (une simple petite attente pour lire l'état du B/P peut suffire pour que le rebond soit stabilisé).

Donc, ce que je te propose, c'est d'y aller progressivement : tu câbles, tu programmes, tu observes, tu corriges.
Et là, tu as de la matière à nous donner pour qu'on puisse t'aider.

Au fait, peux tu écrire en langage clair (sans utiliser un langage de programmation) ce que doit réaliser la tâche à accomplir ? Ceci est très important, savoir analyser le problème. Pas besoin d'être informaticien, il suffit d'être logique. :wink:

Et pas de panique, on s'en est tous toujours tirés, ce sera de même pour toi, j'en suis bien persuadé.

Bon courage.

Répondre