Récupérer l'état d'un bouton

Bonjour à tous,

J'aurais besoin pour un projet de démarrer un programme (qui active plusieurs led et moteur) après avoir appuyé sur un bouton poussoir OFF-(ON). Caracéristique au lien suivant: http://www.lextronic.fr/P5348-bouton-poussoir-off---on-avec-led-verte.html

Petite précision: je n'ai pas réussit à faire briller la led en la branchant simplement à une pile 1,5 V ; Comme j'ai compris, la led est indépendante du bouton poussoir.

Le circuit est simple: un bouton poussoir et une led, si le bouton poussoir est enfoncé, alors la led se met a clignotter (elle s'alume 1s puis s'éteind; ensuite le programme relis l'état du bouton). Je n'ai mis aucune résistance ou système pull-up...

Le problème, c'est que la led clignottait alétoirement, et indépendament du bouton poussoir. Ensuite, j'ai changé le bouton de pin: même résultat. J'ai alors débranché le bouton poussoir, la led continuait à clignotter aléatoirement. Dernier test: j'ai mis la led toute seul avec un programme qui la fait clignotter (même principe, mais aucun bouton), cette fois ça marche.

Je suppose donc que le problème ne vient pas de la led vu que elle toute seul ça marche. Le problème ne vient pas non plus du bouton, étant donné que sans lui, le problème persiste. Le problème viendrait-il de la carte? Pourtant aucun problème pour un programme qui fait clignoter la led sans interaction avec un bouton poussoir.

Peut-etre le programme alors? Je ne pense pas, j'ai suivit celui du tuto su site du zero, qui me semble assez fiable! Est-ce que la carte aurais "crammé" parce que je n'ai pas mis de résistance à la led?

Au niveau branchement, j'ai relié le led à son pin et au +3,3V, le bouton poussoir est lui relié à son pin et au ground.

Je l'ai branché sur ground car il me semble que quand je le met sur ground, il y a quand même un sans blanc de contrôle grâce au bouton (ce qui n'est pas le cas avec le +5V); En effet, quelque fois, la led s'allume au signal du bouton, mais plus souvent, je peut contrôler la led en bougeant le bouton et donc le fil (incroyable mais vrai!!!).

En espérant que vous ayez des idées pour résoudre ce problème...

Merci

bonjour,

pas trés clair ton histoire

la led doit etre alimentée en 1,7V si tu dépasse cette tension elle vas cramer , tu risque aussi de dépasser l'intensitée maxi de ta sortie arduino vers cette led

il te faut inserer une resistance pour faire chuter la tension a 1,7 v aux borne de ta LED

mais plus souvent, je peux contrôler la led en bougeant le bouton et donc le fil (incroyable mais vrai!!!)

Cela sent à 15 lieues à la ronde l'erreur de schéma ou de câblage.
Fais un schéma sur une feuille de papier, prend le en photo et joint le a ton message -> Additional Options

Une entrée ne doit pas être "en l'air" sous peine d'avoir un résultat aléatoire.

Quand on n'appuye pas sur le bouton, il faut un niveau sur l'entrée. Si le bouton est relié au +5, alors relie l'entrée à la masse par une résistance et vice-versa.

val39:
Je n'ai mis aucune résistance ou système pull-up...

Bin c'est pas pour décorer que y'en a dans tous les montages que tu trouveras ... Déclare pinMode(TonPin,INPUT_PULLUP) pour activer le pull-up interne. Détecte ensuite l'appui au niveau bas.

micol:
Une entrée ne doit pas être "en l'air" sous peine d'avoir un résultat aléatoire.

Quand on n'appuye pas sur le bouton, il faut un niveau sur l'entrée. Si le bouton est relié au +5, alors relie l'entrée à la masse par une résistance et vice-versa.

Bonjour a tous,
Donc ce que j'ai fait est (archi) faux:

Il me semble que cela serait plus juste:

Est-ce correct?

Merci de votre aide...

Est ce que cela serais plus correct?

Pour lire l'etat d'un bouton utilises ce code :

dans setup()

pinMode(ledButton, INPUT);
digitalWrite(ledButton, HIGH);

dans le loop()

if (digitalRead(ledButton)==LOW)
    printf("Bouton appuyé \n");
else
    printf("Bouton relaché\n");

Pour ledButton tu choisi une pin de libre genre : int ledButton =4

C'est de la logigue inverse. On met à HIGH la pin afin d'activer la resistance de pullup. Cela evite de rajouter une resistance physique. Par ce fait tu peux cabler directement ton bouton entre la Pin "ledButton" et la masse de l'arduino.

Le bouton est appuyé quand la valeur de digitelRead est à LOW est relaché quand elle est sur HIGH.

Voilà c'est pas plus compliqué que cela.

Bonjour
Le bouton:

  • connecter une résistance de 4,7 k entre le +5V et une broche du bouton poussoir, cette même broche la relier à une entrée de votre Arduino. Relier l'autre broche du bouton poussoir au 0 v ( grd, ground).
    la led:
  • connecter une résistance de 560 ohms entre une sortie de votre Arduino est l'anode de la led (patte longue) est la cathode de la led (patte courte) au 0 V (grd, ground).
    si vous ne pouvez différencier anode cathode mettez deux led en // tête bêche, la bonne est celle qui s'allumera.
  • vérifier le mode des pins de l'Arduino INPUT pour le bouton, OUTPUT pour la led.
    A+