Pages: [1]   Go Down
Author Topic: Arduino qui s'emballe ?!  (Read 626 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Je suis nouveau dans ce merveilleux monde et depuis ce soir j'ai un gros problème, à savoir que ma arduino (Uno, fraîchement acquise) fait des bizarreries.

Ainsi elle va incrémenter par exemple toute seule la variable 'buttonPushCounter' dans le code suivant :

Code:
const int  buttonPin = 9;
int buttonPushCounter = 0; 
int buttonState = 0;   
int lastButtonState = 0;

void setup() {
  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
}


void loop() {
  buttonState = digitalRead(buttonPin);
  if (buttonState != lastButtonState) {
    if (buttonState == HIGH) {
      buttonPushCounter++;
      Serial.println(buttonPushCounter);
    }
    lastButtonState = buttonState;
  }
}

Et ce, même si je débranche TOUT mes fils et que j'approche mon doigt de la sortie digital 9

J'ai essayé de trouver des informations là-dessus mais sans succès..

C'est grave docteur ?
Logged

perpignan, france
Offline Offline
Sr. Member
****
Karma: 2
Posts: 337
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non, c'est même normal, ton doigt doit être chargé électriquement et tu crée des parasites sur l'entrée (tu portes des vêtements en laine ou en synthétique, par exemple ? )

pour éviter ça il te faut activer la résistance de pullup interne à l'arduino pour ta pin d'entrée (dans ton setup, tu rajoutes digitalwrite(buttonpin, HIGH); à la fin), ce qui va permettre de "tirer" la pin au Vcc, et donc câbler ton bouton en logique négative : le bouton met l'entrée à la masse au lieu de la mettre au Vcc.

Donc ensuite dans ta condition il faut tester l'inverse (LOW).
Logged

-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'instal

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour Bricofoy, et merci pour ta réponse !

L'exemple donné ci-dessus n'est pas terrible, ma carte faisait la même chose avec une résistance de tirage et le code suivant :

Code:
#define reedpin 2
int blabla = 0;
int reedstate = 0;
int temps = 0;
int antirebond = 250;

void setup() {
  Serial.begin(9600);
  pinMode(reedpin, INPUT);
  digitalWrite(reedpin, HIGH);
  attachInterrupt(0, int_cb, FALLING);
}

void loop() {
//  Serial.println(reedstate);
  delay(100);
  reedstate = digitalRead(reedpin);
}

void int_cb() {
 if (millis() - temps >= antirebond) {
 Serial.println(blabla);
 blabla = blabla ++;
 temps = millis();
 }
}

Je dis bien faisais car désormais tout est rentré dans l'ordre..... (effet bonaldi ?)
En effet hier j'avais un pull 100% mouton irlandais ! Il devait surement y avoir une charge électrostatique

Encore merci en tout cas !
Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3414
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Le pullup interne présente une résistance élevée.
Si l'environnement est perturbé, il est préférable de mettre une résistance de valeur relativement faible et un petit condensateur à la masse( ceinture et bretelles)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Entendu fdufnews,
Je vais suivre tes conseils pour éviter que ce genre de soucis recommence
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai essayé de chercher un peu quel résistance et condensateur je pourrai utiliser.
J'ai trouvé quelques pistes mais orienté vers l'utilisation de potentiomètre..

Aurais tu un lien à me conseiller pour me permettre de calculer cela ?
Je précise qu'il s'agit d'utiliser un capteur à effet hall (ou un ILS)

Merci à toi !
« Last Edit: December 17, 2012, 01:06:29 pm by colindalaska » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Re

Grâce à ce topic : http://arduino.cc/forum/index.php?topic=93760.10
j'en ai un peu plus compris sur ce qui se passait.
Je pense donc qu'un condensateur de 100nF suffira ?
Logged

perpignan, france
Offline Offline
Sr. Member
****
Karma: 2
Posts: 337
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

oui, une résistance de 1k et un condo de 100nF ça doit marcher pas trop mal
Logged

-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'instal

Pages: [1]   Go Up
Jump to: