Mot de passe avec Boutons (sans Keymap)

Bonjour,
avant tout mille excuses si mon message n’est pas bien placé.
Je souhaite aider mon fils sur son projet d’école.
Il à faire un programme permettant d’écrire un code (sans KEYMAP).
L’idée c’est de pouvoir taper 1,2,3,4 afin d’écrire un code. Actuellement il bloque sur la récupération de ce code afin qu’il soit traité.

D’avance merci pour votre aide.
Cdlt,

voici le code

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int buttonApin = 3;
int buttonDpin = 6;
int buttonCpin = 1;
int buttonEpin = 4;
int buttonBpin = 5;
int ledPin = 2;
int ledPin2 = 13;
int pose=16;

void setup() {

lcd.begin(16, 2);
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);
pinMode(buttonCpin, INPUT_PULLUP);
pinMode(buttonDpin, INPUT_PULLUP);
pinMode(buttonEpin, INPUT_PULLUP);
lcd.setCursor (0,0);
lcd.print (“Votre code :”);
lcd.setCursor (0,1);

}

void loop() {

lcd.cursor();
// Bouton RESET
if (digitalRead(buttonApin) == LOW)
{
digitalWrite(ledPin, HIGH);
lcd.setCursor (0,1);
lcd.print (" ");
lcd.setCursor (0,1);
}
if (digitalRead(buttonApin) == HIGH)
{
digitalWrite(ledPin, LOW);
}
// Bouton 1
if (digitalRead(buttonDpin) == LOW)
{
digitalWrite(ledPin2, LOW);
lcd.print(“1”);
Serial.print(“1”);
delay(500);

}
// Bouton 2
if (digitalRead(buttonBpin) == LOW)
{
digitalWrite(ledPin2, LOW);
lcd.print(“2”);
Serial.print(“2”);
delay(500);
}
// Bouton 3
if (digitalRead(buttonCpin) == LOW)
{
digitalWrite(ledPin2, LOW);
lcd.print(“3”);
Serial.print(“3”);
delay(500);
}
// Bouton 4
if (digitalRead(buttonEpin) == LOW)
{
digitalWrite(ledPin2, HIGH);
lcd.print(“4”);
Serial.print(“4”);
delay(500);
}

}

Pour l’instant ton programme vérifie si les boutons sont enfoncés, mais pas si on a entré le code. Pour ça il faut vérifier l’ordre d’appui sur les boutons.
Il y a plusieurs façons de faire ça. Tu peux par exemple stocker les 4 appuis successifs (par exemple bouton d, puis c puis e puis encore c) et comparer avec le résultat attendu, c’est à dire le bon ordre des boutons.

Merci beaucoup,
effectivement il bloque sur ce que tu évoques. Quelle fonction doit il rechercher ?
Il pensait utiliser le moniteur série mais je ne pense pas que ce soit un bon choix.
Pourrais tu me donner des pistes afin que nous fassions des recherches plus ciblés ?
Je pensais aussi, peut être, considérer les quatre boutons en tant qu’objet. Il y a t’il un intérêt ?
Encore une fois merci d’avance.

Tu as des numéros de pins associés a chaque bouton : 1, 6, 4, 5.
Au passage, la pin 1 est plutôt réservée à la communication série avec l’IDE. Mais ce n’est pas grave si tu n’affiches rien dans la console.

Tu peux construire un nombre avec ces numéros. Par exemple si on appuie sur le 6 puis le 4 puis le 1 puis le 6 tu construits le nombre 6416.
Ton password vaut par exemple 4561. Tu compares ces deux nombres et s’ils sont égaux c’est que le bon mot de passe a été tapé.

C’est une possibilité, il y en a d’autres, mais l’idée est la même : comparer une suite avec celle du mot de passe.
Bien sûr tu ne compares que lorsque 4 appuis ont été détectés. Donc il faut compter les appuis sur les boutons.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.