Bonjour,
Je souhaite avec mon arduino faire clignoter une led ou ouvrir un relais quand je passe mon badge la première fois sur mon rfid et quand après je repasse mon badge 3s ou plus dessus que mon relais se ferme et ma led s’éteigne, je n'arrive pas a comprendre pourquoi sa ne marche pas.... mon script allume bien la led quand je passe une première fois, elle s’éteint quand je l'aisse le badge plus de 3s mais quand je repasse mon badge pour la re-allumer elle se ré-éteint des que je le retire..... si vous pouviez regarder voir ou est mon erreur, (ne faite pas attention au commentaire j'ai tellement changer mon code que....) Merci d'avance !!!!
//definir les librairie
#include <SPI.h>
#include <RFID.h>
//code system
RFID monModuleRFID(10,5);
//definir les variable
int UID[5]={};
int MASTERKEY[5]={131,9,104,0,226};
const char led_rouge = 8;
const char led_vert = 7;
const char relais_1 = 2;
const char relais_2 = 3;
const char bouton_de_demarage = 4;
const char courant_bouton = 9;
boolean contact_activer = false;
boolean demarage_activer = false;
int temps_defini = 2000; //définition du temps de maintien désiré en ms
long debut_de_detection;//variable qui retien le temps de detection
boolean variable_de_debut_de_detection = false; //variable qui sert a la detection du badge
int etat_de_la_detection;//variable pour suivre l'etat de la detection
boolean dernier_detect_cart_3s = false;//variable pour suivre la dernierre detection de plus de 3s
boolean detect_cart_3s = false;//variable pour suivre la detection de plus de 3s
//code de demarage fix
void setup(){
Serial.begin(9600);
//code system
SPI.begin();
monModuleRFID.init();
//Definir les sorties
pinMode(led_rouge, OUTPUT);
pinMode(led_vert, OUTPUT);
pinMode(relais_1,OUTPUT);
pinMode(relais_2,OUTPUT);
// pinMode(bouton_de_demarage,INPUT);
pinMode(courant_bouton,OUTPUT);
//Definir ce qui est etein/allumer au demarage
digitalWrite(courant_bouton, HIGH);
}
//code de demarage en boucle
void loop() {
// int lecture_bouton_de_demarage = digitalRead(bouton_de_demarage);//fonction de lecture du bouton
//if(lecture_bouton_de_demarage == LOW)
detection_RFID();//verification du rfid
if(contact_activer == true) {
digitalWrite(led_vert, HIGH);digitalWrite(led_rouge, LOW);
digitalWrite(relais_1,HIGH);
procedure_de_coupure_de_contact();
}
else {
digitalWrite(led_rouge, HIGH);digitalWrite(led_vert, LOW);
digitalWrite(relais_1,LOW);
}
}
//code de verification du rfid
void detection_RFID(){
if (monModuleRFID.isCard()) {
if (monModuleRFID.readCardSerial()) {
for(int i=0;i<=4;i++)
{
UID[i]=monModuleRFID.serNum[i];
}
}
if (UID[0] == MASTERKEY[0]
&& UID[1] == MASTERKEY[1]
&& UID[2] == MASTERKEY[2]
&& UID[3] == MASTERKEY[3]
&& UID[4] == MASTERKEY[4])
{
contact_activer = true;
detect_cart_3s = true;//si il detecte un code (renvoi au void)
}
else
{
//si il ne le detecte pas (renvoi au void)
}
monModuleRFID.halt();
}
else {
detect_cart_3s = false;
}
}
void procedure_de_coupure_de_contact(){
if (detect_cart_3s == true && dernier_detect_cart_3s == false){ //détection de l'appui sur le bouton 1
debut_de_detection = millis(); //initialisation du compteur 1
variable_de_debut_de_detection = true; //enregistrement du changement d'état du bouton 1
}
if (variable_de_debut_de_detection == true && detect_cart_3s == true && dernier_detect_cart_3s == true){ //le bouton 1 était et est toujours appuyé
if ((millis() - debut_de_detection) >= temps_defini){ //est-ce que le temps choisi est écoulé ?
contact_activer = false; //déclaration d'allumage de la led 1
Serial.print("-detecter-");
delay(50);
}
}
dernier_detect_cart_3s = detect_cart_3s;
//allumage physique de la led
}
Merci pour ton aide, mon code été devenu n'importe quoi :s
Quand je mes ton code est que je veux Téléverser il y a un message d'erreur que je ne comprend pas :
Arduino : 1.5.7 (Windows 7), Carte : "Arduino Uno"
In file included from C:\Users\Benji861905\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:24:0,
from C:\Users\Benji861905\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:15,
from sketch_may28a.ino:1:
sketch_may28a.ino: In function 'void loop()':
sketch_may28a.ino:40:26: error: invalid operands of types 'void' and 'bool' to binary 'operator=='
sketch_may28a.ino:47:23: error: could not convert 'detection_RFID()' from 'void' to 'bool'
sketch_may28a.ino:54:27: error: could not convert 'detection_RFID()' from 'void' to 'bool'
In file included from C:\Users\Benji861905\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:24:0,
from C:\Users\Benji861905\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:15,
from sketch_may28a.ino:1:
sketch_may28a.ino: In function 'void detection_RFID()':
sketch_may28a.ino:89:21: error: return-statement with a value, in function returning 'void' [-fpermissive]
sketch_may28a.ino:91:25: error: return-statement with a value, in function returning 'void' [-fpermissive]
sketch_may28a.ino:93:11: error: expected ';' before 'monModuleRFID'
In file included from C:\Users\Benji861905\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:24:0,
from C:\Users\Benji861905\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:15,
from sketch_may28a.ino:1:
sketch_may28a.ino:95:19: error: return-statement with a value, in function returning 'void' [-fpermissive]
In file included from C:\Users\Benji861905\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:24:0,
from C:\Users\Benji861905\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:15,
from sketch_may28a.ino:1:
sketch_may28a.ino: In function 'void loop()':
sketch_may28a.ino:40:26: error: invalid operands of types 'void' and 'bool' to binary 'operator=='
sketch_may28a.ino:47:23: error: could not convert 'detection_RFID()' from 'void' to 'bool'
sketch_may28a.ino:54:27: error: could not convert 'detection_RFID()' from 'void' to 'bool'
In file included from C:\Users\Benji861905\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:24:0,
from C:\Users\Benji861905\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:15,
from sketch_may28a.ino:1:
sketch_may28a.ino: In function 'void detection_RFID()':
sketch_may28a.ino:89:21: error: return-statement with a value, in function returning 'void' [-fpermissive]
sketch_may28a.ino:91:25: error: return-statement with a value, in function returning 'void' [-fpermissive]
sketch_may28a.ino:93:11: error: expected ';' before 'monModuleRFID'
In file included from C:\Users\Benji861905\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:24:0,
from C:\Users\Benji861905\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:15,
from sketch_may28a.ino:1:
sketch_may28a.ino:95:19: error: return-statement with a value, in function returning 'void' [-fpermissive]
Ce rapport contiendrait plus d'informations si l'option
"Montrer les informations de sortie pendant la compilation"
était activée dans Fichier > Préférences.
Merci a toi Sylvain est il manquer aussi un ; derrière else return false, mais le code donner m'active la led quand la carte et dessus et me la désactive quand je l’enlève je cherche a faire que quand je passe dessus elle reste allumer et quand je la repasse plus de 3s elle s’éteigne j'avais déjà mis un code au point :
//definir les librairie
#include <SPI.h>
#include <RFID.h>
//code system
RFID monModuleRFID(10,5);
//definir les variable
int UID[5]={};
int MASTERKEY[5]={131,9,104,0,226};
int temps_defini = 2000; //définition du temps de maintien désiré en ms
int ledPin1 = 7;
int boutonPin1 = 4;
long debut_de_detection;
boolean variable_de_debut_de_detection = false;
int etat_bouton1;
boolean dernier_detect_cart_3s = false;
int etat_led1 = LOW;
const char courant_bouton = 9;
boolean detect_cart_3s = false;
void setup() {
Serial.begin(9600);
//code system
SPI.begin();
monModuleRFID.init();
pinMode(ledPin1, OUTPUT);
pinMode(boutonPin1, INPUT);
pinMode(courant_bouton,OUTPUT);
digitalWrite(courant_bouton, HIGH);
}
void loop(){
detection_RFID();//verification du rfid //lecture de l'état des boutons
if (detect_cart_3s == true && dernier_detect_cart_3s == false){ //détection de l'appui sur le bouton 1
debut_de_detection = millis(); //initialisation du compteur 1
variable_de_debut_de_detection = true; //enregistrement du changement d'état du bouton 1
}
if ( variable_de_debut_de_detection == true && detect_cart_3s == true && dernier_detect_cart_3s == true){ //le bouton 1 était et est toujours appuyé
if ((millis() - debut_de_detection) >= temps_defini){ //est-ce que le temps choisi est écoulé ?
etat_led1 = LOW; //déclaration d'allumage de la led 1
delay(50);
}
}
dernier_detect_cart_3s = detect_cart_3s; //actualisation de l'état du bouton
digitalWrite(ledPin1, etat_led1); //allumage physique de la led
}
void detection_RFID(){
if (monModuleRFID.isCard()) {
if (monModuleRFID.readCardSerial()) {
for(int i=0;i<=4;i++)
{
UID[i]=monModuleRFID.serNum[i];
}
}
if (UID[0] == MASTERKEY[0]
&& UID[1] == MASTERKEY[1]
&& UID[2] == MASTERKEY[2]
&& UID[3] == MASTERKEY[3]
&& UID[4] == MASTERKEY[4])
{
etat_led1 = HIGH;
detect_cart_3s = true;
}
else
{
}
monModuleRFID.halt();
}
else{
detect_cart_3s = false;
}
}
mais je voulais l’intégrer a mon code de dépare, car ce code vas me servir pour démarre ma voiture avec un rfid.
Merci encore a vous deux de prendre un peut de temps pour m'aider et aussi si vous pouviez me dire a quoi correspond ce "bool"
Le la led s’éteint mais se rallume tout de suite après quand je laisse plus de 3 seconde, et je ne connaissait pas book bDemarre = false; mais j'ai vite deviner que c’était bool bDemarre = false; mais plutôt pas mal pour quelqu'un qui code devant la télé je n'aurais pas pu faire mieux
Voila problème résolut !!!!
Je ne lai pas coder en regardant la télé mais il marche
Je ne m'été peut-être pas bien exprimer mais merci encore a vous tout pour m'avoir aider !!!!
///////////////////////////////////////////////////
// Programme Demarer la voiture //
///////////////////////////////////////////////////
//definir les librairie
#include <SPI.h>
#include <RFID.h>
//code system
RFID monModuleRFID(10,5);
//definir les variable
int UID[5]={};
int MASTERKEY[5]={131,9,104,0,226};
const char led_vert = 7; //led de test
const char led_rouge = 8; //led de test
const char relais_1 = 2; //relais pour le contact
const char relais_2 = 3; //relais pour le demararge
const char bouton_de_demarage = 4; //bouton de demarage
boolean contact_activer = false; //verification du contact
boolean retar_contact_activer = false; //envoie les donnée vers "contact_activer" avec retardateur
boolean demarage_activer = false; //savoir quand le demarage est activer
int temps_defini = 2000; //définition du temps de maintien désiré en ms pour desactiver
long debut_de_detection; //variable pour compter le temps de maintien du badge
boolean variable_de_debut_de_detection = false; //variable qui detecte quand la carte est activer
boolean dernier_detect_cart_3s = false; //variable qui detect la derniere fois que la carte est rester plus de 3s
const char courant_bouton = 9; //courant envoyer au bouton de demarage
boolean detect_cart_3s = false; // variable qui detecte si la carte est la depui plu de 3s
void setup() {
Serial.begin(9600); //code pour la consol
SPI.begin();//code system
monModuleRFID.init();//code system
pinMode(led_rouge, OUTPUT); //led de test en entrer
pinMode(led_vert, OUTPUT); //led de test en entrer
pinMode(courant_bouton,OUTPUT); //courant du bouton en sortie
pinMode(relais_1,OUTPUT); //relai1 en entrer
pinMode(relais_2,OUTPUT); //relai1 en entrer
digitalWrite(courant_bouton, HIGH); //courant du bouton allumer
}
void loop(){
detection_RFID(); //lance le void de detection
plus_de_3s(); //lance le void de calcul de plus de 3s
if(contact_activer == true){ //variable si le contact est activer
digitalWrite(led_vert,HIGH);
digitalWrite(led_rouge,LOW);
digitalWrite(relais_1,HIGH);
}
else{
digitalWrite(led_rouge,HIGH);
digitalWrite(led_vert,LOW);
digitalWrite(relais_1,LOW);
}
contact_activer = retar_contact_activer; //sincronise le contact avec le retardateur
}
void plus_de_3s(){
if (detect_cart_3s == true && dernier_detect_cart_3s == false){ //détection du badge
debut_de_detection = millis(); //initialisation du compteur
variable_de_debut_de_detection = true; //enregistrement du changement du badge
}
if ( variable_de_debut_de_detection == true && detect_cart_3s == true && dernier_detect_cart_3s == true){ //le badge etait toujours detecter
if ((millis() - debut_de_detection) >= temps_defini){ //calcule du temps ecouler
retar_contact_activer = false; //si plus de 3s alors le retar est = a false
delay(50); //on laise a delai de 50ms
}
}
dernier_detect_cart_3s = detect_cart_3s; //on change la variable pour le renouvellement de la boucle
}
//void de detection du RFID
void detection_RFID(){
if (monModuleRFID.isCard()) {
if (monModuleRFID.readCardSerial()) {
for(int i=0;i<=4;i++)
{
UID[i]=monModuleRFID.serNum[i];
}
}
if (UID[0] == MASTERKEY[0]
&& UID[1] == MASTERKEY[1]
&& UID[2] == MASTERKEY[2]
&& UID[3] == MASTERKEY[3]
&& UID[4] == MASTERKEY[4])
{
retar_contact_activer = true; //si il detecte le bon alors on mais le retard = a true
detect_cart_3s = true; //si il detecte le bon alors on lance le detect cart
}
else
{
//si il detect le mauvais alor rien ne se passe
}
monModuleRFID.halt();
}
else{
detect_cart_3s = false; //si il n'en detecte pas alor on ne lance pas ou anule la detection pour le compteur
}
}