Problème gestion RC522

Bonjour je voudrai rajouté la lecture d'un badge qui remplacerai un bouton dans mon code
mais quand j'essai d'ajouté un code qui fonctionne en dehors des mon projet .
il n'est pas pris en charge dans mon projet.
Je vois pas comment prendre en charge la lecture RDFI
Si une âme charitable pouvais me donné un coup de main
merci par avance
je joint mon code

//INCLUDE LIBRARIES:-------------------------------------------------------------
#include "ClickButton.h"


#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); // appel de la classe
// liste clés valides
const byte bonUID[] = {147, 247, 12, 149};
// DEFINE INITIAL FUNCTION STATES: ----------------------------------------------
boolean contactActive = false;

boolean runlightsActive = false;
boolean britesActive = false;
boolean brakeActive = false;
boolean leftTurnActive = false;
boolean rightTurnActive = false;
boolean hornActive = false;
boolean startActive = false;
boolean suspendRunlights = false;
boolean hazzardActive = false;
//boolean killActive = false;
//boolean headlightActive = false;
boolean accessOk = false;

// DEFINE INPUT PINS: -----------------------------------------------------------//
#define contactCtrlPin 1


#define britesCtrlPin A0
#define brakeCtrlPin A1
#define leftCtrlPin A2
#define rightCtrlPin A3
#define hornCtrlPin A4 
#define startCtrlPin A5


// DEFINE CLICKBUTTONS
ClickButton contact (contactCtrlPin, LOW, CLICKBTN_PULLUP);

ClickButton britesButton (britesCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton brakeButton (brakeCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton leftButton (leftCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton rightButton (rightCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton hornButton (hornCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton startButton (startCtrlPin, LOW, CLICKBTN_PULLUP);


// DEFINE RELAY PINS: -----------------------------------------------------------

#define auxPin 0

#define runlightsPin 2
#define britesPin 3
#define brakePin 4
#define leftTurnPin 5
#define rightTurnPin 6
#define hornPin 7
#define startPin 8
//#define killPin 9
//#define headlightPin 


// DEFINE INITIAL RELAY STATES FOR TIMED FUNCTIONS: -----------------------------
int leftLight = HIGH;   
int rightLight = HIGH;


// DEFINE INITIAL MS COUNT FOR FUNCTIONS: ---------------------------------------
// will store last time LED was updated OR switch debonce
unsigned long auxCtrlMS = 0;



unsigned long leftTurnMs = 0;
unsigned long rightTurnMs = 0; 
unsigned long hazzardMs = 0;


unsigned long britesCtrlMs = 0;
unsigned long brakeCtrlMS = 0;
unsigned long leftCtrlMS = 0;
unsigned long rightCtrlMS = 0;
unsigned long hornCtrlMS = 0;
unsigned long startCtrlMS = 0;








// DEFINE CONSTANT INTERVALS:----------------------------------------------------
#define turnInterval 500 
#define hazzardInterval 200






// SETUP ///////////////////////////////////////////////////////////////////////


void setup() {
  rfid.PCD_Init();

// SET INITIAL RELAY STATES TO AVOID MISFIRES AT STARTUP:------------------------
  digitalWrite (auxPin,HIGH);
  digitalWrite (runlightsPin,HIGH);
  digitalWrite (britesPin,HIGH);
  digitalWrite (brakePin,HIGH);
  digitalWrite (rightTurnPin, rightLight);
  digitalWrite (leftTurnPin, leftLight);
  digitalWrite (hornPin,HIGH);
  digitalWrite (startPin, HIGH);
  //digitalWrite (killPin, HIGH);
  //digitalWrite (headlightPin,HIGH);
  

   rightButton.debounceTime   = 40;
  leftButton.debounceTime   = 40; 




  // Setup button timers (all in milliseconds / ms)
  // (These are default if not set, but changeable for convenience)
  //button1.debounceTime   = 20;   // Debounce timer in ms
  brakeButton.multiclickTime = 1000;  // Time limit for multi clicks
  startButton.longClickTime  = 1500; // time until "held-down clicks" register
  
// DEFINE OUTPUT PINS:-----------------------------------------------------------
  pinMode(auxPin, OUTPUT);
  pinMode(runlightsPin, OUTPUT);
  pinMode(britesPin, OUTPUT);
  pinMode(brakePin, OUTPUT);
  pinMode(leftTurnPin, OUTPUT);
  pinMode(rightTurnPin, OUTPUT);  
  pinMode(hornPin, OUTPUT);
  pinMode(startPin, OUTPUT);
  //pinMode(killPin, OUTPUT);
  //pinMode(headlightPin, OUTPUT);
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 
}




// MAIN LOOP ////////////////////////////////////////////////////////////////////
void loop(){

  int refus = 0; // quand cette variable n'est pas nulle, c'est que le code est refusé

  if (rfid.PICC_IsNewCardPresent())  // on a dédecté un tag
  {
    if (rfid.PICC_ReadCardSerial())  // on a lu avec succès son contenu
    {

      for (byte i = 0; i < rfid.uid.size; i++) // comparaison avec le bon UID
      {
        if (rfid.uid.uidByte[i] != bonUID[i]) {
          refus++;
        }
      }

      if (refus == 0) // UID accepté
      {
        contactActive == true;
        
      }

     
    }
  


  }
    



 readInputSwitches ();

if (contactActive == true){auxOn();}
else{auxOff();}


if (runlightsActive == true && suspendRunlights == false ){ runlightsOn();}
else{runlightsOff();}
  
if (britesActive == true && contactActive == true){britesOn();}
else{britesOff();}
  
if (brakeActive == true && contactActive == true){brakeLightsOn();}
else{brakeLightsOff();}
  
if (hornActive == true && contactActive == true){hornOn();}
else{hornOff();}


if (startActive == true && contactActive == true){
  starterOn();
  suspendRunlights = true;
}
else{
  starterOff();
  suspendRunlights = false;
}
  
if (leftTurnActive == true && contactActive == true){
  leftTurnOn();
  rightTurnActive = false;
  hazzardActive = false;
}
else if (rightTurnActive == true && contactActive == true){
  rightTurnOn();
  leftTurnActive = false;
  hazzardActive = false;
}
else if (hazzardActive == true && contactActive == true){
  hazzardFlashers();
  leftTurnActive = false;
  rightTurnActive = false;
  
}


else {blinkersOff();}



  
 


}






//FUNCTIONS///////////////////////////////////////////////////////////////////




// READ INPUT SWITCHES

void readInputSwitches(){
  




britesButton.Update();
if (britesButton.depressed == true){britesActive = true;}
else britesActive = false;


leftButton.Update();


if (leftButton.depressed == true && rightButton.depressed == false)

{rightTurnActive = false;
leftTurnActive = true;
hazzardActive = false;}
else leftTurnActive = false;



rightButton.Update();
if (rightButton.depressed == true && leftButton.depressed == false)

{rightTurnActive = true;
leftTurnActive = false;
hazzardActive = false;}
else rightTurnActive = false;


leftButton.Update();
rightButton.Update();
if (rightButton.depressed == true&&leftButton.depressed == true)

{rightTurnActive = false;
leftTurnActive = false;
hazzardActive = true;}
else hazzardActive = false;


brakeButton.Update();
if (brakeButton.depressed == true){brakeActive = true;}
else brakeActive = false;


hornButton.Update();
if (hornButton.depressed == true){hornActive = true;}
else hornActive = false;


startButton.Update();
if (startButton.depressed == true){startActive = true;}
else startActive = false;  
  
contact.Update();
if (contact.depressed == true){contactActive = true;}
else contactActive = false;

contact.Update();
if (contact.depressed == true ){runlightsActive = true;}
else runlightsActive = false;



}










// RUNNING LIGHTS: --------------------------------------------------------------



void runlightsOn(){
  digitalWrite(runlightsPin, LOW);
}


void runlightsOff(){
  digitalWrite(runlightsPin, HIGH);
}

// contact aux: -------------------------------------------------------------------


void auxOn(){
  digitalWrite(auxPin, LOW);
}


void auxOff(){
  digitalWrite(auxPin, HIGH);
}




// HIGHBEAM: -------------------------------------------------------------------


void britesOn(){
  digitalWrite(britesPin, LOW);
}


void britesOff(){
  digitalWrite(britesPin, HIGH);
}




// BRAKE LIGHTS: ---------------------------------------------------------------


void brakeLightsOn(){
  digitalWrite(brakePin, LOW);
}


void brakeLightsOff(){
  digitalWrite(brakePin, HIGH);
}




// LEFT TURN SIGNAL: ---------------------------------------------------------


void leftTurnOn(){
  unsigned long currentMs = millis();
  if(currentMs - leftTurnMs >= turnInterval) {
    // save the last time you blinked the LED 
    leftTurnMs = currentMs;   


    // if the LED is off turn it on and vice-versa:
    if (leftLight == HIGH)
      leftLight = LOW;
    else
      leftLight = HIGH;


    // set the LED with the ledState of the variable:
    digitalWrite(leftTurnPin, leftLight);
    digitalWrite(rightTurnPin, HIGH);
  }
}




// RIGHT TURN SIGNAL: ---------------------------------------------------------


void rightTurnOn(){
  unsigned long currentMs = millis();
  if(currentMs - rightTurnMs >= turnInterval) {
    // save the last time you blinked the LED 
    rightTurnMs = currentMs;   


    // if the LED is off turn it on and vice-versa:
    if (rightLight == HIGH)
      rightLight = LOW;
    else
      rightLight = HIGH;


    // set the LED with the ledState of the variable:
    digitalWrite(rightTurnPin, rightLight);
    digitalWrite(leftTurnPin, HIGH);
  }
}




// HAZZARD FLASHERS: -----------------------------------------------------------


void hazzardFlashers(){
  unsigned long currentMs = millis();
  if(currentMs - hazzardMs >= hazzardInterval) {
    // save the last time you blinked the LED 
    hazzardMs = currentMs;   


    // if the LED is off turn it on and vice-versa:     
    if (rightLight == HIGH)
      rightLight = LOW;
    else
      rightLight = HIGH;


    if (leftLight == HIGH)
      leftLight = LOW;
    else
      leftLight = HIGH;


    // set the LED with the ledState of the variable:
    digitalWrite(rightTurnPin, rightLight);
    digitalWrite(leftTurnPin, leftLight);
  }
}




// PARKING LIGHTS: -------------------------------------------------------------


void parkingLightsOn(){
  digitalWrite(rightTurnPin, LOW);
  digitalWrite(leftTurnPin, LOW);
}




// BLINKERS OFF: ---------------------------------------------------------------


void blinkersOff(){
  digitalWrite(rightTurnPin, HIGH);
  digitalWrite(leftTurnPin, HIGH);
}




// HORN: ------------------------------------------------------------------------


void hornOn(){
  digitalWrite(hornPin, LOW);
}


void hornOff(){
  digitalWrite(hornPin, HIGH);
}




// STARTER: ---------------------------------------------------------------------


void starterOn(){
  digitalWrite(startPin, LOW);
}


void starterOff(){
  digitalWrite(startPin, HIGH);
}






    
	
  
  



/* / KILLSWITCH: ------------------------------------------------------------------


void killOn(){
  digitalWrite(killPin, LOW);
}


void killOff(){
  digitalWrite(killPin, HIGH);
}
*/




/* / HEADLIGHT: ------------------------------------------------------------------


void headlightOn(){
  digitalWrite(headlightPin, LOW);
}


void headlightOff(){
  digitalWrite(headlightPin, HIGH);
}
/*/

Salut
Il serait bien d'ajouter un affichage du NUID sur Serial, comme dans l'exemple.

Avant d'ajouter cette fonctionnalité à un code déjà complexe mais qui fonctionne, je te suggère de faire d'abord un nouveau code dédié à la lecture RFID. Une fois que celui-ci fonctionnera comme tu le veux, tu l'incorporeras dans l'autre.
C'est plus sûr.

Pour apprendre, commence par tester les exemples de la bibliothèque.

Malheureusement je suis obligé d utiliser les pin 0 et 1

Je crois que je vais utilisé un Arduino nano en plus ça sera plus simple

Attention, A6 et A7 sur une NANO sont uniquement analogiques.
Sinon, regrouper boutons et LEds sur un expander I2C du genre MCP23008 ou MCP23017 permettrait de libérer pas mal d'entrées / sorties digitales.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.