Boas pessoal eu sou novo por estas coisas e gostava que alguem me ajuda-se com a programação por favor!
Codigo:
#include <SD.h>
#include <SPI.h>
#include <MFRC522.h>
File myFile;
MFRC522 mfrc522(10, 9);
// Variáveis//
int x = 0;
byte sel = 0;
byte c1 = 0;
byte c2 = 0;
byte c3 = 0;
String status = "";
String cconteudo = "";
String usuario = "";
String nome = "";
char caractere;
char carac;
void setup() {
Serial.begin(9600); //inicializa a comunicação serial
SPI.begin(); //inicializa a comunicação SPI
if (SD.begin(4)) { // Faz a contagem do número de usuários cadastrados
myFile = SD.open("rfid.txt");
if (myFile) {
while (myFile.available()) {
for (x; myFile.read() == 13; x++) {
delay(10);
}
}
}
else {
Serial.println("Falha ao abrir banco de dados");
}
Serial.print(x);
Serial.println(" usuarios cadastrados: ");
myFile.close();
!SD.begin(4);
}
}
void loop() {
mfrc522.PCD_Init();
while (sel == 0) {
Serial.println("Aproxime o seu cartao do leitor...");
cconteudo = "";
while ( ! mfrc522.PICC_IsNewCardPresent()) {
}
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
for (byte i = 0; i < mfrc522.uid.size; i++) {
cconteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
cconteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
}
cconteudo.toUpperCase();
cconteudo.trim();
mfrc522.PICC_HaltA();
myFile = SD.open("rfid.txt");
if (myFile) {
while (myFile.available() && (c2 == 0)) {
caractere = 0;
while (myFile.available() && (caractere != ';') && (caractere != 13) && (c1 == 0)) {
caractere = myFile.read();
if ((caractere != ';') && (caractere != 13)) {
usuario.concat(caractere);
}
}
usuario.trim();
if ((cconteudo == usuario ) && (c1 == 0) ) {
status = "Usuario encontrado";
Serial.println(status);
c1 = 1;
c3 = 1;
}
else {
usuario = "";
status = "Usuario nao encontrado ";
}
if (c3 == 1) {
carac = 0;
while (myFile.available() && (carac != 13) && (c3 == 1)) {
carac = myFile.read();
if ((carac != 13) && (carac != ';')) {
nome.concat(carac);
}
delay(10);
}
nome.trim();
if (c3 == 1) {
c3 = 0;
c2 = 1;
sel = 1;
}
}
}
}
else {
Serial.println("Falha ao abrir banco de dados");
}
if (status != "Usuario encontrado") {
Serial.println(status);
}
}
myFile.close();
Serial.print("Bem vindo ");
Serial.println(nome);
delay(2000);
}
Estou com dois problemas:
primeiro esse codigo fica-me a repetir a entrada de uma tag autorizada e nao volta para ler mais tags
segundo gostava de saber se é possível bloquear uma tag depois de passar uma vez fazer um género de anti-passback
Aguardo respostas,
Cumprimentos,
Silvano