Je ne me suis pas encore penché sur les détails mais pour le RFID je me suis aidé d'un autre programme que j'ai écrit qui est pour un système d'ouverture de porte RFID sans digicode :
#define BADGE_PORT_PLAISANCE " C8 45 EB 61"
#define BADGE_BLEU " A9 B2 BB B9" //badge bleu
#define BADGE_NFC "0 4 5B A5 BA 2D 59 81" //tag NFC
#define BADGE_ROUGE " F1 49 2F 3D"
#define JEAN " 2A F4 2E 3D"
#define CPE " A6 40 2F 3D"
#define ERIC_CAMENEN "0 3 42 2F 3D"
#define LEBODIC " 1F 74 2E 3D"
#define DIRECTEUR " D6 FE 2E 3D"
#define DE_CRUZ " 41 4A 2F 3D"
#define DANO " D5 46 2F 3D"
#define EWEN " EE 1A 2F 3D"
/*
Branchements :
led verte en 7
led rouge en 6
servo en 4
bouton en 3
buzzer en 8
module RFID /
SDA en 53
SCK en 52
MOSI en 51
MISO en 50
RQ en rien
GND en GND
RST en 5
3.3V en 3.3V
*/
// CONNECTIONS:
// DS1302 CLK/SCLK --> 32
// DS1302 DAT/IO --> 33
// DS1302 RST/CE --> 34
// DS1302 VCC --> 3.3v - 5v
// DS1302 GND --> GND
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <IRremote.h>
#include <LiquidCrystal.h>
#include <ThreeWire.h>
#include <RtcDS1302.h>
// Indicates the pins
#define SS_PIN 53
#define RST_PIN 37
// pour définir la valeur des ouvertures
#define ouvert 0
#define ferme 80
#define tempsdarret 75
Servo monServomoteur;
// Indicates to which pin the LED is connected
const int ledpin1 = 45; //rouge
const int ledpin2 = 39; //verte
const int ledpin3 = 26; //rouge intérieur
const int ledpin4 = 29; //verte intérieur
const int buzzer = 8;
int bouton = 3;
int etatbouton = 0;
int bouton2 = 30;
int etatbouton2 = 0;
int bouton3 = 9;
int etatbouton3 = 0;
int RECV_PIN = 10;
long CODE_IR_9 = 0xFF906F;
long CODE_IR_0 = 0xFF9867;
long CODE_IR_1 = 0xFFA25D;
long CODE_IR1_9 = 0xBFEC0EB0;
word BTDATA;//Donne le nom BTDATA à la donnée reçue sur le Bluetooth
IRrecv irrecv(RECV_PIN);
decode_results results;
//icone de cadenas fermé
byte Lock[8] = {
0b01110,
0b10001,
0b10001,
0b11111,
0b11011,
0b11011,
0b11111,
};
//icone de cadenas ouvert
byte Unlock[8] = {
0b01110,
0b10000,
0b10000,
0b11111,
0b11011,
0b11011,
0b11111,
};
// Creates own veriable for card reader
MFRC522 myReader (SS_PIN, RST_PIN);
LiquidCrystal lcd(10, 2, 11, 5, 6, 7); // Crée un objet LC. Paramètres : (rs, enable, d4, d5, d6, d7)
boolean systemeEnMaintenance = false;
boolean boutonFermeturePorte = false;
boolean iconeCadenas = false;
ThreeWire myWire(33,32,34); // IO, SCLK, CE
RtcDS1302<ThreeWire> Rtc(myWire);
void setup ()
{
// définit la broche 36 pour le servo moteur "monServomoteur"
monServomoteur.attach(36);
Ferme();
lcd.setCursor(0, 0);
irrecv.enableIRIn();
lcd.begin(16, 2);
// définit la pin du buzzer en sortie
pinMode (buzzer, OUTPUT);
// Démarrage du moniteur série
Serial.begin (9600);
Serial1.begin(9600);//HC06 en pin 18-19 RX sur TX1 et TX sur RX1
// Démarrage de la librairie SPI
SPI.begin ();
// Up to version 1.4.5 this call
myReader.PCD_Init ();
// Écrire dans le moniteur série : “Presentez votre badge d'accès”
Serial.println ("Presentez votre badge d'accès");
Serial.println ();
// définit les broches ledpin1, ledpin2, ledpin3, ledpin4, 22, 23 et 24 comme étant des sorties et les broches bouton, bouton2, bouton3 et 25 comme étant des entrées
pinMode (ledpin1, OUTPUT);
pinMode (ledpin2, OUTPUT);
pinMode (ledpin3, OUTPUT);
pinMode (ledpin4, OUTPUT);
pinMode(bouton, INPUT);
pinMode(bouton2, INPUT);
pinMode(bouton3, INPUT);
pinMode(22, OUTPUT);
pinMode(23, OUTPUT);
pinMode(24, OUTPUT);
pinMode(25, INPUT);
// creation d'un nouveau dessin personnalisé
lcd.createChar(1, Lock);
// creation d'un nouveau dessin personnalisé
lcd.createChar(2, Unlock);
if (iconeCadenas) {
lcd.setCursor(0, 1);
lcd.write(2);
lcd.setCursor(15, 1);
lcd.write(2);
digitalWrite(ledpin3, LOW);
digitalWrite(ledpin4, HIGH);
}
else {
lcd.setCursor(0, 1);
lcd.write(1);
lcd.setCursor(15, 1);
lcd.write(1);
digitalWrite(ledpin3, HIGH);
digitalWrite(ledpin4, LOW);
}
Rtc.Begin();
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
printDateTime(compiled);
Serial.println();
if (!Rtc.IsDateTimeValid())
{
// Common Causes:
// 1) first time you ran and the device wasn't running yet
// 2) the battery on the device is low or even missing
Serial.println("RTC lost confidence in the DateTime!");
Rtc.SetDateTime(compiled);
}
if (Rtc.GetIsWriteProtected())
{
Serial.println("RTC was write protected, enabling writing now");
Rtc.SetIsWriteProtected(false);
}
if (!Rtc.GetIsRunning())
{
Serial.println("RTC was not actively running, starting now");
Rtc.SetIsRunning(true);
}
RtcDateTime now = Rtc.GetDateTime();
if (now < compiled)
{
Serial.println("RTC is older than compile time! (Updating DateTime)");
Rtc.SetDateTime(compiled);
}
else if (now > compiled)
{
Serial.println("RTC is newer than compile time. (this is expected)");
}
else if (now == compiled)
{
Serial.println("RTC is the same as compile time! (not expected but all is fine)");
}
debut();
}
void loop () {
RtcDateTime now = Rtc.GetDateTime();
printDateTime(now);
Serial.println();
if (!now.IsValid())
{
// Common Causes:
// 1) the battery on the device is low or even missing and the power line was disconnected
Serial.println("RTC lost confidence in the DateTime!");
}
delay(5000);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
digitalWrite(24, HIGH);
if (!systemeEnMaintenance) { // Si système pas en maintenance
lcd.clear();
lcd.setCursor(0, 0);
lcd.write("PRESENTEZ BADGE");
lcd.setCursor(4, 1);
lcd.print("D'ACCES");
if (iconeCadenas) {
lcd.setCursor(0, 1);
lcd.write(2);
lcd.setCursor(15, 1);
lcd.write(2);
digitalWrite(ledpin3, LOW);
digitalWrite(ledpin4, HIGH);
}
else {
lcd.setCursor(0, 1);
lcd.write(1);
lcd.setCursor(15, 1);
lcd.write(1);
digitalWrite(ledpin3, HIGH);
digitalWrite(ledpin4, LOW);
}
}
if (Serial.available()) {
char c = Serial.read();
Serial.println("Valeur entrée:");
Serial.println(c);
if (c == '8') { // si 8 est tapé dans le moniteur série, la porte s'ouvre
Ouvert();
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
tone (buzzer, 1000);
delay (1000);
// stop, sound
noTone(buzzer);
delay(800);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
if (c == '3') { // si 3 est tapé dans le moniteur série, la porte s'ouvre
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
Ferme();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
tone (buzzer, 500);
delay (1000);
// stop, sound
noTone(buzzer);
delay(3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = false;
}
if (c == 'r') { // si r est tapé dans le moniteur série, le système se réinitialise
Serial.println ("REINITIALISATION");
tone (buzzer, 1000);
lcd.clear();
delay(500);
noTone(buzzer);
}
if (c == 'm') { // si m est tapé dans le moniteur série, le système se met en maintenance
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("SERVICE EN");
lcd.setCursor(3, 1);
lcd.print("MAINTENANCE");
Serial.println("MAINTENANCE");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
//delay(200000000);
systemeEnMaintenance = true;
}
if (c == 's') { // si s est tapé dans le moniteur série, le système sort de maintenance
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("FIN DE LA");
lcd.setCursor(3, 1);
lcd.print("MAINTENANCE");
Serial.println("MAINTENANCE OFF");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
systemeEnMaintenance = false;
}
}
if (Serial1.available()) {
BTDATA = Serial1.read();
}
if (Serial.available())
Serial1.write(Serial.read());
//********************************************
if (!systemeEnMaintenance) { // Si système pas en maintenance
if (BTDATA == 'O') { //Si on reçoit un O, on ouvre la porte
Ouvert();
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
tone (buzzer, 1000);
delay (1000);
// stop, sound
noTone(buzzer);
delay(800);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = true;
}
if (BTDATA == 'F') { //Si on reçoit un F, on ferme la porte
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
Ferme();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
tone (buzzer, 500);
delay (1000);
// stop, sound
noTone(buzzer);
delay(3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = false;
}
if (BTDATA == 'o') { //Si on reçoit un O, on ouvre la porte
//LE BODIC
Ouvert();
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR LE BODIC");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR LE BODIC");
tone (buzzer, 1000);
delay (1000);
// stop, sound
noTone(buzzer);
delay(800);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = true;
}
if (BTDATA == 'f') { //Si on reçoit un F, on ferme la porte
//LE BODIC
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
Ferme();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR LE BODIC");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR LE BODIC");
tone (buzzer, 500);
delay (1000);
// stop, sound
noTone(buzzer);
delay(3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = false;
}
if (BTDATA == 'd') { //Si on reçoit un O, on ouvre la porte
//Réparateur
Ouvert();
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR DE CRUZ");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR DE CRUZ");
tone (buzzer, 1000);
delay (1000);
// stop, sound
noTone(buzzer);
delay(800);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = true;
}
if (BTDATA == 'e') { //Si on reçoit un F, on ferme la porte
//Réparateur
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
Ferme();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR DE CRUZ");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR DE CRUZ");
tone (buzzer, 500);
delay (1000);
// stop, sound
noTone(buzzer);
delay(3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = false;
}
if (BTDATA == 'p') { //Si on reçoit un O, on ouvre la porte
//Camenen
Ouvert();
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR CAMENEN");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR CAMENEN");
tone (buzzer, 1000);
delay (1000);
// stop, sound
noTone(buzzer);
delay(800);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = true;
}
if (BTDATA == 'q') { //Si on reçoit un F, on ferme la porte
//Camenen
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
Ferme();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR CAMENEN");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR CAMENEN");
tone (buzzer, 500);
delay (1000);
// stop, sound
noTone(buzzer);
delay(3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = false;
}
if (BTDATA == 'b') { //Si on reçoit un O, on ouvre la porte
//Ewen
Ouvert();
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : EWEN LE PRIOL");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("EWEN LE PRIOL");
tone (buzzer, 1000);
delay (1000);
// stop, sound
noTone(buzzer);
delay(800);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = true;
}
if (BTDATA == 'c') { //Si on reçoit un F, on ferme la porte
//Ewen
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
Ferme();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : EWEN LE PRIOL");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR CAMENEN");
tone (buzzer, 500);
delay (1000);
// stop, sound
noTone(buzzer);
delay(3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = false;
}
if (BTDATA == 'h') { //Si on reçoit un O, on ouvre la porte
//CPE
Ouvert();
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR LE BAGOUSSE");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR LE BAGOUSSE");
tone (buzzer, 1000);
delay (1000);
// stop, sound
noTone(buzzer);
delay(800);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = true;
}
if (BTDATA == 'i') { //Si on reçoit un F, on ferme la porte
//CPE
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
Ferme();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR LE BAGOUSSE");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR LE BAGOUSSE");
tone (buzzer, 500);
delay (1000);
// stop, sound
noTone(buzzer);
delay(3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = false;
}
if (BTDATA == 'j') { //Si on reçoit un O, on ouvre la porte
//DIRECTEUR
Ouvert();
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR LE PICARD");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR LE PICARD");
tone (buzzer, 1000);
delay (1000);
// stop, sound
noTone(buzzer);
delay(800);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = true;
}
if (BTDATA == 'k') { //Si on reçoit un F, on ferme la porte
//DIRECTEUR
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
Ferme();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR LE PICARD");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR LE PICARD");
tone (buzzer, 500);
delay (1000);
// stop, sound
noTone(buzzer);
delay(3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = false;
}
if (BTDATA == 'l') { //Si on reçoit un O, on ouvre la porte
//DANO
Ouvert();
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR DANO");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR DANO");
tone (buzzer, 1000);
delay (1000);
// stop, sound
noTone(buzzer);
delay(800);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = true;
}
if (BTDATA == 'n') { //Si on reçoit un F, on ferme la porte
//DANO
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
Ferme();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES:");
Serial.print ("AUTORISE : MR DANO");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR DANO");
tone (buzzer, 500);
delay (1000);
// stop, sound
noTone(buzzer);
delay(3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
BTDATA = 0;
boutonFermeturePorte = false;
}
}
if (BTDATA == 'M') { //Si on reçoit un M, on active la maintenance
Ouvert();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("SERVICE EN");
lcd.setCursor(3, 1);
lcd.print("MAINTENANCE");
Serial.println("MAINTENANCE");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
//delay(200000000);
systemeEnMaintenance = true;
BTDATA = 0;
}
if (BTDATA == 'S') { //Si on reçoit un S, on arrête la maintenance
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("FIN DE LA");
lcd.setCursor(3, 1);
lcd.print("MAINTENANCE");
Serial.println("MAINTENANCE OFF");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
systemeEnMaintenance = false;
BTDATA = 0;
}
if (BTDATA == 'm') { //Si on reçoit un M, on active la maintenance
//LE BODIC
Ouvert();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("SERVICE EN");
lcd.setCursor(3, 1);
lcd.print("MAINTENANCE");
Serial.println("MAINTENANCE");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
//delay(200000000);
systemeEnMaintenance = true;
BTDATA = 0;
}
if (BTDATA == 'a') { //Si on reçoit un S, on arrête la maintenance
//LE BODIC
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("FIN DE LA");
lcd.setCursor(3, 1);
lcd.print("MAINTENANCE");
Serial.println("MAINTENANCE OFF");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
systemeEnMaintenance = false;
BTDATA = 0;
}
if (BTDATA == 'r') { //Si on reçoit un M, on active la maintenance
//Réparateur
Ouvert();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("SERVICE EN");
lcd.setCursor(3, 1);
lcd.print("MAINTENANCE");
Serial.println("MAINTENANCE");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
//delay(200000000);
systemeEnMaintenance = true;
BTDATA = 0;
}
if (BTDATA == 'g') { //Si on reçoit un S, on arrête la maintenance
//Réparateur
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("FIN DE LA");
lcd.setCursor(3, 1);
lcd.print("MAINTENANCE");
Serial.println("MAINTENANCE OFF");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
systemeEnMaintenance = false;
BTDATA = 0;
}
if (BTDATA == 'v') { //Si on reçoit un M, on active la maintenance
//Camenen
Ouvert();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("SERVICE EN");
lcd.setCursor(3, 1);
lcd.print("MAINTENANCE");
Serial.println("MAINTENANCE");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
//delay(200000000);
systemeEnMaintenance = true;
BTDATA = 0;
}
if (BTDATA == 't') { //Si on reçoit un S, on arrête la maintenance
//Camenen
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("FIN DE LA");
lcd.setCursor(3, 1);
lcd.print("MAINTENANCE");
Serial.println("MAINTENANCE OFF");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
systemeEnMaintenance = false;
BTDATA = 0;
}
if (BTDATA == 'V') { //Si on reçoit un V, on active le verrouillage du système
Ferme();
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("SYSTEME ");
lcd.setCursor(3, 1);
lcd.print("VERROUILLE");
Serial.println("SYSTEME VERROUILLE");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
//delay(200000000);
systemeEnMaintenance = true;
BTDATA = 0;
}
if (BTDATA == 's') { //Si on reçoit un s, on arrête le verrouillage du système
Ouvert();
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("SYSTEME");
lcd.setCursor(2, 1);
lcd.print("DEVERROUILLE");
Serial.println("SYSTEME DEVERROUILLE");
tone (buzzer, 500);
delay(1000);
noTone(buzzer);
systemeEnMaintenance = false;
BTDATA = 0;
}
if (!systemeEnMaintenance) { // Si système pas en maintenance
//if (irrecv.decode(&results))
//{
// Serial.println(results.value,HEX);
// irrecv.resume();
//}
//if (results.value == CODE_IR_9)
//{
// Ouvert();
//}
//if (results.value == CODE_IR_0)
//{
// Ferme();
//}
etatbouton = digitalRead (bouton);
if (etatbouton == HIGH) {
Serial.println("FERMETURE EN COURS");
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("FERMETURE");
lcd.setCursor(3, 1);
lcd.print("EN COURS");
delay(1000);
Ferme();
tone (buzzer, 500);
// wait 1 second
delay (1000);
// stops sound
noTone(buzzer);
delay(250);
Serial.println("FERMETURE TERMINEE");
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("FERMETURE");
lcd.setCursor(3, 1);
lcd.print("TERMINEE");
delay(2000);
lcd.clear();
boutonFermeturePorte = false;
}
etatbouton2 = digitalRead (bouton2);
if (etatbouton2 == HIGH) {
Serial.println("OUVERTURE EN COURS");
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("OUVERTURE");
lcd.setCursor(3, 1);
lcd.print("EN COURS");
delay(1000);
Ouvert();
tone (buzzer, 1000);
// wait 1 second
delay (1000);
// stops sound
noTone(buzzer);
delay(250);
Serial.println("OUVERTURE TERMINEE");
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("OUVERTURE");
lcd.setCursor(3, 1);
lcd.print("TERMINEE");
delay(2000);
lcd.clear();
boutonFermeturePorte = true;
}
etatbouton3 = digitalRead (bouton3);
if (boutonFermeturePorte) {
if (etatbouton3 == LOW) {
delay(100);
if (etatbouton3 == HIGH) {
delay(8000);
if (etatbouton3 == HIGH) {
Serial.println("FERMETURE EN COURS");
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("FERMETURE");
lcd.setCursor(3, 1);
lcd.print("EN COURS");
delay(1000);
Ferme();
tone (buzzer, 500);
// wait 1 second
delay (1000);
// stops sound
noTone(buzzer);
delay(250);
Serial.println("FERMETURE TERMINEE");
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("FERMETURE");
lcd.setCursor(3, 1);
lcd.print("TERMINEE");
delay(2000);
lcd.clear();
boutonFermeturePorte = false;
}
}
}
}
// see if no new maps are detected
digitalWrite (ledpin1, LOW);
if (! myReader.PICC_IsNewCardPresent ())
{
// not found, stops searching
return;
}
// Checks whether the key tag can be read
if (! myReader.PICC_ReadCardSerial ())
{
// failed to read
return;
}
// Show UID on serial monitor
String key = "";
for (byte i = 0; i < myReader.uid.size; i ++)
{
key.concat (String (myReader.uid.uidByte [i] < 0x10 ? "0 " : " "));
key.concat (String (myReader.uid.uidByte [i], HEX));
}
// Uppercase code of found key for better comparison
key.toUpperCase ();
// Print to monitor so you know which key is being read
Serial.println ();
Serial.print ("Badge d'accès :");
Serial.print (key);
// Grants access if key “..” is the same
// Each key tag has its own code, read your code via monitor
Serial.println ();
Serial.print ("ACCES: ");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES: ");
if (key == BADGE_PORT_PLAISANCE)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Determines the frequency of the buzzer
tone (buzzer, 1000);
delay (1000);
// stop, sound
noTone(buzzer);
Ouvert();
// Print on monitor
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
delay (3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == BADGE_BLEU)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
delay (3000);
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == BADGE_NFC)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == BADGE_ROUGE)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
RtcDateTime now = Rtc.GetDateTime();
printDateTime(now);
Serial.print ("AUTORISE : MALO LENORMAND Identifiant badge : F1 49 2F 3D");
// pour sd
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == JEAN)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
Serial.print ("AUTORISE : JEAN KERMORVANT");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("JEAN KERMORVANT");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == CPE)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
Serial.print ("AUTORISE : CPE");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR LE BAGOUSSE");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == ERIC_CAMENEN)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
Serial.print ("AUTORISE : ERIC CAMENEN");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR CAMENEN");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == LEBODIC)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
Serial.print ("AUTORISE : STEPHANE LE BODIC");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR LE BODIC");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == DIRECTEUR)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
Serial.print ("AUTORISE : MR LE PICARD");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR LE PICARD");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == DE_CRUZ)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
Serial.print ("AUTORISE : TECHNICIEN");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR DE CRUZ");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == DANO)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
Serial.print ("AUTORISE : MR DANO");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR DANO");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else if (key == EWEN)
{
// LED rouge off, LED verte on
digitalWrite (ledpin1, LOW);
digitalWrite (ledpin2, HIGH);
// Déterminer la fréquence du buzzer
tone (buzzer, 1000);
delay (1000);
// Stoper le son
noTone(buzzer);
Ouvert();
// Écrire sur le moniteur
Serial.print ("AUTORISE : EWEN LE PRIOL");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("EWEN LE PRIOL");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
boutonFermeturePorte = true;
}
else {
// Red LED on, green off
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
// Determines the frequency of the buzzer
tone (buzzer, 500);
// wait 1 second
delay (1000);
// stops sound
noTone(buzzer);
// Print on monitor
Serial.print ("REFUSE");
lcd.setCursor(7, 0);
lcd.print("REFUSE");
lcd.setCursor(0, 1);
lcd.print(key);
delay (3000);
}
Serial.println ();
//etatbouton2 = digitalRead (bouton2);
// if (etatbouton2==HIGH) {
// Serial.println("lecture en cours...");
// #define BADGE key
// }
}
}
void Ouvert() {
monServomoteur.write(ouvert); // voir #define en haut
iconeCadenas = true;
}
void Ferme() {
monServomoteur.write(ferme); // voir #define en haut
iconeCadenas = false;
}
void debut() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("A");
delay(400);
lcd.clear();
delay(400);
lcd.setCursor(0, 0);
lcd.print("A");
delay(400);
lcd.clear();
delay(500);
lcd.setCursor(0, 0);
lcd.print("A");
delay(tempsdarret);
lcd.setCursor(1, 0);
lcd.print("R");
delay(tempsdarret);
lcd.setCursor(2, 0);
lcd.print("D");
delay(tempsdarret);
lcd.setCursor(3, 0);
lcd.print("U");
delay(tempsdarret);
lcd.setCursor(4, 0);
lcd.print("I");
delay(tempsdarret);
lcd.setCursor(5, 0);
lcd.print("N");
delay(tempsdarret);
lcd.setCursor(6, 0);
lcd.print("O");
delay(tempsdarret);
lcd.setCursor(8, 0);
lcd.print("S");
delay(tempsdarret);
lcd.setCursor(9, 0);
lcd.print("E");
delay(tempsdarret);
lcd.setCursor(10, 0);
lcd.print("C");
delay(tempsdarret);
lcd.setCursor(11, 0);
lcd.print("U");
delay(tempsdarret);
lcd.setCursor(12, 0);
lcd.print("R");
delay(tempsdarret);
lcd.setCursor(13, 0);
lcd.print("I");
delay(tempsdarret);
lcd.setCursor(14, 0);
lcd.print("T");
delay(tempsdarret);
lcd.setCursor(15, 0);
lcd.print("Y");
delay(tempsdarret);
lcd.setCursor(0, 1);
lcd.print("C");
delay(tempsdarret);
lcd.setCursor(1, 1);
lcd.print("O");
delay(tempsdarret);
lcd.setCursor(2, 1);
lcd.print("R");
delay(tempsdarret);
lcd.setCursor(3, 1);
lcd.print("P");
delay(tempsdarret);
lcd.setCursor(4, 1);
lcd.print("O");
delay(tempsdarret);
lcd.setCursor(5, 1);
lcd.print("R");
delay(tempsdarret);
lcd.setCursor(6, 1);
lcd.print("A");
delay(tempsdarret);
lcd.setCursor(7, 1);
lcd.print("T");
delay(tempsdarret);
lcd.setCursor(8, 1);
lcd.print("I");
delay(tempsdarret);
lcd.setCursor(9, 1);
lcd.print("O");
delay(tempsdarret);
lcd.setCursor(10, 1);
lcd.print("N");
delay(tempsdarret);
lcd.setCursor(12, 1);
lcd.print("V");
delay(tempsdarret);
lcd.setCursor(13, 1);
lcd.print("1");
delay(tempsdarret);
lcd.setCursor(14, 1);
lcd.print(".");
delay(tempsdarret);
lcd.setCursor(15, 1);
lcd.print("0");
delay(1000);
tone(buzzer, 1000);
delay(250);
noTone(buzzer);
delay(250);
tone(buzzer, 1000);
delay(250);
noTone(buzzer);
delay(250);
tone(buzzer, 1000);
delay(250);
noTone(buzzer);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("L");
delay(400);
lcd.clear();
delay(400);
lcd.setCursor(2, 0);
lcd.print("L");
delay(400);
lcd.clear();
delay(500);
lcd.setCursor(2, 0);
lcd.print("L");
delay(tempsdarret);
lcd.setCursor(3, 0);
lcd.print("A");
delay(tempsdarret);
lcd.setCursor(4, 0);
lcd.print("N");
delay(tempsdarret);
lcd.setCursor(5, 0);
lcd.print("C");
delay(tempsdarret);
lcd.setCursor(6, 0);
lcd.print("E");
delay(tempsdarret);
lcd.setCursor(7, 0);
lcd.print("M");
delay(tempsdarret);
lcd.setCursor(8, 0);
lcd.print("E");
delay(tempsdarret);
lcd.setCursor(9, 0);
lcd.print("N");
delay(tempsdarret);
lcd.setCursor(10, 0);
lcd.print("T");
delay(tempsdarret);
lcd.setCursor(12, 0);
lcd.print("D");
delay(tempsdarret);
lcd.setCursor(13, 0);
lcd.print("E");
lcd.setCursor(0, 1);
lcd.print("R");
delay(tempsdarret);
lcd.setCursor(1, 1);
lcd.print("F");
delay(tempsdarret);
lcd.setCursor(2, 1);
lcd.print("I");
delay(tempsdarret);
lcd.setCursor(3, 1);
lcd.print("D");
delay(tempsdarret);
lcd.setCursor(5, 1);
lcd.print("S");
delay(tempsdarret);
lcd.setCursor(6, 1);
lcd.print("E");
delay(tempsdarret);
lcd.setCursor(7, 1);
lcd.print("C");
delay(tempsdarret);
lcd.setCursor(8, 1);
lcd.print("U");
delay(tempsdarret);
lcd.setCursor(9, 1);
lcd.print("R");
delay(tempsdarret);
lcd.setCursor(10, 1);
lcd.print("I");
delay(tempsdarret);
lcd.setCursor(11, 1);
lcd.print("T");
delay(tempsdarret);
lcd.setCursor(12, 1);
lcd.print("Y");
delay(400);
lcd.setCursor(13, 1);
lcd.print(".");
delay(400);
lcd.setCursor(14, 1);
lcd.print(".");
delay(400);
lcd.setCursor(15, 1);
lcd.print(".");
delay(400);
lcd.setCursor(13, 1);
lcd.print(" ");
lcd.setCursor(14, 1);
lcd.print(" ");
lcd.setCursor(15, 1);
lcd.print(" ");
delay(400);
lcd.setCursor(13, 1);
lcd.print(".");
delay(400);
lcd.setCursor(14, 1);
lcd.print(".");
delay(400);
lcd.setCursor(15, 1);
lcd.print(".");
delay(400);
lcd.setCursor(13, 1);
lcd.print(" ");
lcd.setCursor(14, 1);
lcd.print(" ");
lcd.setCursor(15, 1);
lcd.print(" ");
delay(400);
lcd.setCursor(13, 1);
lcd.print(".");
delay(400);
lcd.setCursor(14, 1);
lcd.print(".");
delay(400);
lcd.setCursor(15, 1);
lcd.print(".");
delay(400);
lcd.setCursor(13, 1);
lcd.print(" ");
lcd.setCursor(14, 1);
lcd.print(" ");
lcd.setCursor(15, 1);
lcd.print(" ");
lcd.clear();
delay(1000);
}
#define countof(a) (sizeof(a) / sizeof(a[0]))
void printDateTime(const RtcDateTime& dt)
{
char datestring[20];
char dateonly[20];
snprintf_P(datestring,
countof(datestring),
PSTR("%02u/%02u"),
dt.Day(),
dt.Month());
//dt.Year(),
//dt.Hour(),
//dt.Minute());
//dt.Second() );
Serial.print(datestring);
snprintf_P(dateonly,
countof(dateonly),
PSTR("%02u:%02u"),
//dt.Month(),
//dt.Day(),
//dt.Year());
dt.Hour(),
dt.Minute());
//dt.Second() );
Serial.print(datestring);
Serial.print(" ");
Serial.print(dateonly);
Serial.print(" ");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(datestring);
}
Et merci !