U8g2 I2C OLED Display gibt keine Ausgabe bei Verwendung der delay() Funktion?

Guten Tag,
ich stehe vor einem Problem und habe bisher keine anderen Hilfestellungen bei bereits vorhandenen Posts gefunden. Ich habe einen Arduino Nano und wollte etwas auf einem neu bestelltem 0.96" OLED Display von AZDelivery ausgeben, welcher den SSD1306 Chipsatz hat.
Hier der Link für dieses Display.
Mit der Adafruit SSD1306 Library, wie häufig empfohlen hatte ich leider keinen Erfolg, trotz richtiger I2C Adresse, abändern des reset pins auf -1 und umändern der Adafruit_SSD1306.h.
Erfolg hatte ich eher mit der U8G2 Library, wo ich auch den korrekten Konstruktor finden konnte. Ich habe den Sketch HelloWorld.ino auf den Arduino Nano hochgeladen und bekam eine Ausgabe. Einziges Makel: Das Display zeigt etwa eine halbe Sekunde "Hello World!", schaltet danach aber leider wieder ab und bleibt aus. Wenn ich die Zeile "delay(1000);" auskommentiere, bekomme ich dauerhaft "Hello World!" angezeigt, was eher weniger überraschend ist, weil die Schleife dann ohne Pause sowieso durchläuft.
Ich habe auch eine Serielle Ausgabe vor und nach dem Delay eingefügt, um sicherzugehen, dass diese Zeile mir nicht vielleicht doch den ganzen Code zerschießt, es erfolgt allerdings die erwartete Ausgabe.
Hier der Code:

#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);

void setup(void) {
  u8g2.begin();
  Serial.begin(9600);
}

void loop(void) {
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_ncenB10_tr);
    u8g2.drawStr(0,24,"Hello World!");
  } while ( u8g2.nextPage() );
  Serial.println("got this far 1");
  delay(1000);
  Serial.println("got this far 2");
}

Falls ich mich an eine Etikette nicht gehalten habe, bitte sagt mir bescheid, das ist mein erster Beitrag. Ich kann leider nur zwei Links einfügen, daher habe ich die Adafruit Library nicht verlinkt.
Kann mir vielleicht jemand helfen?

Warum verwendest du in den Einstellungen zum Display die SW_I2C ?
Der Nano hat doch HW_I2C.

Edit:
Ich habe kein SSD1306, aber mit einem SH1106 läuft es bei mir prima.

Somit: passe die Einstellungen an und alles ist gut.

Es hängt von der Anwendung ab, aber meine Empfehlung ist die U8g2.

Ich habe ein SSD1306, da funktionieren diese Einstellungen:

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

Wenn ich im Konstruktor SW zu HW ändere, zeigt das OLED Display leider gar nichts mehr an.

Dann nimm mal die originalen, wie es in der Lib steht.

Ich weiß nicht ob ich das richtig verstanden habe. Mit den Konstruktoren, die auskommentiert im Sketch sind, komme ich zum bereits oben angegebenen Problem. Mit den Konstruktoren aus dem github rep komme ich auch nicht weiter, da diese entweder nur SPI können, oder nicht gefunden werden kann, wenn ich das von SPI zu I2C abändere

Der konstruktor funktioniert bei mir leider nicht :-/

Bei mir schon:

#include <U8g2lib.h>
#include <Wire.h>

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

void setup(void) {
  u8g2.begin();
  Serial.begin(9600);
}

void loop(void) {
  uint32_t jetzt = millis();
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_ncenB10_tr);
    u8g2.drawStr(0, 24, "Hello World!");
    u8g2.setCursor(0, 48);
    u8g2.print(jetzt);
  } while ( u8g2.nextPage() );
  Serial.println("got this far 1");
  delay(1000);
  Serial.println("got this far 2");
}

grafik

Was machst Du anders?

danke, habe den fehler selber gefunden. das board ist schrott. trotzdem vielen dank für eure hilfe

Das ist meist so, wir können dich dabei nur unterstützen.
Aber schön, dass du den Fehler gefunden hast. Schade nur, dass es das Display ist.

Hast du mal geprüft, ob es evtl. nur ein schlechter Kontakt im Steckbrett ist, oder gar nur eine schlechte Lötstelle am Display ?