Page 1 of 1

Keypad pour configurer un mot de passe?

Posted: Wed Jul 11, 2012 2:35 pm
by tech
Bonjour,

Je voudrais savoir comment je dois procéder sous flowcode 4 pour que je puisse programmer un mot de passe à partir d'un Keypad a 12 chiffre et ensuite entre ce mot passe pour désactiver ou activer??

Merci :?:

Re: Keypad pour configurer un mot de passe?

Posted: Wed Jul 11, 2012 5:01 pm
by Benj
Bonjour,

Ce poste par Medelec35 devrait contribuer à vous aider à démarrer.
http://www.matrixmultimedia.com/mmforum ... 26&t=10565

Hello,

This post by Medelec35 should help to get you started.
http://www.matrixmultimedia.com/mmforum ... 26&t=10565

Re: Keypad pour configurer un mot de passe?

Posted: Wed Jul 11, 2012 5:34 pm
by Enamul
Salut,
J'ai joint ici un FC pour la vérification de mot de passe en utilisant LCD et du clavier en V4.
J'espère que cela aidera.
Enamul

Re: Keypad pour configurer un mot de passe?

Posted: Sat Jul 14, 2012 1:51 pm
by tech
Bonjour Ben,

Dans le poste par Medelec35 le Door Lock v2B 16f883, Serait-il possible d'avoir plus d'informations sur les variables, je voudrais bien comprendre leurs fonctions ??

Merci :?

Christian

Re: Keypad pour configurer un mot de passe?

Posted: Sun Jul 15, 2012 4:58 am
by Spanish_dude
Cela ne doit pas être trop compliqué à faire.

Si tu n'as pas d'expérience avec les keypad essaye ça :
- D'abord, essaye d'afficher le chiffre sur lequel tu appuies.
- Une fois que t'as ça, essaye de faire en sorte que tu puisses entrer un nombre entre 0 et 999 et terminer par # par exemple.

Si tu arrive à faire tout ça, la seul chose qui te reste à faire c'est d'avoir une variable 'mot de passe', une variable 'lire keypad' et de voir avec un if(...) s'ils sont égaux.

-----------

Pour le programme de Medelec, j'ai pas vérifié tout le code. Je te dis se que je pense que les variables font et se que j'ai trouvé en regardant vite fait le code.

- CursorPos_x : pos x du curseur du LCD
- degcal[4] : 'enregistre' le chiffre dont la touche keypad a été appuyé.
- digcount : compte le nombres de touches que l'utilisateur a entré
- key : contient la valuer de la touche keypad appuyé.
- Master_Code : Mot de passe de secours ou mot de passe permettant de changer le Pass_Code (?)
- Pass_Code : Mot de passe (2 bytes long)
- Pass_Code_High_Byte : Octet suppérieur du mot de passe sauvegardé dans l'EEPROM (probablement)
- Pass_Code_Low_Byte : Octet inférieur du mot de passe sauvegardé dans l'EEPROM (probablement)
- place : pas utilisé dans le code
- Result : contient le résultat des 4 chiffres enregistrer dans degcalc[4]
- Seconds : utiliser pour un delay de 5s
- Status : variable statut qui lui permet d'executer son code étape par étape
- Temp1 : Variable temporaire, il vérifie, après un read de l'EEPROM, s'il est égal à 34. Probablement pour vérifier si c'est la première fois que le programme a été lancé ou non. (?)
- Temp2 : Idem temp1 sauf qu'ici la variable vaut 5.
- Wrong_Tries : nombres d'erreurs

Nicolas

Re: Keypad pour configurer un mot de passe?

Posted: Sun Jul 15, 2012 1:05 pm
by tech
Bonjour Nicolas,

Jusqu'à maintenant je suis capable d'afficher le chiffre sur lequel j’appuie de 0 à 9999, mon problème sais que je ne saisis pas très bien la manière que Low_Byte et High_Byte soit calculer et ensuite stocker dans le EEPROM?

Ma compréhension de Low_Byte ce sont les deux premier chiffre et Hight_Byte les deux dernier, mais pour que les deux premier ainsi que les deux autres chiffre sois calculé et stocker dans le EEPROM aucune idée

Merci de ton aide

Christian

Re: Keypad pour configurer un mot de passe?

Posted: Wed Jul 18, 2012 7:23 pm
by Spanish_dude
Salut,

Ton chiffre de 0 à 9999 est stocké dans un int.
Un int utilise 2 bytes de mémoire. L'EEPROM ne pouvant stocker qu'un byte à la fois, il faut que tu 'découpes' l'integer en 2 bytes séparé.
Donc le low_byte et high_byte ne représentent pas les deux premier et dernier chiffres, mais bien la valeur du premier et second byte utilisé par l'integer.

Rien de compliqué :

low_byte = code & 0x00FF;

La variable 'code' contient ton code et pour récupérer le byte inférieur tu le 'and' avec 0x00FF. Le 'and' va "effacer" les 8 bytes supérieur et comme ça il ne te reste plus que le byte inférieur.

high_byte = (code & 0xFF00) >> 8;
high_byte = (code >> 8 ) & 0x00FF;

Pour récupérer le byte supérieur t'as deux solutions quasiment identique.
Soit tu effaces le byte inférieur et tu shift le résultat de 8 places vers la droite, soit tu shift la valeur 'code' de 8 places vers la droite et tu le 'and' avec 0x00FF pour être sur que le résultat a une taille de 1 byte. (perso je préfère le second)

Au cas ou tu ne sais pas comment fonctionne le shift left/right:
0110 >> 1 = 0011
0110 << 1 = 1100

Nicolas