Imprimiendo el contenido del archivo de la tarjeta SD en la pantalla LCD

0

Esta es una parte de mi programa que lee datos del archivo de la tarjeta SD y la muestra en la pantalla LCD.

  File dataFile = SD.open("1165.txt");


  if (dataFile) {
    Serial.println("File Opened");
    lcd.clear();
    delay( 5 );  //LCD-specific M
    lcd.setCursor( 0,0 );
    while (dataFile.available()) {
      Serial.write(dataFile.read());
      lcd.write(dataFile.read());
      lcd.print(dataFile.read());
     }
     dataFile.close();
     } else {
        // if the file didn't open, print an error:
        Serial.println("error");
     }

Cuando miro el Monitor Serial, imprime el contenido de ese archivo pero

la monja de estos comandos imprime lo que está impreso en el monitor de serie,

lcd.write(dataFile.read());
lcd.print(dataFile.read());

¿Alguna idea?

    
pregunta TP Ap

2 respuestas

1

Ha declarado el identificador de archivo como "archivo de datos", pero sus funciones se refieren a "dataafile" (con dos "a" s) ¿Quizás un error tipográfico?

Espero la línea "Serial.write (dataaFile.read ());" leerá el archivo y avanzará el puntero del archivo hasta el final del archivo. Las dos llamadas lcd.write () intentarán leer más allá del final del archivo.

Probablemente deba leer el archivo en un búfer, luego escribir el contenido del búfer en el puerto serie y en la pantalla LCD.

    
respondido por el Peter Bennett
0

Prueba esto

if (dataFile) {
    char character;
    Serial.println("File Opened");
    lcd.clear();
    delay( 5 );  //LCD-specific M
    lcd.setCursor( 0,0 );
    while (dataFile.available()) {
      character = dataFile.read();
      Serial.write(character);
      lcd.write(character);
      lcd.print(character);
     }
     dataFile.close();
     } else {
        // if the file didn't open, print an error:
        Serial.println("error");
     }
    
respondido por el Arun Kumar

Lea otras preguntas en las etiquetas