rikem
September 24, 2022, 7:59am
1
Bonjour,
Voila je me lance dans la programmation Arduino et je me suis dis pourquoi ne pas commencer par ce projet:
Je suis peux être un peu trop optimiste car je n'arrive pas a configurer plusieurs boutons poussoirs voila mon code pour le moment:
void setup() {
pinMode(2, INPUT_PULLUP); // enable internal pull-up
Serial.begin(9600);
pinMode(6, INPUT_PULLUP); // enable internal pull-up
Serial.begin(9600);
pinMode(8, INPUT_PULLUP); // enable internal pull-up
Serial.begin(9600);
}
int buttonStatus = 0;
void loop() {
int pinValue = digitalRead (2);
delay(10); // quick and dirty debounce filterint
if (buttonStatus != pinValue) {
buttonStatus = pinValue;
Serial.println(buttonStatus);
}
digitalRead (6);
delay(10); // quick and dirty debounce filterint
if (buttonStatus != pinValue) {
buttonStatus = pinValue;
Serial.println(buttonStatus);
}
digitalRead (8);
delay(10); // quick and dirty debounce filterint
if (buttonStatus != pinValue) {
buttonStatus = pinValue;
Serial.println(buttonStatus);
}
}
le problème est que l'entrée 2 fonctionne parfaitement, pas le autres et je ne comprends pas pourquoi
Merci
kamill
September 24, 2022, 8:19am
2
Bonjour,
Mets ton code entre balises de code. Voir Les bonnes pratiques du Forum Francophone , chapitre balises de code.
C'est bien de mémoriser l'état du bouton dans buttonStatus, mais comme tu as trois boutons, il te faut trois variables buttonStatus.
Je te conseille fortement d'utiliser des noms pour tes entrées, ça rend le code plus lisible et évite les erreurs.
Sujet mal exposé dans le bar, déplacé dans la section principale du forum français.
terwal
September 24, 2022, 8:31am
3
Bonjour,
digitalRead (6);
delay(10); // quick and dirty debounce filterint
if (buttonStatus != pinValue) {
buttonStatus = pinValue;
Serial.println(buttonStatus);
}
Ce code ne doit pas faire ce que tu attends.
Tu lis l'état du bouton 6, mais ne l'affecte à aucune variable.
Puis tu test si boutonStatus est différent de pinValue.
Les deux étant forcément égaux à cause du code précédent.
rikem
September 25, 2022, 7:29am
4
Bonjour,
Merci pour ton aide j'ai changé mon code mais toujours rien voila le nouveau
int bp1 = 2;
int bp2 = 4;
int bp3 = 6;
int bp4 = 8;
int bp5 = 10;
int bp6 = 12;
int bp7 = 14;
int bp8 = 16;
int bp9 = 18;
int bp10 = 20;
void setup()
{
// Bouton poussoir 1
pinMode(bp1, INPUT_PULLUP);
Serial.begin(9600);
// Bouton poussoir 2
pinMode(bp2, INPUT_PULLUP);
Serial.begin(9600);
// Bouton poussoir 3
pinMode(bp3, INPUT_PULLUP);
Serial.begin(9600);
// Bouton poussoir 4
pinMode(bp4, INPUT_PULLUP);
Serial.begin(9600);
// Bouton poussoir 5
pinMode(bp5, INPUT_PULLUP);
Serial.begin(9600);
// Bouton poussoir 6
pinMode(bp6, INPUT_PULLUP);
Serial.begin(9600);
// Bouton poussoir 7
pinMode(bp7, INPUT_PULLUP);
Serial.begin(9600);
// Bouton poussoir 8
pinMode(bp8, INPUT_PULLUP);
Serial.begin(9600);
// Bouton poussoir 9
pinMode(bp9, INPUT_PULLUP);
Serial.begin(9600);
// Bouton poussoir 10
pinMode(bp10, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
// Récuperer valeur de bp1
int b1 = digitalRead(bp1);
Serial.print("Bouton 1 : "); Serial.println(b1);
// Si Appuie BP1
if (b1 == LOW) {
Serial.println("Bouton 1 - ON");
delay(10);
}
// Récuperer valeur de bp2
int b2 = digitalRead(bp2);
Serial.print("Bouton 2 : "); Serial.println(b2);
// Si Appuie BP2
if (b2 == LOW) {
Serial.println("Bouton 2 - ON");
delay(10);
}
// Récuperer valeur de bp3
int b3 = digitalRead(bp3);
Serial.print("Bouton 3 : "); Serial.println(b3);
// Si Appuie BP3
if (b3 == LOW) {
Serial.println("Bouton 3 - ON");
delay(10);
}
// Récuperer valeur de bp4
int b4 = digitalRead(bp4);
Serial.print("Bouton 4 : "); Serial.println(b4);
// Si Appuie BP4
if (b4 == LOW) {
Serial.println("Bouton 4 - ON");
delay(10);
}
// Récuperer valeur de bp5
int b5 = digitalRead(bp5);
Serial.print("Bouton 5 : "); Serial.println(b5);
// Si Appuie BP5
if (b5 == LOW) {
Serial.println("Bouton 5 - ON");
delay(10);
}
// Récuperer valeur de bp6
int b6 = digitalRead(bp6);
Serial.print("Bouton 6 : "); Serial.println(b6);
// Si Appuie BP6
if (b6 == LOW) {
Serial.println("Bouton 6 - ON");
delay(10);
}
// Récuperer valeur de bp7
int b7 = digitalRead(bp7);
Serial.print("Bouton 7 : "); Serial.println(b7);
// Si Appuie BP7
if (b7 == LOW) {
Serial.println("Bouton 7 - ON");
delay(10);
}
// Récuperer valeur de bp8
int b8 = digitalRead(bp8);
Serial.print("Bouton 8 : "); Serial.println(b8);
// Si Appuie BP8
if (b8 == LOW) {
Serial.println("Bouton 8 - ON");
delay(10);
}
// Récuperer valeur de bp9
int b9 = digitalRead(bp9);
Serial.print("Bouton 9 : "); Serial.println(b9);
// Si Appuie BP9
if (b9 == LOW) {
Serial.println("Bouton 9 - ON");
delay(10);
}
// Récuperer valeur de bp10
int b10 = digitalRead(bp10);
Serial.print("Bouton 10 : "); Serial.println(b10);
// Si Appuie BP10
if (b10 == LOW) {
Serial.println("Bouton 10 - ON");
delay(10);
}
}
kamill
September 25, 2022, 9:06am
5
Qu'est ce qu'il se passe exactement?
Remarques:
un seul Serial.begin(9600); suffit, pas la peine d'en mettre plusieurs.
tu aurais intérêt à utiliser un tableau et une boucle plutôt que d'écrire 10 fois la même chose.
Bonjour rikem
rikem:
mais toujours rien
Si tu mets en remarque tout les
//Serial.print("Bouton x : "); Serial.println(bx);
qui masquent le fonctionnement de ton programme, tu verrais qu'il fonctionne très bien.
Je plussoie @kamill
Avec des tableaux et des boucles , tu simplifies et l'écriture et la maintenance de ton programme.
Cordialement
jpbbricole
rikem
September 25, 2022, 11:45am
7
désolé je débute totalement comment programme ton un boucle ?
Merci beaucoup effectivement c'est beaucoup mieux.
Bonjour rikem
Regardes ce lien, c'est un bon début.
Jwe me suis amusé à l'exercice, ton programme passe de 167 lignes à 34 lignes.
Cordialement
jpbbricole
system
Closed
March 24, 2023, 11:50am
9
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.