tristanlcf a écrit :tiens voila le code
alors pour le RFID et la MASTERKEY sa marche avec un badge ok
mais je sais pas comment rajouté une 2eme cle
tiens pas compte des led ni du 2 eme relais
merci
Code : Tout sélectionner
//definir les librairie
#include <SPI.h>
#include <RFID.h>
C'est là dedans que sont définies toutes les fonctions spécifiques à la rfid et la gestion du protocole spi.
Code : Tout sélectionner
//code system
RFID monModuleRFID(10,9);
//definir les variable
[color="#008000"] int UID[5]={};
int MASTERKEY[5]={192,56,115,163,40};[/color]
Code : Tout sélectionner
void setup() {
Serial.begin(9600); //code pour la consol
SPI.begin();//code system
monModuleRFID.init();//code system
Code : Tout sélectionner
void loop(){
detection_RFID(); //lance le void de detection
plus_de_3s(); //lance le void de calcul de plus de 3s
if(contact_activer == true){ //variable si le contact est activer
}
else{
}
contact_activer = retar_contact_activer; //sincronise le contact avec le retardateur
}
void plus_de_3s(){
if (detect_cart_3s == true && dernier_detect_cart_3s == false){ //détection du badge
debut_de_detection = millis(); //initialisation du compteur
variable_de_debut_de_detection = true; //enregistrement du changement du badge
}
if ( variable_de_debut_de_detection == true && detect_cart_3s == true && dernier_detect_cart_3s == true){ //le badge etait toujours detecter
if ((millis() - debut_de_detection) >= temps_defini){ //calcule du temps ecouler
retar_contact_activer = false; //si plus de 3s alors le retar est = a false
delay(50); //on laise a delai de 50ms
}
}
dernier_detect_cart_3s = detect_cart_3s; //on change la variable pour le renouvellement de la boucle
}
C'est nécessaire. Mais là n'est pas ta question.
Code : Tout sélectionner
//void de detection du RFID
void detection_RFID(){
if (monModuleRFID.isCard()) {
if (monModuleRFID.readCardSerial()) {
for(int i=0;i<=4;i++)
{
UID[i]=monModuleRFID.serNum[i];
}
}
[color="#008000"] if (UID[0] == MASTERKEY[0]
&& UID[1] == MASTERKEY[1]
&& UID[2] == MASTERKEY[2]
&& UID[3] == MASTERKEY[3]
&& UID[4] == MASTERKEY[4])[/color]
Ce qui est lu UID[] est comparé à ce qui a été stocké MASTERKEY[i allant de 0 à 4].
Tous les UID doient être égaux aux MASTERKEY (&& c'est un ET logique).
Donc si tu veux un deuxième tag, il faut :
- agir ici, style :
il te faut un IUD à comparer avec MASTERKEY1 (tag 1) OU avec MASTERKEY2 (tag 2)
if (
(UID[0] == MASTERKEY1[0]
&& UID[1] == MASTERKEY1[1]
&& UID[2] == MASTERKEY1[2]
&& UID[3] == MASTERKEY1[3]
&& UID[4] == MASTERKEY1[4])
|| //OU logique
(UID[0] == MASTERKEY1[0]
&& UID[1] == MASTERKEY2[1]
&& UID[2] == MASTERKEY2[2]
&& UID[3] == MASTERKEY2[3]
&& UID[4] == MASTERKEY2[4])
)
- donc agir tout au début en définissant MASTERKEY1 et MASTERKEY2
Code : Tout sélectionner
{
retar_contact_activer = true; //si il detecte le bon alors on mais le retard = a true
detect_cart_3s = true; //si il detecte le bon alors on lance le detect cart
}
else
{
//si il detect le mauvais alor rien ne se passe
}
monModuleRFID.halt();
}
else{
detect_cart_3s = false; //si il n'en detecte pas alor on ne lance pas ou anule la detection pour le compteur
}
}