Arduino: Problème de multiplexage boutons avec transistor

Arduino: Problème de multiplexage boutons avec transistor

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Je débute en arduino, et j'aimerais augmenter le nombre de boutons poussoirs sur l'arduino en utilisant le même nombre d'entrées/sorties sur la carte, en utilisant les transistors NPN.

J'ai fait un petit montage test avec 2x4 boutons où chaque rangée de 4 boutons est pilotée par un transistor. J'arrive sans problème a recupere l'état des boutons, même en appuyant simultanément, sauf dans le cas où j'appuie sur deux boutons reliés à la même sortie de l'arduino, et que j'appui sur un autre bouton.

schema 2x4 boutons arduino

Si j'appuie sur 1 et 5, et aussi sur 3 par exemple, l'arduino m'affichera sur le Serial Monitor que les boutons 1, 5 et 3 sont appuyés, mais aussi le 7 relié à la même sortie que le 3, sans que j'appuie dessus. J'ai fait plusieurs tests dans le code, dans le montage, des recherches sur le web, en essayant de comprendre qu'est ce qui n'allait pas, sans trouver.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
char donne[8];

void setup() {
  Serial.begin(9600);  
   for (int i=4; i<7; i++)
       pinMode(i, INPUT_PULLUP);
    for (int i=0; i<8; i++)
    donne[i]='0';

   pinMode(3, OUTPUT);
   pinMode(2, OUTPUT);
   digitalWrite(3, LOW);
   digitalWrite(2,HIGH);

}

void loop() {
  for (int i=0; i<8; i++)
    donne[i]='0';

  if (digitalRead(4)==false)
    donne[0]='1';
  if (digitalRead(5)==false)
    donne[1]='1';
  if (digitalRead(6)==false)
    donne[2]='1';
  if (digitalRead(7)==false)
    donne[3]='1';
digitalWrite(2,LOW);
digitalWrite(3, HIGH);
  if (digitalRead(4)==false)
    donne[4]='1';
  if (digitalRead(5)==false)
    donne[5]='1';
  if (digitalRead(6)==false)
    donne[6]='1';
  if (digitalRead(7)==false)
    donne[7]='1';

     digitalWrite(3, LOW);
  digitalWrite(2,HIGH);


    Serial.println(donne);

}

Voila le code arduino aussi.

J'espère avoir été clair, et désolé pour les éventuelles erreurs de code/montage/d'orthographes.

Je vous remercie pour l'aide que vous pourriez m'apporter! :)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte