Enviar datos al monitor serial con SD

Bueno. Ataquemos el tema de la EEPROM. Hay que añadir tres modificaciones, aparte de incluir la librería en si:

Agregar una variable global donde guardar la posición del siguiente registro:

char nom[17]; // buffer de almacenamiento temporal
char tel[17]; // buffer de almacenamiento temporal
unsigned long regActual; // posición de lectura del archivo

En el setup, leeremos la dirección 0 de la EEPROM y, si el dato es "cabal" (la primera vez será FFFFFFFF) entenderemos que es posición guardada de un registro.

  if (myFile) {
    lcd.print ("NOMBRE:");
    lcd.setCursor (0, 1);
    lcd.print ("TEL:");
    EEPROM.get(0, regActual); 
    if (regActual<myFile.size) { // Si la posición de lectura es menor que el tamaño de archivo
      myFile.seek(regActual); // apuntamos el File hacia dicha dirección
    }
  } else lcd.print ("No se pudo abrir");

Finalmente, cuando se muestra un registro, podemos guardar en la EEPROM la posición siguiente a leer:

void muestra_registro(void){
  if (myFile) {
    if (myFile.available()) {
      nom[myFile.readBytesUntil(',', nom, 16)] = '\0';
      tel[myFile.readBytesUntil('\n', tel, 16)] = '\0';
      Serial.println(nom);
      Serial.println(tel);
      lcd.clear();
      lcd.print ("NOMBRE:");
      lcd.print (nom);
      lcd.setCursor (0, 1);
      lcd.print ("TEL:");
      lcd.print (tel);
    } else {
      Serial.println ("Final del Archivo");
      myFile.seek (0L);
      lcd.clear ();
      lcd.print ("Final del Archivo");
    }
    // TRAS HABER LEIDO REGISTRO, GUARDAMOS LA SIGUIENTE POSICIÓN DE LECTURA DE ARCHIVO
    EEPROM.put(0, myFile.position());
  } else {
    lcd.clear();
    lcd.print ("ERROR: no hay SD");
    lcd.setCursor (0, 1);
    lcd.print ("o archivo no exs");
  }
}