Bonjour,
Je dois réaliser un projet pour un cours avec de l'arduino.
L'idée c'est de créer un coffre avec lecture de carte Rfid avec un écran qui affiche si c'est ouvert ou fermé et un servo moteur qui s'ouvre et se ferme comme une serrure.
De plus, j'y ai ajouté 3 led (1 bleue fixe, 1 verte quand c'est ouvert et 1 rouge quand l'accès est refusé)
et un Buzzer.
Tout marche parfaitement sauf une chose, les rotations du servo, je voudrai que quand je montre la carte le servo tourne (dévérouillage) et quand je remontre la carte il se ferme (comme une serrure simple) mais impossible quand je veux "fermer" ma serrure le servo moteur fait un aller retour rapidement
En espérant que mes explications soient claires..
Voici mon code je pense qu'il y a que très peu de modifications à faire mais je ne trouve pas la solution...
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#define greenLed 3
#define redLed 4
#define servoPin 7
#define buzzerPIN 6
//#define buzzerPIN A0 //Branchement analogique
LiquidCrystal_I2C lcd(0x27, 16, 2);
MFRC522 mfrc522(10,9);
Servo sg90;
String tagUID = "50 C7 03 9A";
bool lock = false;
void setup() {
pinMode(buzzerPIN, OUTPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
sg90.attach(servoPin);
sg90.write(0);
lcd.init();
lcd.backlight();
SPI.begin();
mfrc522.PCD_Init();
lcd.clear();
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("RFID porte fermee");
lcd.setCursor(0, 1);
lcd.print("montrer la cle ");
if (!mfrc522.PICC_IsNewCardPresent()) //ATTENTE CARTE RFID
{
return -1;
}
if ( ! mfrc522.PICC_ReadCardSerial()) //LECTURE CARTE RFID
{
return -1;
}
//CONVERTION DU UID DE LA CARTE EN STRING
String tag = "";
for (byte i = 0; i < mfrc522.uid.size; i++)
{
tag.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); //si byte < 0x10 alors uidByte[i] =" 0" sinon = " "
tag.concat(String(mfrc522.uid.uidByte[i], HEX)); //convertion en HEXADECIMAL
}
tag.toUpperCase();
//COMPARAISON DU UID DE LA CARTE AVEC CELLUI DE REFFERENCE
if (tag.substring(1) == tagUID) // If UID of tag is matched.
{
lock = !lock;
if(lock)
sg90.write(0); //VERROUILLAGE
else
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("acces autorise");
lcd.setCursor(0, 1);
lcd.print("Porte Ouverte");
digitalWrite(greenLed, HIGH);
tone(buzzerPIN,33,500);
delay(500);
tone(buzzerPIN,33,500);
sg90.write(90); //DEVERROUILLAGE
delay(1000);
digitalWrite(greenLed, LOW);
lcd.clear();
lcd.print("acces autorise");
}
}
else
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Mauvaise cle");
lcd.setCursor(0, 1);
lcd.print("Acces refuse");
digitalWrite(redLed, HIGH);
tone(buzzerPIN,244,500);
delay(500);
tone(buzzerPIN,244,500);
digitalWrite(redLed, LOW);
lcd.clear();
}
}
version12.ino (2.13 KB)