Bonjour à tous,
Je suis actuellement stagiaire dans une start up et mon but est de confectionner une badgeuse afin d'effectuer un suivis simplifié et plus précis sur l'ensemble des activiés des membres. Le but est donc de creer une badgeuse d'entrée et de sortie et d'y gérer la gestion en sorte que les membres de l'atelier peuvent y rentrer 7jr/7 24h/24.
La gestion par badge ainsi que l'utilisation des machines doivent permettre la reservation de créneau horaires, l'acces à l'atelier, la mise en fonctionnement des machines ainsi que la faturation des prestations des comptes des utilisateurs.
Pour le moment j'ai commandé un lecteur RFID 13.56MkHz et je l'ai programmé, ainsi j'arrive à lire mes badges et à la fois à affiché sur un écran lcd si la carte est autorisé ou non mais aussi à allumer des LED rouges et vertes suivant le fontionnement ou non du badge.
A present, il me faut faire en sorte que quand je détecte un badge, un compteur se mets en route et ce jusqu'à ce que cette même carte soit re badger. Sachant que plusieurs autre carte peuvent etre lu entre temps.
Merci pour votre aide
voici le code que j'utilise pour l'instant :
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 7);
SoftwareSerial RFID(2, 3); // RX and TX
int data1 = 0;
int ok = -1;
int yes = 13;
int no = 8;
int m=0;
int test1=0;
int tempo=0;
// use first sketch in http://wp.me/p3LK05-3Gk to get your tag numbers
int tag1[14] = {2,48,68,48,48,53,48,54,51,68,67,69,50,3};
int tag2[14] = {2,49,48,48,48,53,67,66,70,66,48,52,51,3};
int newtag[14] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // used for read comparisons
void setup()
{
RFID.begin(9600); // start serial to RFID reader
Serial.begin(9600); // start serial to PC
pinMode(yes, OUTPUT); // for status LEDs
pinMode(no, OUTPUT);
lcd.begin(16, 2);
lcd.print("Chez la start up!");
}
boolean comparetag(int aa[14], int bb[14])
{
boolean ff = false;
int fg = 0;
for (int cc = 0 ; cc < 14 ; cc++)
{
if (aa[cc] == bb[cc])
{
fg++;
}
}
if (fg == 14)
{
ff = true;
}
return ff;
}
void checkmytags() // compares each tag against the tag just read
{
ok = 0; // this variable helps decision-making,
// if it is 1 we have a match, zero is a read but no match,
// -1 is no read attempt made
if (comparetag(newtag, tag1) == true)
{
ok++;
}
if (comparetag(newtag, tag2) == true)
{
ok++;
}
}
void readTags()
{
ok = -1;
if (RFID.available() > 0)
{
// read tag numbers
delay(100); // needed to allow time for the data to come in from the serial buffer.
for (int z = 0 ; z < 14 ; z++) // read the rest of the tag
{
data1 = RFID.read();
newtag[z] = data1;
}
RFID.flush(); // stops multiple reads
// do the tags match up?
checkmytags();
}
// now do something based on tag type
if (ok > 0) // if we had a match
{
Serial.println("Acces autorise");
digitalWrite(yes, HIGH);
delay(1000);
digitalWrite(yes, LOW);
//affichage de l'acces autorisé
lcd.setCursor(0,0);
lcd.print("Chez la start up! ");
lcd.setCursor(0,1);
lcd.print("Acces autorise");
ok = -1;
}
else if (ok == 0) // if we didn't have a match
{
Serial.println("Acces refuse");
digitalWrite(no, HIGH);
delay(1000);
digitalWrite(no, LOW);
//affichage de l'acces refusé
lcd.setCursor(0,0);
lcd.print("Chez la start up! ");
lcd.setCursor(0,1);
lcd.print("Acces refuse");
ok = -1;
}
}
void affiche()
{
lcd.setCursor(0, 1);
lcd.print(millis() /1000);
}
void loop()
{
readTags();
[size=10pt][/size]
}