leggere contenuto txt nella sd card nel display oled 0,96

Ciao a tutti, come da tilo mi interessa leggere il contenuto di un file di testo all'interno della microsd card e visualizzarlo nle display oled 0.96, non sono molte righe saranno circa 5 righe, solo che nel display vedo solo e sempre la prima riga con le altre righe accavallate, non ho capito come far passare a capo nella lettura del file di testo o leggere intero contenuto anche in scroll, io ho fatto questo codice che funziona solo su una riga ma scrivendo pochi caratteri li vedo sempre sulla stessa riga accavallandosi.

#include <SPI.h>
#include <Wire.h>
#include <SD.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);
String testo;

File myFile;


void setup()   {    
Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
          
if (!SD.begin(5)) {
    Serial.println("initialization failed!");
    while (1);
  }
//  Serial.println("initialization done.");

  // 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("test.txt", FILE_WRITE);

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

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
   // Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
      testo = myFile.readString();
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //Impostare l'indirizzo i2c annotato in precedenza

  display.clearDisplay();  //Pulisce il buffer da inviare al display

  display.setTextSize(1);  //Imposta la grandezza del testo

  display.setTextColor(WHITE); //Imposta il colore del testo (Solo bianco)

  display.setCursor(0,0); //Imposta la posizione del cursore (Larghezza,Altezza)

  display.println(testo); //Stringa da visualizzare

  display.display(); //Invia il buffer da visualizzare al display

display.startscrollleft(0x00, 0x0F);

}

void loop() {

 

}

... NON conosco la libreria di Adafruit (... troppo pesante per i mie gusti, con gli SSD1306 uso librerie molto più leggere ed efficienti), comuque, normalmente, si scrive riga per riga, posizionando bene il cursore e facendo i conti di quanti caratteri al massimo inviare sulla singola riga.

Guglielmo

Allora....vorrei creare una sorta di note che attraverso il pc si inseriscono dentro questo documenti di testo delle password quindi considerando che dovrà contenere delle password che poi verranno lette dall'arduino tramite sdcard e display oled, ma non ho idea di come far andare a capo automatico nel display la riga appena riempita, ad esempio dopo 18 caratteri dovrebbe andare ad occupare la seconda riga del display per non accavallarsi nella stessa riga.

Allora, NON so che font usi tu e NON so la libreria di Adafruit se va per riga/colonna o posizione in pixel ...
... la libreria che uso io vuole la posizione in pixel e quindi io ho fatto delle #define:

#define ROW_0      0       // OLED Rows 0..7
#define ROW_1      9
#define ROW_2     18
#define ROW_3     28
#define ROW_4     38
#define ROW_5     47
#define ROW_6     56

... che uso, ogni volta, per mettermi a colonna 0 e riga N dando la posizione in pixel.

Dopo di che, prendi il testo, lo separi in pezzi da massimo 18 caratteri e stampi le varie righe.

Guglielmo