Bonjour,
j'ai créé un sytème d'ouverure de porte RFID mais l'écran lcd affiche des caractères bizarres.
L'infrarouge ne me sert pas et les noms sont inventés dans le programme.
Que puis je faire pour résoudre ce problème ?
Voici 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 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 REPARATEUR " 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 ferme 5
#define ouvert 250
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 RECV_PIN = 10;
long CODE_IR_9 = 0xFF906F;
long CODE_IR_0 = 0xFF9867;
long CODE_IR_1 = 0xFFA25D;
long CODE_IR1_9 = 0xBFEC0EB0;
IRrecv irrecv(RECV_PIN);
decode_results results;
// Creates own veriable for card reader
MFRC522 myReader (SS_PIN, RST_PIN);
LiquidCrystal lcd(10, 2, 4, 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);
// 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 () {
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);
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
monServomoteur.write(ferme);
tone (buzzer, 500);
delay (1000);
// stop, sound
noTone(buzzer);
}
}
//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) {
Serial.println("FERMETURE 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");
}
etatbouton2 = digitalRead (bouton2);
if (etatbouton2==HIGH) {
Serial.println("OUVERTURE 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");
}
// 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.println("ACCES: ");
if (key == BADGE_PORT_PLAISANCE) // RFID d'accès : bracelet HELLFEST (id:RYNWDG)
{
// 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(8,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(8,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(8,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(8,0);
lcd.print("AUTORISE");
lcd.setCursor(0,1);
lcd.print("MALO LENORMAND");
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(8,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(8,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(8,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(8,0);
lcd.print("AUTORISE");
lcd.setCursor(0,1);
lcd.print("MR LE PICARD");
delay (3000);
digitalWrite (ledpin1, HIGH);
digitalWrite (ledpin2, LOW);
}
else if (key == REPARATEUR)
{
// 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(8,0);
lcd.print("AUTORISE");
lcd.setCursor(0,1);
lcd.print("TECHNICIEN");
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(8,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(8,0);
lcd.print("REFUSE");
delay (3000);
}
Serial.println ();
//etatbouton2 = digitalRead (bouton2);
// if (etatbouton2==HIGH) {
// Serial.println("lecture en cours...");
// #define BADGE key
// }
}
Merci d'avance.
Cordialement,
Geek56.
