Ayuda con proyecto Lector Código de Barras + SD Card + LCD

Hola! Espero que se encuentren bien.

Tengo un proyecto asignado para mi colegio, en el que me piden hacer un lector de códigos de barras, que guarde los valores que lee en una tarjeta SD para que luego una persona pueda pasar dichos valores a un Excel y etc… Adicionalmente le agregué un LCD por gusto y para que el proyecto se vea más interesante, pero el problema no es nada relacionado al LCD entonces ignoren todo lo que tenga que ver con el LCD en la programación. Logré que todas los placas interactuen entre sí sin problema (Arduino Mega 2560 + LCD + SD Card Reader + USB Host Shield), lo que veo un gran avance y de hecho siento que estoy a punto de finalizar, sin embargo, hay un pequeño problema y es que necesito separar cada lectura por un ENTER (es decir, saltar a la siguiente línea), sin embargo, si uso

myFile.print( (char)key );

los valores aparecen de la siguiente forma en el .txt
(ver el attachment “Actual.PNG”)

cuando lo que necesito es que aparezca así:
(ver el attachment “Desired.PNG”)

Aquí les dejo la programación que estoy usando

#include <HID.h>

#include <hid.h>                           //Add to Oleg Mazurov code to Bar Code Scanner
#include <hiduniversal.h>                  //Add to Oleg Mazurov code to Bar Code Scanner
#include <usbhub.h>

#include <LiquidCrystal.h>
#include <avr/pgmspace.h>
#include <Usb.h>
#include <usbhub.h>
#include <avr/pgmspace.h>
#include <hidboot.h>
#define DISPLAY_WIDTH 16

#include <SPI.h>
#include <SD.h>



File myFile;

// change this to match your SD shield or module;
//     Arduino Ethernet shield: pin 4
//     Adafruit SD shields and modules: pin 10
//     Sparkfun SD shield: pin 8
const int chipSelect = 4;


//initialize the LCD library with the numbers of the interface pins//

LiquidCrystal lcd(46, 44, 42, 40, 38, 36);

USB     Usb;
USBHub     Hub(&Usb);                                          //I enable this line
HIDUniversal      Hid(&Usb);                                  //Add this line so that the barcode scanner will be recognized, I use "Hid" below
HIDBoot<USB_HID_PROTOCOL_KEYBOARD>    Keyboard(&Usb);

class KbdRptParser : public KeyboardReportParser
{
    void PrintKey(uint8_t mod, uint8_t key);             // Add this line to print character in ASCII
  protected:
    virtual void OnKeyDown  (uint8_t mod, uint8_t key);
    virtual void OnKeyPressed(uint8_t key);
};

void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
{
  uint8_t c = OemToAscii(mod, key);

  if (c)
    OnKeyPressed(c);
}

/* what to do when symbol arrives */
void KbdRptParser::OnKeyPressed(uint8_t key)
{
  static uint32_t next_time = 0;      //watchdog
  static uint8_t current_cursor = 0;  //tracks current cursor position

  if ( millis() > next_time ) {
    lcd.clear();
    current_cursor = 0;
    delay( 5 );  //LCD-specific
    lcd.setCursor( 0, 0 );
  }//if( millis() > next_time ...

  next_time = millis() + 200;  //reset watchdog

  if ( current_cursor++ == ( DISPLAY_WIDTH + 1 )) { //switch to second line if cursor outside the screen
    lcd.setCursor( 0, 1 );
  }

  Serial.print( (char)key );      //Add char to print correct number in ASCII
  lcd.print( (char)key );          //Add char to print correct number in ASCII
  // open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open("COMCOVAO.txt", FILE_WRITE);

// if the file opened okay, write to it:
if (myFile) {
  Serial.print("Writing to COMCOVAO.txt...");
  myFile.print( (char)key );
  // close the file:
  myFile.close();
  Serial.println("done.");
} else {
  // if the file didn't open, print an error:
  Serial.println("error opening test.txt");
}
};

KbdRptParser Prs;

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  Serial.println("USB Host Shield Iniciado correctamente");

  if (Usb.Init() == -1) {
    Serial.println("Error iniciando USB HOST Shield");
  }

  delay( 200 );

  Hid.SetReportParser(0, (HIDReportParser*)&Prs);        //Here I change  "Keyboard" for "Hid"
  // set up the LCD's number of columns and rows:
  lcd.begin(DISPLAY_WIDTH, 4);
  lcd.clear();
  lcd.noAutoscroll();
  lcd.setCursor( 0, 0 );
  lcd.print("ESCANEAR CODIGO");
  lcd.setCursor( 0, 2 );
  lcd.print("Desarrollado por");
  lcd.setCursor( 0, 3 );
  lcd.print("MANTE COVAO");
  delay( 200 );

  Serial.print("Initializing SD card...");
// On the Ethernet Shield, CS is pin 4. It's set as an output by default.
// Note that even if it's not used as the CS pin, the hardware SS pin
// (10 on most Arduino boards, 53 on the Mega) must be left as an output
// or the SD library functions will not work.
pinMode(SS, OUTPUT);

if (!SD.begin(10, 11, 12, 13)) {
  Serial.println("initialization failed!");
  return;
}
Serial.println("initialization done.");
}

void loop()
{
  Usb.Task();
}

Muchísimas gracias de antemano

Actual.PNG

Desired.PNG

Moderador:
Por favor edita tu título retirando la palabra Ayuda del mismo.
También debes editar las imágenes adjuntas de modo que se hagan visibles, tal como se indica en las normas de este foro.

Como visualizar una o varias imágenes adjuntas
A continuación una guía para que la imagen adjunta pueda visualizarse en el post.
COMPLEMENTARIO: Como adjuntar una imagen adjunta

Que muestra el sistema cuando tu presionas ENTER? porque esa es la clave.

Debes insertar un caracter '\n' para cambiar de línea.

If needs text wrapping, you can use myfile.println; if needs to add a wrapping in the middle of the content, you can use an escape character, print("abcd\r\n1234"),\r\n is the carriage return and line feed

www.rtscan.net