Pages: 1 [2]   Go Down
Author Topic: Creer un mot de passe avec 2 boutons poussoirs  (Read 1390 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est bon j'ai remplacé les HIGH par LOW et j'utilise juste la led integrée sur la carte arduino comme temoin, mais toujours pas de réponse de la led...
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3174
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Comme (une fois de plus) tu n'as pas suivi ce que je t'ai dit, tu as créer ta clé avec 4 chiffres ... Donc les conditions if(NombreAppui>4) va necessiter 5 appui, et la routine qui suit ne vont pas marcher.
Logged


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

Mais même avec un mot de passe a 5 chiffres et le " if NombreAppui>4 " ça marche pas.
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3174
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon bin faut faire du debug alors : place des Serial.println() aux endroits clés (attention pas en dehors des conditions sinon ça va boucler toutes les ms. Exemple :
Code:
if(digitalRead(Bouton1)==LOW){
while(digitalRead(Bouton1)==LOW); // boucle tant que le bouton reste appuyé
delay(50);
Serial.println("Appui sur le bouton 1");
CodeEncours[NombreAppui++]=0;
}

La même chose sur le bouton 2 et lorsque NombreAppui>4. Tu n'as plus qu'à regarder dans le moniteur série ce que tu reçois.
Logged


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

C'est bon, le code marche  smiley-razz, c'est pas trop tôt.
Merci de ton aide et (surtout) de ta patience.
Je poste le code , si jamais sa interesse des gens:

Code:
int led = 13;
int Bouton1 =2;
int Bouton2 =3;
int password[5]={1,1,1,1,1};
int CodeEncours [5];
byte NombreAppui = 0;

void setup(){
  pinMode(led,OUTPUT);
  pinMode(Bouton1,INPUT);
  pinMode(Bouton2,INPUT);
  Serial.begin(9600);
 
}

void loop(){
if(digitalRead(Bouton1)==LOW){
while(digitalRead(Bouton1)==LOW);
Serial.println("Appui sur le bouton 2");
delay(50);
CodeEncours[NombreAppui++]=0;
}

if(digitalRead(Bouton2)==LOW){
  while(digitalRead(Bouton2)==LOW);
  Serial.println("Appui sur le bouton 1");
delay(50);
CodeEncours[NombreAppui++]=1;
}

if(NombreAppui>4){
  Serial.println("nbr appui=5");
 
int a=0; // variable qui stocke le nombre de similitude entre les 2 combinaisons
for ( int i=0; i<=4;i++)    {
  if (password[i] == CodeEncours[i]){
     
 

a= a+1;
Serial.print(a);

}


     
    }
if (a==5){
 
 
digitalWrite(led,HIGH);
delay (5000);
digitalWrite(led,LOW);
}
else{
  digitalWrite(led,LOW);
}
NombreAppui=0;

}
}

Et aussi pour l'améliorer, est ce que tu pourrais m'expliquer un peu comment ça se passe avec l'EEPROM ?
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3174
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Première étape : charger le mot de passe depuis l'eeprom. Alors petite précision : la première fois que tu vas lancer le programme, forcement jusqu'à maintenant aucun code n'a été saisi, et l'eeprom par défuat est remplie de 0. Chaque adresse de l'eeprom est un byte donc pas de probleme pour un boolean y'a de la place ! On va, pour simplifier, stocker chaque index du mot passe à une adresse différente (0, 1, 2, 3 et 4). Il suffit simplement lors du setup de faire une boucle pour remplir Password[] avec des EEPROM.read().

Deuxième étape : pouvoir enregistrer un nouveau mot de passe. La il faut un élément déclencheur, un autre bouton par exemple. Si j'appuie sur ce bouton, alors je peux enregistré un nouveau mot de passe. Bin la c'est assez simple : il suffit de reprendre le code qu'on a déjà et au lieu de comparer CodeEnCours avec Password lorsqu'il y eu 5 appuis, il suffit d'écrire CodeEnCours dans les adresses 0, 1, 2, 3 et 4, avec EEPROM.write et de charger Password également avec code en cours pour que le nouveau mot de passe soit effectif directement.

A toi de jouer ... Petit truc : tu n'est pas obligé de recopier tout le code une deuxième fois puisqu'il n'y a que lorsque nombreAppui>4 qu'il y aura une différence de le traitement de CodeEnCours smiley-wink Il suffit, lors de l'appui sur le 3eme bouton, de changer l'état d'un boolean (par exemple : "EnregistrementEnCours=1;"). Quand on arrive à la condition nombreAppui>4, si EnregistrementEnCours=1 ==> enregistrement dans l'eeprom, sinon comparaison avec Password.
Logged


Pages: 1 [2]   Go Up
Jump to: