Je suis en train de réaliser un projet pour faire un compteur sur LCD avec les boutons poussoir inclus. Deux problèmes surviennent :
-1) L'orsque je reste appuyé sur le bouton les nombres défillent et je voudrais que qu'ils n'augmentent que d'un.
-2) Je voudrais aller de 0 à 99 car je n'arrive qu'a aller jusqu'à 9.
int buttonPins[3] = {3, 4, 5};
pinMode(buttonPins[3], INPUT);
digitalWrite(buttonPins[3], HIGH);
je ne pense pas que ça soit ça que tu veuilles. La tu ne configure que le pin à l'index 3. Donc deux problèmes :
l'index 3 n'existe pas dans ton tableau. Il y a 3 index mais en partant de 0
tu ne vas configurer que l'index 3, et non pas les 3 pins
Pour faire ce que tu veux il faut passer par une boucle :
for (int i =0;i<3;i++) {
pinMode(buttonPins[i], INPUT);
digitalWrite(buttonPins[i], HIGH);
}
Ensuite solution simple pour ton problème d'appui :
if(digitalRead(buttonPins[1])) {
AffichageVariable(x);
if(x++>99) x=0;
while(digitalRead(buttonPins[1])); //on boucle tant que le bouton est appuyé
delay(50) // limite les effet de rebond
}
void AffichageVariable(int x)
{
char maChaine[3]; // je déclare une chaine vide
itoa (x, maChaine,10 ); // conversion integer en chaine de caractère, 10 c'est pour base 10, décimal donc
lcd.clear(); // j'efface l'écran pour ne pas surcharger
lcd.setStr(machaine, 20, 50, BLUE, WHITE);
}
En remplacant ma void affichage par la tienne j'ai ce message d'erreur.
Affichage_variable4.ino: In function 'void AffichageVariable(int)':
Affichage_variable4:39: error: no matching function for call to 'LCDShield::clear()'
C:\Documents and Settings\Master\Mes documents\Arduino\libraries\ColorLCDShield/ColorLCDShield.h:364: note: candidates are: void LCDShield::clear(int)
Affichage_variable4:40: error: 'machaine' was not declared in this scope
Affichage_variable4:40: error: 'machaine' was not declared in this scope => machaine n'existe pas, en revanche, maChaine
void AffichageVariable(int x)
{
char maChaine[3]; // je déclare une chaine vide
itoa (x, maChaine,10 ); // conversion integer en chaine de caractère, 10 c'est pour base 10, décimal donc
lcd.clear(BLACK); // j'efface l'écran pour ne pas surcharger
lcd.setStr(maChaine, 20, 50, BLUE, WHITE);
}