Aide pour valider un mot de passe !

Bonjour, je cherche un moyen de comparer un mot de passe pré-enregistrer avec un code tapé depuis la console. Cela doit sûrement être très simple mais je galère depuis 2 jours sur ça...
Je ne demande pas un code tout fait, juste une ligne me permettant de les comparer :slight_smile:
Merci pour votre aide !

if (mot_de_passe_pre-enregistrer == code_tape_depuis_la_console)...

Je ne demande pas un code tout fait, juste une ligne me permettant de les comparer :slight_smile:

Comparer quoi ?
Un nombre, un mot ?
Dans quel type de variable le mdp est-il stocké ?
Un entier ? une chaîne de caractères ?

En bref : ta demande est un brouillon.

Alors donc comparer 2 nombres (par ex 1234 et 0987) et voir s'ils sont égaux.
Je ne sais pas quelle variable est la plus appropriée... Peut être int ?
J'essayerais d'être plus précis a l'avenir...

Si le mdp est stocké dans un int je ne vois pas ce qui bloque.

Voir réponse #1

je vous montre ce que j'ai tenté de faire, et il ne ce passe absolument rien...
ne me jugez pas trop sévèrement je suis encore apprenti...

int mdp = 1234;
int mdptape ;
void setup() {
  Serial.begin(9600);

  // put your setup code here, to run once:
while (Serial.available()>0)
{
  mdptape=Serial.read();
  if(mdp==mdptape)
  {
    Serial.print("Code bon");
  }
  else
  {
    Serial.println("Code mauvais");
  }
}
}

void loop() {
  // put your main code here, to run repeatedly:

}

Serial.read() lit un seul caractère. Cela ne peut pas marcher.

https://www.arduino.cc/en/Reference/parseInt

ok merci beaucoup. j'ai aussi mis le tout dans void loop.
Néanmoins, quand je marque le bon code, il me renvoie code bon mais aussi code mauvais. et quand je marque le mauvais code, il me renvoie code mauvais x2...

int mdp = 1234;
int mdptape ;
void setup() {
  Serial.begin(9600);
}
void loop() {
 while (Serial.available()>0)
{
  mdptape=Serial.parseInt();
  if(mdp==mdptape)
  {
    Serial.println("Code bon");
  }
  else
  {
    Serial.println("Code mauvais");
  }
}
}

mantrax01928374:
ok merci beaucoup. j'ai aussi mis le tout dans void loop.
Néanmoins, quand je marque le bon code, il me renvoie code bon mais aussi code mauvais. et quand je marque le mauvais code, il me renvoie code mauvais x2...

int mdp = 1234;

int mdptape ;
void setup() {
 Serial.begin(9600);
}
void loop() {
while (Serial.available()>0)
{
 mdptape=Serial.parseInt();
 if(mdp==mdptape)
 {
   Serial.println("Code bon");
 }
 else
 {
   Serial.println("Code mauvais");
 }
}
}

c ' est normal , car vous avez mis une boucle : while , dans une autre boucle : loop .

Remplacez simplement " while " par " if " et si je n' ais pas dis de betise , ca ne devrait afficher qu ' une fois .

je viens de le faire et ca ne change rien...

Normal : parseInt() s'arrête au premier caractère non numérique rencontré.
Ensuite il y a retour chariot et newline, donc il revoie ZERO.

   mdptape = Serial.parseInt();
   if (mdptape != 0) {
      // etc.

okkk merci pour votre patience ça fonctionne très bien ! :slight_smile:

:slight_smile:

je ne suis pas sûr qu'un int soit adapté - si votre mot de passe c'est 0123 et que vous tapiez 123 ça va vous dire que le mot de passe est correct.

à mon avis il faut lire de l'ASCII sur le port série et comparer des chaînes de caractères, vous avez vous pouvez jeter un oeil à mon petit tuto sur le sujet - il y a même du code pour un mot de passe :slight_smile: