tengo un problema en mi progracion, tengo un array de numeros para los codigos rfid, la situación es que si subo el programa, y al mostrar el codigo rfid, me muestra todos los numeros y no uno solo, como se puede arreglar esto.
#include <SPI.h> // libreria comunicacion SPI
#include <MFRC522.h> // libreria del Lector RFID
#include <Wire.h> // libreria comunicacion I2C
#include <Time.h> // libreria para el tiempo
#include <DS1307RTC.h> // libreria del reloj
#include <SD.h> // libreria para la memoria SD
#define RST_PIN 9 // Configurable, pin 9 para Reset del MFRC522
#define SS_PIN 10 // Configurable, pin 8 para el selector de chip del MFRC522
const char *Mes[13] = {" ", // arreglo de meses
"Ene", "Feb", "Mar", "Abr", "May", "Jun",
"Jul", "Ago", "Sep", "Oct", "Nov", "Dic"
};
File myFile;
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
String read_rfid; // variable donde almacena la tarjeta leida
String tag[36] = {"c3e14de", "c31e31e", "3b83ee", "73a246e","537d44e", "f3cc4de", "93a043e", "235436e","f3b137e", "53933ce", "63f13fe", "131132e","634030e", "237149e", "d3904de", "239d4ae","f33c35e", "e33342e", "c37942e", "83543be","d36043e", "332049e", "134c3ce", "e37242e","3ea33e", "e36b3de", "a34933e", "43993ce","5353f912", "f37f35e", "738947e", "e32d31e","735530e", "331a4be", "13884ee", "438448e" }; // tag Almacenados
boolean P1=false, P2=false, P3=false, P4=false, P5=false, P6=false, P7=false, P8=false, P9=false, P10=false, P11=false, P12=false, P13= false, P14=false, P15=false, P16= false, P17=false, P18=false, P19=false, P20=false, P21=false, P22=false, P23=false, P24=false, P25=false, P26=false, P27=false, P28=false, P29=false, P30=false, P31=false, P32=false, P33=false, P34=false, P35=false, P36=false; // condiciones para los estados de entrada o salida
int nombre[36] = { 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36}; // Usuarios registrados
int pinSD = 4; // pin selector para la SD
int LedVerde=7; // pin 7 para el led verde
int LedRojo=6; // pin 7 para el led Rojo
void setup() {
pinMode(LedVerde,OUTPUT); // pin 7 se declara como salida
pinMode(LedRojo,OUTPUT); // pin 6 se declara como salida
Serial.begin(9600); // se inicializa el puerto serial
SPI.begin(); // se inicializa la comunicacion SPI
mfrc522.PCD_Init(); // se inicia el modulo lector RFID
if (!SD.begin(pinSD)) { // se compruba que este activa la tarjeta SD
Serial.println("initializacion fallida!");
digitalWrite(LedRojo,HIGH); // enciende el led rojo
return;
}
Serial.println("initializacion lista.");
}
// funcion para leer los bloques de la tarjeta RFID
void dump_byte_array(byte *buffer, byte bufferSize) {
read_rfid="";
for (byte i = 0; i < bufferSize; i++) {
read_rfid=read_rfid + String(buffer[i], HEX);
}
}
void loop() {
if(!mfrc522.PICC_IsNewCardPresent()) // comprueba si no existe alguna targeta presente en el lector
return;
if(!mfrc522.PICC_ReadCardSerial()) // comprueba si no se ha leido la tarjeta
return;
dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); // va a la funcion para leer el codigo de la tarjeta
registro(); // entra en el registro de evento
digitalWrite(LedVerde,LOW); // apaga el led indicador
}
// registro de evento
void registro()
{
myFile = SD.open("registro.txt", FILE_WRITE); // abre el archivo Registro donde se guardan los datos obtenidos
tmElements_t tm; // reasiga nombre a variable
RTC.read(tm); // lee los datos del reloj
ingreso(); // va a la funcion ingreso para indicar su estado si es entrada o salida
Serial.print(","); // separadores de datos
myFile.print(",");
Personal(); // va a la funcion personal para identicar el tag leido
Serial.print(",");
myFile.print(",");
Serial.print("UID:");
//myFile.print("UID:");
Serial.print(read_rfid); // ID del tag leido
myFile.print(read_rfid); // guarda el tag leido en la memoria SD
Serial.print(",");
myFile.print(",");
//Registra Hora
Serial.print(" Hora:");
//myFile.print(" Hora:");
print2digits(tm.Hour);
Serial.write(':');
myFile.print(":");
print2digits(tm.Minute);
Serial.write(':');
myFile.print(":");
print2digits(tm.Second);
Serial.print(",");
myFile.print(",");
// Registro de fecha
Serial.print(" Fecha(D/M/Y):");
//myFile.print(" Fecha(D/M/Y):");
Serial.print(tm.Day);
myFile.print(tm.Day);
Serial.write('/');
myFile.print("/");
Serial.print(Mes[tm.Month]);
myFile.print(Mes[tm.Month]);
Serial.write('/');
myFile.print("/");
Serial.print(tmYearToCalendar(tm.Year));
myFile.print(tmYearToCalendar(tm.Year));
Serial.println();
myFile.println();// realiza un salto de linea en la memoria SD
myFile.close(); // cierra el archivo de la SD
digitalWrite(LedVerde,HIGH); // enciende el led verde
delay(500); // esperaa 1/2 segundo
}
// le asiga un cero si el digito es mejor a 10
void print2digits(int numero) {
if (numero >= 0 && numero < 10) { // si el digito es menor de 10 y mayor o igual a cero
Serial.write('0'); // coloca un cero
myFile.print("0");
}
Serial.print(numero);
myFile.print(numero);
}
// identificacion de personal
void Personal(){
if(tag[0] == read_rfid){ // tag de Persona 1
Serial.print(nombre[0]);
myFile.print(nombre[0]);
}
if(tag[1] == read_rfid){ // tag de persons 2
Serial.print(nombre[1]);
myFile.print(nombre[1]);
}
if(tag[2] == read_rfid){ // tag de persona 3
Serial.print(nombre[2]);
myFile.print(nombre[2]);
}
if(tag[3] == read_rfid){ // tag de persons 4
Serial.print(nombre[3]);
myFile.print(nombre[3]);
}
if(tag[4] == read_rfid){ // tag de Persona 5
Serial.print(nombre[4]);
myFile.print(nombre[4]);
}
if(tag[5] == read_rfid){ // tag de persons 6
Serial.print(nombre[5]);
myFile.print(nombre[1]);
}
if(tag[6] == read_rfid){ // tag de persona 7
Serial.print(nombre[6]);
myFile.print(nombre[6]);
}
if(tag[7] == read_rfid){ // tag de persons 8
Serial.print(nombre[7]);
myFile.print(nombre[7]);
}
if(tag[8] == read_rfid){ // tag de Persona 9
Serial.print(nombre[8]);
myFile.print(nombre[8]);
}
if(tag[9] == read_rfid){ // tag de persons 10
Serial.print(nombre[9]);
myFile.print(nombre[9]);
}
if(tag[10] == read_rfid){ // tag de persona 11
Serial.print(nombre[10]);
myFile.print(nombre[10]);
}
if(tag[11] == read_rfid){ // tag de persons 12
Serial.print(nombre[11]);
myFile.print(nombre[11]);
}
if(tag[12] == read_rfid){ // tag de Persona 13
Serial.print(nombre[12]);
myFile.print(nombre[12]);
}
if(tag[13] == read_rfid){ // tag de persons 14
Serial.print(nombre[13]);
myFile.print(nombre[13]);
}
if(tag[14] == read_rfid){ // tag de persona 15
Serial.print(nombre[14]);
myFile.print(nombre[14]);
}
if(tag[15] == read_rfid){ // tag de persons 16
Serial.print(nombre[15]);
myFile.print(nombre[15]);
}
if(tag[16] == read_rfid){ // tag de Persona 17
Serial.print(nombre[16]);
myFile.print(nombre[16]);
}
if(tag[17] == read_rfid){ // tag de persons 18
Serial.print(nombre[17]);
myFile.print(nombre[17]);
}
if(tag[18] == read_rfid){ // tag de persona 19
Serial.print(nombre[18]);
myFile.print(nombre[18]);
}
if(tag[19] == read_rfid){ // tag de persons 20
Serial.print(nombre[19]);
myFile.print(nombre[19]);
}
if(tag[20] == read_rfid){ // tag de Persona 21
Serial.print(nombre[20]);
myFile.print(nombre[20]);
}
if(tag[21] == read_rfid){ // tag de persons 22
Serial.print(nombre[21]);
myFile.print(nombre[21]);
}
if(tag[22] == read_rfid){ // tag de persona 23
Serial.print(nombre[22]);
myFile.print(nombre[22]);
}
if(tag[23] == read_rfid){ // tag de persons 24
Serial.print(nombre[23]);
myFile.print(nombre[23]);
}
if(tag[24] == read_rfid){ // tag de Persona 25
Serial.print(nombre[24]);
myFile.print(nombre[24]);
}
if(tag[25] == read_rfid){ // tag de persons 26
Serial.print(nombre[25]);
myFile.print(nombre[25]);
}
if(tag[26] == read_rfid){ // tag de persona 27
Serial.print(nombre[26]);
myFile.print(nombre[26]);
}
if(tag[27] == read_rfid){ // tag de persons 28
Serial.print(nombre[27]);
myFile.print(nombre[27]);
}
if(tag[28] == read_rfid){ // tag de Persona 29
Serial.print(nombre[28]);
myFile.print(nombre[28]);
}
if(tag[29] == read_rfid){ // tag de persons 30
Serial.print(nombre[29]);
myFile.print(nombre[29]);
}
if(tag[30] == read_rfid){ // tag de persona 31
Serial.print(nombre[30]);
myFile.print(nombre[30]);
}
if(tag[31] == read_rfid){ // tag de persons 32
Serial.print(nombre[31]);
myFile.print(nombre[31]);
}
if(tag[32] == read_rfid){ // tag de Persona 33
Serial.print(nombre[32]);
myFile.print(nombre[32]);
}
if(tag[33] == read_rfid){ // tag de persons 34
Serial.print(nombre[33]);
myFile.print(nombre[33]);
}
if(tag[34] == read_rfid){ // tag de persona 35
Serial.print(nombre[34]);
myFile.print(nombre[34]);
}
if(tag[35] == read_rfid){ // tag de persons 36
Serial.print(nombre[35]);
myFile.print(nombre[35]);
}
// if( tag[0] != read_rfid && tag[1] != read_rfid && tag[2] != read_rfid && tag[3] != read_rfid){ // si el tag no esta Registrado
//Serial.print(nombre[36]);
//myFile.print(nombre[36]);
//}
}
// comprobacion de estado del ingreso
void ingreso(){
bool x = false; // condicion inicial
if(tag[0] == read_rfid && P1 == false && x==false){ // condicion para entrada de persona 1
Serial.print("Entrada ");
myFile.print("Entrada ");
P1 = true;
x=true;
}
if(tag[0] == read_rfid && P1 == true && x==false){ // condicion para salida de persona 1
Serial.print("Salida ");
myFile.print("Salida ");
P1 = false;
x=true;
}
if(tag[1] == read_rfid && P2 == false && x==false){ // condicion para entrada de persona 2
Serial.print("Entrada ");
myFile.print("Entrada ");
P2 = true;
x=true;
}
if(tag[1] == read_rfid && P2 == true && x==false){ // condicion para salida de persona 2
Serial.print("Salida ");
myFile.print("Salida ");
P2 = false;
x=true;
}
if(tag[2] == read_rfid && P3 == false && x==false){ // condicion para entrada de persona 3
Serial.print("Entrada ");
myFile.print("Entrada ");
P3 = true;
x=true;
}
if(tag[2] == read_rfid && P3 == true && x==false){ // condicion para salida de persona 3
Serial.print("Salida ");
myFile.print("Sallida ");
P3 = false;
x=true;
}
if(tag[3] == read_rfid && P4== false && x==false){ // condicion para salida de persona 4
Serial.print("Entrada ");
myFile.print("Entrada ");
P4 = true;
x=true;
}
if(tag[3] == read_rfid && P4 == true && x==false){ // condicion para salida de persona 4
Serial.print("Salida ");
myFile.print("Salida ");
P4 = false;
x=true;
}
if(tag[4] == read_rfid && P5 == false && x==false){ // condicion para entrada de persona 5
Serial.print("Entrada ");
myFile.print("Entrada ");
P5 = true;
x=true;
}
if(tag[4] == read_rfid && P5 == true && x==false){ // condicion para salida de persona 5
Serial.print("Salida ");
myFile.print("Salida ");
P5 = false;
x=true;
}
if(tag[5] == read_rfid && P6 == false && x==false){ // condicion para entrada de persona 6
Serial.print("Entrada ");
myFile.print("Entrada ");
P6 = true;
x=true;
}
if(tag[5] == read_rfid && P6 == true && x==false){ // condicion para salida de persona 6
Serial.print("Salida ");
myFile.print("Salida ");
P6 = false;
x=true;
}
if(tag[6] == read_rfid && P7 == false && x==false){ // condicion para salida de persona 7
Serial.print("Entrada ");
myFile.print("Entrada ");
P7 = true;
x=true;
}
if(tag[6] == read_rfid && P7 == true && x==false){ // condicion para salida de persona 7
Serial.print("Salida ");
myFile.print("Sallida ");
P7 = false;
x=true;
}
if(tag[7] == read_rfid && P8 == false && x==false){ // condicion para salida de persona 8
Serial.print("Entrada ");
myFile.print("Entrada ");
P8 = true;
x=true;
}
if(tag[7] == read_rfid && P8 == true && x==false){ // condicion para salida de persona 8
Serial.print("Salida ");
myFile.print("Salida ");
P8 = false;
x=true;
}
if(tag[8] == read_rfid && P9 == false && x==false){ // condicion para entrada de persona 9
Serial.print("Entrada ");
myFile.print("Entrada ");
P9 = true;
x=true;
}
if(tag[8] == read_rfid && P9 == true && x==false){ // condicion para salida de persona 9
Serial.print("Salida ");
myFile.print("Salida ");
P9 = false;
x=true;
}
if(tag[9] == read_rfid && P10 == false && x==false){ // condicion para entrada de persona 10
Serial.print("Entrada ");
myFile.print("Entrada ");
P10 = true;
x=true;
}
if(tag[9] == read_rfid && P10 == true && x==false){ // condicion para salida de persona 10
Serial.print("Salida ");
myFile.print("Salida ");
P10 = false;
x=true;
}
if(tag[10] == read_rfid && P11 == false && x==false){ // condicion para salida de persona 11
Serial.print("Entrada ");
myFile.print("Entrada ");
P11 = true;
x=true;
}
if(tag[10] == read_rfid && P11 == true && x==false){ // condicion para salida de persona 11
Serial.print("Salida ");
myFile.print("Sallida ");
P11 = false;
x=true;
}
if(tag[11] == read_rfid && P12 == false && x==false){ // condicion para salida de persona 12
Serial.print("Entrada ");
myFile.print("Entrada ");
P12 = true;
x=true;
}
if(tag[11] == read_rfid && P12 == true && x==false){ // condicion para salida de persona 12
Serial.print("Salida ");
myFile.print("Salida ");
P12 = false;
x=true;
}
if(tag[12] == read_rfid && P13 == false && x==false){ // condicion para entrada de persona 13
Serial.print("Entrada ");
myFile.print("Entrada ");
P13 = true;
x=true;
}
if(tag[12] == read_rfid && P13 == true && x==false){ // condicion para salida de persona 13
Serial.print("Salida ");
myFile.print("Salida ");
P13 = false;
x=true;
}
if(tag[13] == read_rfid && P14 == false && x==false){ // condicion para entrada de persona 14
Serial.print("Entrada ");
myFile.print("Entrada ");
P14 = true;
x=true;
}
if(tag[13] == read_rfid && P14 == true && x==false){ // condicion para salida de persona 14
Serial.print("Salida ");
myFile.print("Salida ");
P14 = false;
x=true;
}
if(tag[14] == read_rfid && P15 == false && x==false){ // condicion para salida de persona 15
Serial.print("Entrada ");
myFile.print("Entrada ");
P15 = true;
x=true;
}
if(tag[14] == read_rfid && P15 == true && x==false){ // condicion para salida de persona 15
Serial.print("Salida ");
myFile.print("Sallida ");
P15 = false;
x=true;
}
if(tag[15] == read_rfid && P16 == false && x==false){ // condicion para salida de persona 16
Serial.print("Entrada ");
myFile.print("Entrada ");
P16 = true;
x=true;
}
if(tag[15] == read_rfid && P16 == true && x==false){ // condicion para salida de persona 16
Serial.print("Salida ");
myFile.print("Salida ");
P16 = false;
x=true;
}
if(tag[16] == read_rfid && P17 == false && x==false){ // condicion para entrada de persona 17
Serial.print("Entrada ");
myFile.print("Entrada ");
P17 = true;
x=true;
}
if(tag[16] == read_rfid && P17 == true && x==false){ // condicion para salida de persona 17
Serial.print("Salida ");
myFile.print("Salida ");
P17 = false;
x=true;
}
if(tag[17] == read_rfid && P18 == false && x==false){ // condicion para entrada de persona 18
Serial.print("Entrada ");
myFile.print("Entrada ");
P18 = true;
x=true;
}
if(tag[17] == read_rfid && P18 == true && x==false){ // condicion para salida de persona 18
Serial.print("Salida ");
myFile.print("Salida ");
P18 = false;
x=true;
}
if(tag[18] == read_rfid && P19 == false && x==false){ // condicion para salida de persona 19
Serial.print("Entrada ");
myFile.print("Entrada ");
P19 = true;
x=true;
}
if(tag[18] == read_rfid && P19 == true && x==false){ // condicion para salida de persona 19
Serial.print("Salida ");
myFile.print("Sallida ");
P19 = false;
x=true;
}
if(tag[19] == read_rfid && P20 == false && x==false){ // condicion para salida de persona 20
Serial.print("Entrada ");
myFile.print("Entrada ");
P20 = true;
x=true;
}
if(tag[19] == read_rfid && P20 == true && x==false){ // condicion para salida de persona 20
Serial.print("Salida ");
myFile.print("Salida ");
P20 = false;
x=true;
}
if(tag[20] == read_rfid && P21 == false && x==false){ // condicion para entrada de persona 21
Serial.print("Entrada ");
myFile.print("Entrada ");
P21 = true;
x=true;
}
if(tag[20] == read_rfid && P21 == true && x==false){ // condicion para salida de persona 21
Serial.print("Salida ");
myFile.print("Salida ");
P21 = false;
x=true;
}
if(tag[21] == read_rfid && P22 == false && x==false){ // condicion para entrada de persona 22
Serial.print("Entrada ");
myFile.print("Entrada ");
P22 = true;
x=true;
}
if(tag[21] == read_rfid && P22 == true && x==false){ // condicion para salida de persona 22
Serial.print("Salida ");
myFile.print("Salida ");
P22 = false;
x=true;
}
if(tag[22] == read_rfid && P23 == false && x==false){ // condicion para salida de persona 23
Serial.print("Entrada ");
myFile.print("Entrada ");
P23 = true;
x=true;
}
if(tag[22] == read_rfid && P23 == true && x==false){ // condicion para salida de persona 23
Serial.print("Salida ");
myFile.print("Sallida ");
P23 = false;
x=true;
}
if(tag[23] == read_rfid && P24== false && x==false){ // condicion para salida de persona 24
Serial.print("Entrada ");
myFile.print("Entrada ");
P24 = true;
x=true;
}
if(tag[23] == read_rfid && P24 == true && x==false){ // condicion para salida de persona 24
Serial.print("Salida ");
myFile.print("Salida ");
P24 = false;
x=true;
}
if(tag[24] == read_rfid && P25 == false && x==false){ // condicion para entrada de persona 25
Serial.print("Entrada ");
myFile.print("Entrada ");
P25 = true;
x=true;
}
if(tag[24] == read_rfid && P25 == true && x==false){ // condicion para salida de persona 25
Serial.print("Salida ");
myFile.print("Salida ");
P25 = false;
x=true;
}
if(tag[25] == read_rfid && P26 == false && x==false){ // condicion para entrada de persona 26
Serial.print("Entrada ");
myFile.print("Entrada ");
P26 = true;
x=true;
}
if(tag[25] == read_rfid && P26 == true && x==false){ // condicion para salida de persona 26
Serial.print("Salida ");
myFile.print("Salida ");
P26 = false;
x=true;
}
if(tag[26] == read_rfid && P27 == false && x==false){ // condicion para salida de persona 27
Serial.print("Entrada ");
myFile.print("Entrada ");
P27 = true;
x=true;
}
if(tag[26] == read_rfid && P27 == true && x==false){ // condicion para salida de persona 27
Serial.print("Salida ");
myFile.print("Sallida ");
P27 = false;
x=true;
}
if(tag[27] == read_rfid && P28 == false && x==false){ // condicion para salida de persona 28
Serial.print("Entrada ");
myFile.print("Entrada ");
P28 = true;
x=true;
}
if(tag[27] == read_rfid && P28 == true && x==false){ // condicion para salida de persona 28
Serial.print("Salida ");
myFile.print("Salida ");
P28 = false;
x=true;
}
if(tag[28] == read_rfid && P29 == false && x==false){ // condicion para entrada de persona 29
Serial.print("Entrada ");
myFile.print("Entrada ");
P29 = true;
x=true;
}
if(tag[28] == read_rfid && P29 == true && x==false){ // condicion para salida de persona 29
Serial.print("Salida ");
myFile.print("Salida ");
P29 = false;
x=true;
}
if(tag[29] == read_rfid && P30 == false && x==false){ // condicion para entrada de persona 30
Serial.print("Entrada ");
myFile.print("Entrada ");
P30 = true;
x=true;
}
if(tag[29] == read_rfid && P30 == true && x==false){ // condicion para salida de persona 30
Serial.print("Salida ");
myFile.print("Salida ");
P30 = false;
x=true;
}
if(tag[30] == read_rfid && P31 == false && x==false){ // condicion para salida de persona 31
Serial.print("Entrada ");
myFile.print("Entrada ");
P31 = true;
x=true;
}
if(tag[30] == read_rfid && P31 == true && x==false){ // condicion para salida de persona 31
Serial.print("Salida ");
myFile.print("Sallida ");
P31 = false;
x=true;
}
if(tag[31] == read_rfid && P32 == false && x==false){ // condicion para salida de persona 32
Serial.print("Entrada ");
myFile.print("Entrada ");
P32 = true;
x=true;
}
if(tag[31] == read_rfid && P32 == true && x==false){ // condicion para salida de persona 32
Serial.print("Salida ");
myFile.print("Salida ");
P32 = false;
x=true;
}
if(tag[32] == read_rfid && P33 == false && x==false){ // condicion para entrada de persona 33
Serial.print("Entrada ");
myFile.print("Entrada ");
P33 = true;
x=true;
}
if(tag[32] == read_rfid && P33 == true && x==false){ // condicion para salida de persona 33
Serial.print("Salida ");
myFile.print("Salida ");
P33 = false;
x=true;
}
if(tag[33] == read_rfid && P34 == false && x==false){ // condicion para entrada de persona 34
Serial.print("Entrada ");
myFile.print("Entrada ");
P34 = true;
x=true;
}
if(tag[33] == read_rfid && P34 == true && x==false){ // condicion para salida de persona 34
Serial.print("Salida ");
myFile.print("Salida ");
P34 = false;
x=true;
}
if(tag[34] == read_rfid && P35 == false && x==false){ // condicion para salida de persona 35
Serial.print("Entrada ");
myFile.print("Entrada ");
P35 = true;
x=true;
}
if(tag[34] == read_rfid && P35 == true && x==false){ // condicion para salida de persona 35
Serial.print("Salida ");
myFile.print("Sallida ");
P35 = false;
x=true;
}
if(tag[35] == read_rfid && P36 == false && x==false){ // condicion para salida de persona 36
Serial.print("Entrada ");
myFile.print("Entrada ");
P36 = true;
x=true;
}
if(tag[35] == read_rfid && P36 == true && x==false){ // condicion para salida de persona 36
Serial.print("Salida ");
myFile.print("Salida ");
P36 = false;
x=true;
}
}