Curieux phénomène en INPUT

Bonjour tout le monde,

J'ai un curieux phénomène sur mes INPUT, des poussoirs NO en PULLUP destinés à contrôler un module à 4 relais.

Voici mon code:

#define BTN_COUNT 2

int btnPin[BTN_COUNT];
int ctcPin[BTN_COUNT];
boolean btnState[BTN_COUNT];

void setup(){

  Serial.begin(9600);

  btnPin[0] = 8;
  btnPin[1] = 9;

  ctcPin[0] = 2;
  ctcPin[1] = 3;


  for (int b = 0; b < BTN_COUNT; b++) {
    
    // Relay Setup
    pinMode(ctcPin[b], OUTPUT);    
    digitalWrite(ctcPin[b], HIGH);

    // Buttons Setup
    pinMode(btnPin[b], INPUT);
    
  }

}

void loop(){

  for (int b = 0; b < BTN_COUNT; b++) {
    
    btnState[b] = digitalRead(btnPin[b]);

    Serial.print(btnState[b]);
    
  }
  
   delay(100);

}

Et voilà ce que j'obtiens SANS PRESSER LE MOINDRE BOUTON:

11111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111110101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010
101010101010101010101010 Etc...

Quelle est mon erreur ?

Bonjour,

Tu es sur qu'il y a un pullup sur tes boutons?

hello
+1 avec kamill

changes ton code avec ça:

// Buttons Setup
pinMode(btnPin**, INPUT_PULLUP);**
et bien sur, tes BP doivent être câblés de façon à établir un contact entre GND et leurs entrées respectives lors d'un appui sur l'un d'eux

dfgh:
pinMode(btnPin**, INPUT_PULLUP);**
[/quote]
C'est bien ça...
Donc pour bien comprendre, INPUT tout court c'est pour du PULLDOWN ?
Y a t-il une différence fondamentale entre un poussoir en PULLUP et un en PULLDOWN ?
(conso ou autre)
Merci pour vos réponses !

INPUT_PULLUP : c'est pour activer le pullup interne.
INPUT : il faut un pullup ou pulldown externe

kamill:
INPUT_PULLUP : c'est pour activer le pullup interne.
INPUT : il faut un pullup ou pulldown externe

Ah...

Du coup je suis de nouveau perdu car j'ai bien un pullup externe (si j'ai bien compris, ce dont je doute aussi :p)

Voici mon montage actuel:

Oui c'est bien un pullup externe.
Si ton montage correspond bien à ton schéma, tu n'as pas besoin d'activer le pullup interne.

Si ça ne fonctionne pas sans activer le pullup interne, il y a sans doute une erreur de cablage ou un faux contact.

Ouais, j'ai décalé les poussoirs, et ça fonctionne.

Je suis tombé sur une breadboard de m...., je comprends mieux.

Désolé de vous avoir questionné pour ça, et encore merci pour vos réponses ultra-rapides.

En fait, le problème vient des résistances, les contacts de la breadboard ne sont pas suffisamment fins pour ces dernières. Poubelle...

Sinon, histoire de pas trop avoir crée ce thread pour rien:

Le pullup interne est-il préférable à l'externe ou le contraire ?

Et dans le cas de l'externe, n'est-il pas préférable de faire du pulldown ?
J'ai l'impression que le pulldown n'absorbe que les résidus, là où le pullup absorbe en continu non ?