J’ai reçu un module RFID-RC522 13.56Mhz compatible Arduino, comme d’habitude, je n’y vois pas encore d’utilité, mais je suis très curieux donc c’est parti.
#include <SPI.h>
#include <RFID.h>
RFID RFID(10,9);
int UID[5];
void setup()
{
Serial.begin(9600);
SPI.begin();
RFID.init();
}
void loop()
{
if (RFID.isCard()) {
if (RFID.readCardSerial()) {
Serial.print("L'UID est: ");
for(int i=0;i<=4;i++)
{
UID[i]=RFID.serNum[i];
Serial.print(UID[i],DEC);
Serial.print(".");
}
Serial.println("");
}
RFID.halt();
}
delay(100);
}
Controle d'un Servomoteur
Branchement du servo:
vcc -> + 5V Arduino
GND -> GND Arduino
Signal -> Pin ~5 Arduino
Un peu à la manière d'une barrière. On badge, çà s'ouvre, on passe.
Pour la lecture du tag, j'ai commenté les lignes permettant d'afficher l'UID de la carte. Pour mes propres essais je les ai simplement retiré.
#include <SPI.h>
#include <RFID.h>
#include <Servo.h>
RFID RFID(10,9);
int UID[5]={};
int MASTERKEY[5]={1,171,43,97,224}; // UID du badge ou de la carte acceptée sous forme de tableau (Array).
Servo monServo;
bool statut = 1;
void setup()
{
Serial.begin(9600);
SPI.begin();
RFID.init();
monServo.attach(5); // Servo connecté à la pin 9.
}
void loop()
{
if (RFID.isCard()) {
/* Lecture du tag */
if (RFID.readCardSerial())
{
/*Serial.print("L'UID est: ");*/
for(int i=0;i<=4;i++)
{
UID[i]=RFID.serNum[i];
/* Serial.print(UID[i],DEC);
Serial.print(".");*/
}
/*Serial.println("");*/
}
/* fin de Lecture du tag */
if (UID[0] == MASTERKEY[0] // Si l'UID 0 est égale à 1
&& UID[1] == MASTERKEY[1] // Et si l'UID 1 est égale à 171
&& UID[2] == MASTERKEY[2] // Et si l'UID 2 est égale à 43
&& UID[3] == MASTERKEY[3] // Et si l'UID 3 est égale à 97
&& UID[4] == MASTERKEY[4]) // Et si l'UID 4 est égale à 224
{
ouverture();
}
else
{
fermeture();
}
RFID.halt();
}
delay(100);
}
void ouverture()
{
monServo.write(125); // On ouvre le portail fermé.
}
void fermeture()
{
monServo.write(35); // On ouvre le portail fermé.
}
/* inspiré de: http://www.les-electroniciens.com/ */
Hello, ne devrait-on pas changer les && par des || pour la partie:
if (UID[0] == MASTERKEY[0] // Si l’UID 0 est égale à 1
&& UID[1] == MASTERKEY[1] // Et si l’UID 1 est égale à 171
&& UID[2] == MASTERKEY[2] // Et si l’UID 1 est égale à 43
&& UID[3] == MASTERKEY[3] // Et si l’UID 1 est égale à 97
&& UID[4] == MASTERKEY[4]) // Et si l’UID 1 est égale à 224
Car là c’est impossible qu’un badge soit égal à la fois à 171 et à 43 en même temps par exemple.
On analyse le tableau ici. Si tu remarque on check l’UID[0], ensuite le [1],… jusqu’au UID[4]. L’erreur ne se trouve que dans le commentaire du code ^^ j’ai copié-collé trop vite ^^
Jeff
Hello, ne devrait-on pas changer les && par des || pour la partie:
if (UID[0] == MASTERKEY[0] // Si l’UID 0 est égale à 1
&& UID[1] == MASTERKEY[1] // Et si l’UID 1 est égale à 171
&& UID[2] == MASTERKEY[2] // Et si l’UID 1 est égale à 43
&& UID[3] == MASTERKEY[3] // Et si l’UID 1 est égale à 97
&& UID[4] == MASTERKEY[4]) // Et si l’UID 1 est égale à 224
Car là c’est impossible qu’un badge soit égal à la fois à 171 et à 43 en même temps par exemple.
leroyd
On analyse le tableau ici. Si tu remarque on check l’UID[0], ensuite le [1],… jusqu’au UID[4]. L’erreur ne se trouve que dans le commentaire du code ^^ j’ai copié-collé trop vite ^^
Mais je corrige 🙂
Bien à toi,
Lee
Antonin
Salut !
Je suis débutant et je voudrais savoir comment on installe la librairie .rar (idehack.com/dl/rfid_lib.rar).
Merci !
Antonin
Ah bah non j’ai trouvé 🙂
leroyd
Oh bhen tu m’as même pas laissé le temps de répondre… 🙂
😉