Problème bluetooth

Bonjour,
je travaille sur un système d'ouverture de porte RFID et je viens de rajouter une fonctionnalité bluetooth avec application android mais il y a un problème : le système reçoit bien le signal, le système ouvre ou ferme donc la porte, fais sonner le buzzer, allume la led verte ou rouge, affiche un texte sur l'écran lcd mais ensuite le problème c'est que le système n'arrête pas de sonner et d'afficher le texte. Pourriez-vous m'aider à résoudre ce problème ?
Mon code :

#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"

/*
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
*/

#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <IRremote.h>
#include <LiquidCrystal.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

Servo monServomoteur;

// Indicates to which pin the LED is connected
const int ledpin1 = 45; //rouge
const int ledpin2 = 39; //verte
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;

// 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) 


void setup ()
{
// définit la broche 4 pour le servo moteur "monServomoteur"
monServomoteur.attach(36);
monServomoteur.write(ferme); //voir #define en haut

irrecv.enableIRIn();
 lcd.begin(16,2); 

// set buzzer to pin 8 as output
pinMode (buzzer, OUTPUT);

// Start communication with the monitor
Serial.begin (9600);
Serial1.begin(9600);//HC06 en pin 18-19 RX sur TX1 et TX sur RX1

// Library SPI
SPI.begin ();

// Up to version 1.4.5 this call
myReader.PCD_Init ();

// Print on monitor: “..”
Serial.println ("Presentez votre badge d'accès");
Serial.println ();

// initialize pin 7 and 6 as output
pinMode (ledpin1, OUTPUT);
pinMode (ledpin2, OUTPUT);
pinMode(bouton, INPUT);
pinMode(bouton2, INPUT);
}

void loop () {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("PRESENTEZ BADGE");
lcd.setCursor(4,1);
lcd.print("D'ACCES");
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
    monServomoteur.write(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);
  }
  if (c == '3'){ // si 3 est tapé dans le moniteur série, la porte s'ouvre
    digitalWrite (ledpin1, HIGH);
    digitalWrite (ledpin2, LOW);
    monServomoteur.write(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);
  }
  if (c == 'r'){ // si r est tapé dans le moniteur série, le système se réinitialise
    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");
    tone (buzzer, 500);
    delay(1000);
    noTone(buzzer);
    delay(200000000);
  }
}
if (Serial1.available()){
    BTDATA = Serial1.read();
}
  if (Serial.available())
    Serial1.write(Serial.read());
//********************************************
        if(BTDATA=='O'){   //Si on reçoit un O, on ouvre la porte
    monServomoteur.write(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");
    tone (buzzer, 1000);
    delay (1000);
    // stop, sound
    noTone(buzzer);
    delay(800);
    digitalWrite (ledpin1, LOW);
    digitalWrite (ledpin2, LOW);
    Serial.println("\n");
    }
    if(BTDATA=='F'){   //Si on reçoit un F, on ferme la porte
    digitalWrite (ledpin1, HIGH);
    digitalWrite (ledpin2, LOW);
    monServomoteur.write(ferme);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("ACCES:");
    Serial.print ("AUTORISE");
    lcd.setCursor(7,0);
    lcd.print("AUTORISE");
    tone (buzzer, 500);
    delay (1000);
    // stop, sound
    noTone(buzzer);
    delay(3000);
    digitalWrite (ledpin1, LOW);
    digitalWrite (ledpin2, LOW);
    Serial.println("\n");
}
//if (irrecv.decode(&results))
//{
//  Serial.println(results.value,HEX);
//  irrecv.resume();
//}
//if (results.value == CODE_IR_9)
//{
//  monServomoteur.write(ouvert);
//}
//if (results.value == CODE_IR_0)
//{
//  monServomoteur.write(ferme);
//}
etatbouton = digitalRead (bouton);
  if (etatbouton==HIGH) {
    
  }
  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);
    monServomoteur.write(ouvert); //voir #define en haut
    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();
  }
  etatbouton3 = digitalRead (bouton3);
  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);
    monServomoteur.write(ferme); //voir #define en haut
    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();
  }
// 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);
monServomoteur.write(ouvert); //voir #define en haut
  

// 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);
}

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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
//  }

}

PS : le code du bluetooth en loop commence à la ligne 174
Mon application apk :
RFID Security.zip (4,7 Mo)

Merci d'avance.
Cordialement.

Bonjour Geek56

Pour transmettre un fichier du genre APK, il suffit de le zipper, copier le fichier ZIP dans le presse-papier et de le coller dans ton article.

Cordialement
jpbbricole

Bonjour Geek56

Ton problème vient, peut être, je n'ai pas essayé, du fait que la variable qui crée ces événements ,
BDATA, n'est modifiée que depuis Serial1. C'est à dire que, une fois Serial1 lu, sa valeur reste mémorisée, tant qu'il n'y a pas une nouvelle réception.

	if (Serial1.available()){
		BTDATA = Serial1.read();
	}

Une fois traitée, BDATA devrait être "vidée" par un BDATA = 0.

Cordialement
jpbbricole

Merci, j'ai testé et ça ne bug plus mais nouveau problème : lorsque le servo moteur tourne, le HC-06 s'éteint donc on est obligé de se reconnecter.
Cordialement.
Nouvelle version du programme :

#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"

/*
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
*/

#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <IRremote.h>
#include <LiquidCrystal.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

Servo monServomoteur;

// Indicates to which pin the LED is connected
const int ledpin1 = 45; //rouge
const int ledpin2 = 39; //verte
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;

// 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) 


void setup ()
{
// définit la broche 4 pour le servo moteur "monServomoteur"
monServomoteur.attach(36);
monServomoteur.write(ferme); //voir #define en haut

irrecv.enableIRIn();
 lcd.begin(16,2); 

// set buzzer to pin 8 as output
pinMode (buzzer, OUTPUT);

// Start communication with the monitor
Serial.begin (9600);
Serial1.begin(9600);//HC06 en pin 18-19 RX sur TX1 et TX sur RX1

// Library SPI
SPI.begin ();

// Up to version 1.4.5 this call
myReader.PCD_Init ();

// Print on monitor: “..”
Serial.println ("Presentez votre badge d'accès");
Serial.println ();

// initialize pin 7 and 6 as output
pinMode (ledpin1, OUTPUT);
pinMode (ledpin2, OUTPUT);
pinMode(bouton, INPUT);
pinMode(bouton2, INPUT);
pinMode(22, OUTPUT);
pinMode(23, OUTPUT);
}

void loop () {
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("PRESENTEZ BADGE");
lcd.setCursor(4,1);
lcd.print("D'ACCES");
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
    monServomoteur.write(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);
  }
  if (c == '3'){ // si 3 est tapé dans le moniteur série, la porte s'ouvre
    digitalWrite (ledpin1, HIGH);
    digitalWrite (ledpin2, LOW);
    monServomoteur.write(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);
  }
  if (c == 'r'){ // si r est tapé dans le moniteur série, le système se réinitialise
    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");
    tone (buzzer, 500);
    delay(1000);
    noTone(buzzer);
    delay(200000000);
  }
}
if (Serial1.available()){
    BTDATA = Serial1.read();
}
  if (Serial.available())
    Serial1.write(Serial.read());
//********************************************
        if(BTDATA=='O'){   //Si on reçoit un O, on ouvre la porte
    monServomoteur.write(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");
    tone (buzzer, 1000);
    delay (1000);
    // stop, sound
    noTone(buzzer);
    delay(3000);
    digitalWrite (ledpin1, LOW);
    digitalWrite (ledpin2, LOW);
    Serial.println("\n");
    BTDATA = 0;
    }
    if(BTDATA=='F'){   //Si on reçoit un F, on ferme la porte
    digitalWrite (ledpin1, HIGH);
    digitalWrite (ledpin2, LOW);
    monServomoteur.write(ferme);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("ACCES:");
    Serial.print ("AUTORISE");
    lcd.setCursor(7,0);
    lcd.print("AUTORISE");
    tone (buzzer, 500);
    delay (1000);
    // stop, sound
    noTone(buzzer);
    delay(3000);
    digitalWrite (ledpin1, LOW);
    digitalWrite (ledpin2, LOW);
    Serial.println("\n");
    BTDATA = 0;
}
//if (irrecv.decode(&results))
//{
//  Serial.println(results.value,HEX);
//  irrecv.resume();
//}
//if (results.value == CODE_IR_9)
//{
//  monServomoteur.write(ouvert);
//}
//if (results.value == CODE_IR_0)
//{
//  monServomoteur.write(ferme);
//}
etatbouton = digitalRead (bouton);
  if (etatbouton==HIGH) {
    
  }
  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);
    monServomoteur.write(ouvert); //voir #define en haut
    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();
  }
  etatbouton3 = digitalRead (bouton3);
  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);
    monServomoteur.write(ferme); //voir #define en haut
    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();
  }
// 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);
monServomoteur.write(ouvert); //voir #define en haut
  

// 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);
}

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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);
      monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

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
//  }

}

Bonjour Geek56

Ça peut venir du fait que le servo et le HC-06 sont alimentés depuis le 5V. de l'Arduino. Le servo tire trop et fait chuter la tension. Alimentes le servo séparément. Le GND de cette alimentation supplémentaire doit être connectée au GND de l'Arduino.

Cordialement
jpbbricole

Merci de ta réponse mais comment veux-tu alimenter séparément le servo ?
Cordialement.

Tu peux utiliser un chargeur USB, tu "éclates" un vieux câble USB, le rouge est le +5v. et le noir ls GND.

Ok merci, j'aimerais ne faire alimenter le système par une seule alimentation car c'est un système de sécurité. Pourrais-je changer les blocs de l'application à la place pour mettre un truc connexion automatique ? Tu peux ouvrir le script de l'application ici : http://ai2.appinventor.mit.edu/ et voici le programme à importer en aia
RFIDSecurity aia.zip (1,4 Mo)
Cordialement.

Bonjour Geek56

Avec la même alimentation supplémentaire (chargeur USB), tu peux alimenter l'Arduino sur la pin 5V.

Cordialement
jpbbricole

Merci de ta réponse, le matériel ne m'appartenant pas je vais essayer de modifier l'application. J'ai une autre question : dans mon programme, il y a ligne 165 un if qui permet de mettre en pause le système mais je ne sais pas faire "attendre jusqu'a ce que s soit envoyé dans le moniteur série". Pourrais tu m'aider ?
Cordialement.

Bonjour Geek56

Pour la connexion automatique je fais ainsi:
image
Il faut connaître l'adresse de ton HC-06.
Je te mets le script MAI
BTcallAuto.zip (21.6 KB)

A+
Cordialement
jpbbricole

Ok merci je vais tester et je connais l'adresse 00:19:07:00:01:E0 RFID-Security
Cordialement.

Bonjour Geek56

Je supose que quand le système est en maintenance, seul la commande s doit être active?

A+
Cordialement
jpbbricole

Oui en gros : le programme ne continue pas tant que s n'a pas été envoyé dans le moniteur série à partir d'un pc.
Cordialement.

Bonjour Geek56

J'ai ajouté une variable à ton programme:

boolean systemeEnMaintenance = false;

Je te laisses voir son action et, éventuellement, étendre son action à d'autres parties de ton programme.

#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"

/*
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
*/

#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <IRremote.h>
#include <LiquidCrystal.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

Servo monServomoteur;

// Indicates to which pin the LED is connected
const int ledpin1 = 45; //rouge
const int ledpin2 = 39; //verte
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;

// 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;

void setup ()
{
	// définit la broche 4 pour le servo moteur "monServomoteur"
	monServomoteur.attach(36);
	monServomoteur.write(ferme); //voir #define en haut

	irrecv.enableIRIn();
	lcd.begin(16,2);

	// set buzzer to pin 8 as output
	pinMode (buzzer, OUTPUT);

	// Start communication with the monitor
	Serial.begin (9600);
	Serial1.begin(9600);//HC06 en pin 18-19 RX sur TX1 et TX sur RX1

	// Library SPI
	SPI.begin ();

	// Up to version 1.4.5 this call
	myReader.PCD_Init ();

	// Print on monitor: “..”
	Serial.println ("Presentez votre badge d'accès");
	Serial.println ();

	// initialize pin 7 and 6 as output
	pinMode (ledpin1, OUTPUT);
	pinMode (ledpin2, OUTPUT);
	pinMode(bouton, INPUT);
	pinMode(bouton2, INPUT);
	pinMode(22, OUTPUT);
	pinMode(23, OUTPUT);
}

void loop () {
	digitalWrite(22, HIGH);
	digitalWrite(23, HIGH);
	lcd.clear();
	lcd.setCursor(0,0);
	lcd.print("PRESENTEZ BADGE");
	lcd.setCursor(4,1);
	lcd.print("D'ACCES");
	if(Serial.available()){
		char c = Serial.read();
		Serial.println("Valeur entrée:");
		Serial.println(c);

		if (!systemeEnMaintenance)      // Si système pas en maintenance
		{
			if (c == '8'){ // si 8 est tapé dans le moniteur série, la porte s'ouvre
				monServomoteur.write(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);
			}
			if (c == '3'){ // si 3 est tapé dans le moniteur série, la porte s'ouvre
				digitalWrite (ledpin1, HIGH);
				digitalWrite (ledpin2, LOW);
				monServomoteur.write(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);
			}
			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("SERVICE HORS");
			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(BTDATA=='O'){   //Si on reçoit un O, on ouvre la porte
		monServomoteur.write(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");
		tone (buzzer, 1000);
		delay (1000);
		// stop, sound
		noTone(buzzer);
		delay(3000);
		digitalWrite (ledpin1, LOW);
		digitalWrite (ledpin2, LOW);
		Serial.println("\n");
		BTDATA = 0;
	}
	if(BTDATA=='F'){   //Si on reçoit un F, on ferme la porte
		digitalWrite (ledpin1, HIGH);
		digitalWrite (ledpin2, LOW);
		monServomoteur.write(ferme);
		lcd.clear();
		lcd.setCursor(0,0);
		lcd.print("ACCES:");
		Serial.print ("AUTORISE");
		lcd.setCursor(7,0);
		lcd.print("AUTORISE");
		tone (buzzer, 500);
		delay (1000);
		// stop, sound
		noTone(buzzer);
		delay(3000);
		digitalWrite (ledpin1, LOW);
		digitalWrite (ledpin2, LOW);
		Serial.println("\n");
		BTDATA = 0;
	}
	//if (irrecv.decode(&results))
	//{
	//  Serial.println(results.value,HEX);
	//  irrecv.resume();
	//}
	//if (results.value == CODE_IR_9)
	//{
	//  monServomoteur.write(ouvert);
	//}
	//if (results.value == CODE_IR_0)
	//{
	//  monServomoteur.write(ferme);
	//}
	etatbouton = digitalRead (bouton);
	if (etatbouton==HIGH) {
		
	}
	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);
		monServomoteur.write(ouvert); //voir #define en haut
		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();
	}
	etatbouton3 = digitalRead (bouton3);
	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);
		monServomoteur.write(ferme); //voir #define en haut
		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();
	}
	// 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);
		monServomoteur.write(ouvert); //voir #define en haut
		

		// 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);
	}

	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);
		monServomoteur.write(ouvert); // voir #define en haut


		// É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);
	}

	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);
		monServomoteur.write(ouvert); // voir #define en haut


		// É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);
	}

	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);
		monServomoteur.write(ouvert); // voir #define en haut


		// É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);
	}

	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);
		monServomoteur.write(ouvert); // voir #define en haut


		// É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);
	}

	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);
		monServomoteur.write(ouvert); // voir #define en haut


		// É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);
	}

	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);
		monServomoteur.write(ouvert); // voir #define en haut


		// É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);
	}

	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);
		monServomoteur.write(ouvert); // voir #define en haut


		// É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);
	}

	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);
		monServomoteur.write(ouvert); // voir #define en haut


		// É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);
	}

	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);
		monServomoteur.write(ouvert); // voir #define en haut


		// É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);
	}

	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);
		monServomoteur.write(ouvert); // voir #define en haut


		// É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);
	}

	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
	//  }

}

A+
Cordialement
jpbbricole

Merci, j'ai essayé et ça ne bloque que les entrées du moniteur série alors que j'aimerais que tout le système soit en pause, que plus rien ne marche avant que s ne soit entré.
Cordialement.

Bonjour Geek56

Alors, à toi de "jouer" avec systemeEnMaintenance :wink:

Cordialement
jpbbricole

Ok !
Cordialement.

Et voilà ! Merci beaucoup !

#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"

/*
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
*/

#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <IRremote.h>
#include <LiquidCrystal.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

Servo monServomoteur;

// Indicates to which pin the LED is connected
const int ledpin1 = 45; //rouge
const int ledpin2 = 39; //verte
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;

// 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;

void setup ()
{
  // définit la broche 4 pour le servo moteur "monServomoteur"
  monServomoteur.attach(36);
  monServomoteur.write(ferme); //voir #define en haut

  irrecv.enableIRIn();
  lcd.begin(16,2);

  // set buzzer to pin 8 as output
  pinMode (buzzer, OUTPUT);

  // Start communication with the monitor
  Serial.begin (9600);
  Serial1.begin(9600);//HC06 en pin 18-19 RX sur TX1 et TX sur RX1

  // Library SPI
  SPI.begin ();

  // Up to version 1.4.5 this call
  myReader.PCD_Init ();

  // Print on monitor: “..”
  Serial.println ("Presentez votre badge d'accès");
  Serial.println ();

  // initialize pin 7 and 6 as output
  pinMode (ledpin1, OUTPUT);
  pinMode (ledpin2, OUTPUT);
  pinMode(bouton, INPUT);
  pinMode(bouton2, INPUT);
  pinMode(22, OUTPUT);
  pinMode(23, OUTPUT);
}

void loop () {
  digitalWrite(22, HIGH);
  digitalWrite(23, 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(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
        monServomoteur.write(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);
      }
      if (c == '3'){ // si 3 est tapé dans le moniteur série, la porte s'ouvre
        digitalWrite (ledpin1, HIGH);
        digitalWrite (ledpin2, LOW);
        monServomoteur.write(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);
      }
      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("SERVICE HORS");
      lcd.setCursor(3,1);
      lcd.print("MAINTENANCE");
      Serial.println("MAINTENANCE OFF");
      tone (buzzer, 500);
      delay(1000);
      noTone(buzzer);
      systemeEnMaintenance = false;
    }
  }
  if (!systemeEnMaintenance){      // Si système pas en maintenance
  if (Serial1.available()){
    BTDATA = Serial1.read();
  }
  if (Serial.available())
  Serial1.write(Serial.read());
  //********************************************
  if(BTDATA=='O'){   //Si on reçoit un O, on ouvre la porte
    monServomoteur.write(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");
    tone (buzzer, 1000);
    delay (1000);
    // stop, sound
    noTone(buzzer);
    delay(3000);
    digitalWrite (ledpin1, LOW);
    digitalWrite (ledpin2, LOW);
    Serial.println("\n");
    BTDATA = 0;
  }
  if(BTDATA=='F'){   //Si on reçoit un F, on ferme la porte
    digitalWrite (ledpin1, HIGH);
    digitalWrite (ledpin2, LOW);
    monServomoteur.write(ferme);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("ACCES:");
    Serial.print ("AUTORISE");
    lcd.setCursor(7,0);
    lcd.print("AUTORISE");
    tone (buzzer, 500);
    delay (1000);
    // stop, sound
    noTone(buzzer);
    delay(3000);
    digitalWrite (ledpin1, LOW);
    digitalWrite (ledpin2, LOW);
    Serial.println("\n");
    BTDATA = 0;
  }
  //if (irrecv.decode(&results))
  //{
  //  Serial.println(results.value,HEX);
  //  irrecv.resume();
  //}
  //if (results.value == CODE_IR_9)
  //{
  //  monServomoteur.write(ouvert);
  //}
  //if (results.value == CODE_IR_0)
  //{
  //  monServomoteur.write(ferme);
  //}
  etatbouton = digitalRead (bouton);
  if (etatbouton==HIGH) {
    
  }
  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);
    monServomoteur.write(ouvert); //voir #define en haut
    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();
  }
  etatbouton3 = digitalRead (bouton3);
  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);
    monServomoteur.write(ferme); //voir #define en haut
    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();
  }
  // 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);
    monServomoteur.write(ouvert); //voir #define en haut
    

    // 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);
  }

  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);
    monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

  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);
    monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

  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);
    monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

  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);
    monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

  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);
    monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

  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);
    monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

  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);
    monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

  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);
    monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

  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);
    monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

  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);
    monServomoteur.write(ouvert); // voir #define en haut


    // É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);
  }

  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
  //  }

}
}

Cordialement.

Bonjour Geek56

Ok, tu as tout compris :wink:

Une petite remarque concernant ton ajout:

  if (!systemeEnMaintenance){      // Si système pas en maintenance
  if (Serial1.available()){

Penses à indenter ton programme, ça facilite sa maintenance et, surtout, sa lecture.
Dans l'IDE Arduino c'est ctrl t.
image

Bonne continuation.
Cordialement
jpbbricole