Bonjour,
J'utilise régulièrement un lecteur RFID parallax Serial avec un code comme suit :
#include <SoftwareSerial.h>
#define RFIDEnablePin 3 //Pin that enables reading. Set as OUTPUT and LOW to read an RFID tag
#define RFIDSerialRate 2400 //Parallax RFID Reader Serial Port Speed
#define RxPin 12 //Pin to read data from Reader
#define TxPin 13 //Pin to write data to the Reader NOTE: The reader doesn't get written to, don't connect this line.
SoftwareSerial RFIDReader(RxPin,TxPin);
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
RFIDReader.begin(RFIDSerialRate);
pinMode(RFIDEnablePin,OUTPUT);
digitalWrite(RFIDEnablePin, LOW);
}
int bytesread = 0;
int val = 0;
char badgecode[10];
void loop() {
if((val = RFIDReader.read()) == 10) { // Check for header
bytesread = 0;
while(bytesread<11) { // Read 10 digit code
val = RFIDReader.read();
if((val == 10)||(val == 13)) { // If header or stop bytes before the 10 digit reading
break; // Stop reading
}
badgecode[bytesread] = val; // Add the digit
bytesread++; // Ready to read next digit
}
if(bytesread == 10) { // If 10 digit read is complete
for(int x=0;x<10;x++) //Copy the Chars to a String
{
Serial.print(badgecode[x]); // debug
}
Serial.println();
}
bytesread = 0;
}
while(RFIDReader.available() > 0) //Burn off any characters still in the buffer
{
RFIDReader.read();
}
delay(50);
}
Pas de soucis, je peux utiliser les différents pin RX prévus par la lib (à part 14/15 qui en fait ne semblent pas fonctionner!)
Du coup je me suis dit "chouette je vais pouvoir utiliser 5 lecteurs RFID sur le même microcontrôleur en lisant les serial chacun leur tour"
Et en fait... ça se passe pas comme prévu ![]()
Grossièrement, voici l'idée que je m'étais donnée avec SoftwareSerial:
#define RFID1EnablePin 3 //Pin that enables reading. Set as OUTPUT and LOW to read an RFID tag
#define RFID1SerialRate 2400 //Parallax RFID Reader Serial Port Speed
#define Rx1Pin 12 //Pin to read data from Reader
#define Tx1Pin 13 //Pin to write data to the Reader NOTE: The reader doesn't get written to, don't connect this line.
SoftwareSerial RFID1Reader(Rx1Pin,Tx1Pin);
#define RFID2EnablePin 4 //Pin that enables reading. Set as OUTPUT and LOW to read an RFID tag
#define RFID2SerialRate 2400 //Parallax RFID Reader Serial Port Speed
#define Rx2Pin A8 //Pin to read data from Reader
#define Tx2Pin A9 //Pin to write data to the Reader NOTE: The reader doesn't get written to, don't connect this line.
SoftwareSerial RFID2Reader(Rx2Pin,Tx2Pin);
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
RFID1Reader.begin(RFID1SerialRate);
pinMode(RFID1EnablePin,OUTPUT);
digitalWrite(RFID1EnablePin, LOW);
RFID2Reader.begin(RFID2SerialRate);
pinMode(RFID2EnablePin,OUTPUT);
digitalWrite(RFID2EnablePin,LOW);
}
Dès que j'ajoute le RFID2Reader.begin dans le setup, le RFID1Reader cesse d'afficher des résultats (donc à priori de lire).
J'ai essayé de faire lire chacun leur tour comme ici en vain
J'ai essayé de jouer sur les digitalWrite(RFID1EnablePin...) en le passant HIGH dès lors que je voulais l'utiliser... en vain
Certains d'entre vous ont-ils déjà réalisé ce genre de projet ?
Merci beaucoup pour vos retours