Bonjour,
je travaille actuellement sur un système d'ouverture de porte par RFID et j'aimerais enregistrer les entrées des différents badges. Petit problème : j'ai vu que le lecteur micro SD est censé se brancher sur le SPI (50,51,52,53) sauf que ces broches sont déjà prises par le lecteur RFID. Que puis-je faire ?
Voici mon code au cas où :
#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 37
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 <IRremote.h>
#include <LiquidCrystal.h>
#include "LiquidCrystal_I2C.h"
#include "Wire.h"
#include "iarduino_RTC.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
#define ElectroAimant 4
// 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
LiquidCrystal_I2C lcd(0x27, 16, 2); // définit le type d'écran lcd 16 x 2
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;
iarduino_RTC time (RTC_DS1302, 7, 5, 6); // pour module DS1302
void setup ()
{
Ferme();
lcd.setCursor(0, 0);
irrecv.enableIRIn();
//lcd.begin(16, 2);
lcd.init(); // initialisation de l'afficheur
lcd.backlight();
time.begin();
// 0 sec, 30 min, 18 hour, 2 date, january, 2022, wed
time.settime(30, 24, 20, 15, 1, 23, 3); // à ne téléverser que la première fois
// s, i, H, d, M, Y, D
// 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(23, OUTPUT);
pinMode(24, INPUT);
pinMode(25, OUTPUT);
pinMode(ElectroAimant, OUTPUT);
// 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);
}
//voir fin
debut();
}
void loop () {
delay(100);
digitalWrite(23, HIGH);
digitalWrite(24, HIGH);
digitalWrite(25, HIGH);
if (!systemeEnMaintenance) { // Si système pas en maintenance
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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
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);
Ouvert();
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);
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");
Ouvert();
lcd.clear();
boutonFermeturePorte = true;
}
etatbouton3 = digitalRead (bouton3);
if (etatbouton3 == HIGH) {
iconeCadenas = 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);
// Print on monitor
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
Ouvert();
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);
// Écrire sur le moniteur
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
Ouvert();
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);
// Écrire sur le moniteur
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
Ouvert();
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);
// Écrire sur le moniteur
Serial.print ("AUTORISE : MALO LENORMAND");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MALO LENORMAND");
Ouvert();
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);
// Écrire sur le moniteur
Serial.print ("AUTORISE : JEAN KERMORVANT");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("JEAN KERMORVANT");
Ouvert();
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);
// Écrire sur le moniteur
Serial.print ("AUTORISE : CPE");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR LE BAGOUSSE");
Ouvert();
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);
// Écrire sur le moniteur
Serial.print ("AUTORISE : ERIC CAMENEN");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR CAMENEN");
Ouvert();
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);
// É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");
Ouvert();
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);
// É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");
Ouvert();
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);
// Écrire sur le moniteur
Serial.print ("AUTORISE : TECHNICIEN");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR DE CRUZ");
Ouvert();
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);
// Écrire sur le moniteur
Serial.print ("AUTORISE : MR DANO");
lcd.setCursor(7, 0);
lcd.print("AUTORISE");
lcd.setCursor(0, 1);
lcd.print("MR DANO");
Ouvert();
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);
// É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");
Ouvert();
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
digitalWrite(ElectroAimant, LOW);
iconeCadenas = true;
delay(5000);
digitalWrite(ElectroAimant, HIGH);
}
void Ferme() {
//monServomoteur.write(ferme); // voir #define en haut
digitalWrite(ElectroAimant, HIGH);
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();
}
Merci par avance pour votre aide.
Cordialement,
Geek56.