Besoin d'aide : bases boutons poussoirs

Bonsoir,

je suis actuellement un pdf d’apprentissage pour arduino et je suis au chapitre des boutons poussoirs.
Je tente de créer un barregraph avec des LED (tout bête j’en convient).
Cependant, j’ai beau refaire mon montage 50 fois, cela ne fonctionne pas et je n’arrive pas à mettre le doigt sur le problème.

Dans le cas où une âme charitable avait le temps d’aider un novice comme moi je joins les photos (d’ensemble) de mon montage ainsi que mon code.

En vous remerciant

barregraphtest.ino (1.72 KB)

bonjour,

Cependant, j'ai beau refaire mon montage 50 fois, cela ne fonctionne pas et je n'arrive pas à mettre le doigt sur le problème.

mais encore?
explique un peu mieux le soucis, rien ne fonctionne ou ca fonctionne à moitié?

Bonjour,

Ton programme à l'air correct, il s'agit donc vraisemblablement d'un problème de câblage.
Tes boutons ont l'air mal cablés. Les pattes des switchs sont reliées 2 par 2, pour être sur de les cabler correctement il faut les connecter aux deux points diagonalement opposés.
Ajoute un Serial.print(btn_plus) et btn_moins pour afficher vérifier l'appui.

Un conseil: enlève les condensateurs et ajoute un delay(10) à la fin de loop() pour faire l'anti rebond.
Tu peux aussi utiliser le pullup interne pour les boutons.

Bonsoir,

un grand merci pour la vitesse ta réponse kamill, c'était en effet bien un soucis de branchement de switch (très pratique le digital.print! )!

L'addition d'un delay pour remplacer le condo est une très bonne idée, je n'y avais pas songé. En revanche, c'est peut être une question idiote, mais je n'ai pas saisi pourquoi on pouvait laisser tomber le pullup externe.
Y a t il certain cas où il est plus important que d'autres?

Bonjour

Les rebonds électriques peuvent être filtrés soit de manière électrique (par un condo) soit de manière logicielle.
Et dans ce dernier cas, on peut utiliser un delay (pas terrible car pendant ce temps le programme ne fait rien d’autre), ou bien conserver une fréquence élevée de lecture de l’état de l’entrée numérique, en ajoutant une condition de délai minimum écoulé entre deux changements.

Pour la résistance de tirage à 5V, arduino en a une intégrée, que l’on active par une simple ligne de code. Pourquoi s’embêter à câbler une résistance externe ?

Quand on débute, c’est bien d’appréhender tous ces aspects.
Par la suite, on peut s’en affranchir en utilisant des bibliothèques qui s’occupent de gérer tout ça.
Voir ma lib “simpleBouton” dans les tutos

Et idem pour les Led avec “simpleLed”.

Pour illustrer, voici à quoi ressemblerait le même programme avec ces libs

#include "simpleBouton.h"
#include "simpleLed.h"

simpleBouton btn_minus(2);
simpleBouton btn_plus(3);
simpleLed led_1(10, true);
simpleLed led_2(11, true);
simpleLed led_3(12, true);
simpleLed led_4(13, true);
int nombre_led=0;

void setup() {}

void loop() {
  btn_plus.actualiser();
  btn_minus.actualiser();
 
  if (btn_plus.vientDEtreEnfonce()  && nombre_led < 4) nombre_led++;
  if (btn_minus.vientDEtreEnfonce() && nombre_led > 0) nombre_led--;
  
  led_1.commander(nombre_led > 0);
  led_2.commander(nombre_led > 1);
  led_3.commander(nombre_led > 2);
  led_4.commander(nombre_led > 3);
}