Como escribir o registrar Fecha y Hora en SD...

Buenas noches, estoy diseñando y programando un control de acceso con Fingerprint un Modulo SD y otro RTC, lo que quiero hacer es que después de haber colocado el dedo correcto que guarde la hora y la fecha en la SD… sucede que cree un void Fecha_Hora() con la funciones de escritura de datos del RTC…(reemplaze Serial.print() por MicroSD.print)

lo curioso es que cuando coloco la función para que se ejecute después de validar, no me guarda los datos en la SD aun cuando el programa detecta que esta en el modulo y esta siendo leída…

que me puede estar faltando?

Aqui dejare un pedazo del codigo… la verdad es bastante grande.

int getFingerprintIDez() {
  uint8_t p = finger.getImage();
  if (p != FINGERPRINT_OK)  {return -1;}
  
  p = finger.image2Tz();
  if (p != FINGERPRINT_OK)  {return -1;}

  p = finger.fingerFastSearch();
  if (p != FINGERPRINT_OK)  {return -1;}
  
  huella();
  fecha_hora();
  sd(); <------------------------ esta es la funcion para guardar los datos obtenidos del RTC en la SD
  
  // found a match!
  Serial.print("Ha sido encontrado un ID #"); Serial.print(finger.fingerID); 
  Serial.print(" Con confianza de: ");Serial.print(finger.confidence);Serial.println("%");
  Serial.println("--------------------------------------------------");
  return finger.fingerID;
}

Aqui el codigo de la funcion sd();

void sd(){
  DateTime now = RTC.now();
  MicroSD.print(now.year(), DEC); // Año
  MicroSD.print('/');
  MicroSD.print(now.month(), DEC); // Mes
  MicroSD.print('/');
  MicroSD.print(now.day(), DEC); // Dia
  MicroSD.print(' ');
  MicroSD.print(now.hour(), DEC); // Horas
  MicroSD.print(':');
  MicroSD.print(now.minute(), DEC); // Minutos
  MicroSD.print(':');
  MicroSD.print(now.second(), DEC); // Segundos
  MicroSD.println();
  delay(1000);
}

Asumiré que MicroSD es el nombre de una variable File, y que de antemano el archivo se había abierto para escritura. De ser así, no habría otro error que no sea olvidar cerrarlo.

:slight_smile: Si MicroSD es una variable File... coloque parte del codigo ya que es muy extenso y con varias pestñas.... la cosa es que he intentado de todo.... debajo del void sd(); en el codigo de validacion coloque MicroSD.close(); pero igual sigue sin guardar los datos en la SD... :frowning: que me estaria faltando? ha de ser el estres el que no me deja ver bien que falta jeje

¿Y dónde aparece que el archivo se abre?

la linea de codigo MicroSD = SD("registro.txt", FILE_WRITE); esta en el setup.... pero no se si estoy haciendo algo mal pero cuando coloco MicroSD.open(); me salta un error... si tienes respuesta a eso me la haces saber PERO buscare mas informacion al respecto, no he tenido casi tiempo...Gracias de antemano.

Voy más para atrás: ¿inicializaste la tarjeta?

Y otra es que si solo quieres abrir el archivo una vez, al menos has un flush que garantize la escritura al medio físico.

si claro... tome parte del codigo que viene por ejemplo y lo modifique de acuerdo a mi programa... y creo que intentare un flush como dices por que por mas que coloque MicroSD.println, no hara nada :confused:

:o LISTO, ya esta, resulta que la SD estaba en un formato que no era PERO lo raro es que daba el mensaje de que la lectura era correcta! en fin ya esta resuelto :smiley: Gracias a todos los que participaron en las distintas opiniones y soluciones! Feliz noche!