Problem mit u8g2 bleibt dunkel

Hallo,
ich habe mir einen Sketch geschrieben und am Anfang ging auch das Display.
Nur habe ich irgend etwas geöscht oder falsch geändert dass nu8n mein Display immer dunkel bleibt.

#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#include "U8glib.h"
#define PIN_8 8
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 
float Batt1V = 9.00,Batt2V = 10.00,Batt3V = 11.00,Batt4V = 14.00,Batt5V = 15.00,i = 0;
float GW1 = 10.01;
float GW2 = 14.00;
String Batt1Aus ; 

void page0();
const char *text = "Rene-Batteriemonitor";
void page1();
void page2();
void page3();
void page4();
const int pageCount = 5;
int p;
void (*pages[pageCount])()={page0,page1, page2, page3,page4};
int duration [pageCount] ={10000,6500,6500,6500,6500};
String Bout;
String text1 = "i.O"; 
String text2 = "n.iO";


void setup() {
  pinMode(PIN_8, INPUT_PULLUP); 
   u8g2.begin();
  u8g2.setPowerSave(0);
  
}


void loop() {

  u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.firstPage();
 u8g2.sendBuffer();
  do {  
    (*pages[p])();
  } while( u8g2.nextPage() );
  u8g2.setFont(u8g2_font_ncenB08_tr);
  u8g2.sendBuffer();
  delay(duration[p]);
  p = p+1;
  if (p == pageCount)
    p=1;

   
  // rebuild the picture after some delay
  void clearOLED();
  delay(1000);
}
void page0(){
  
  
  u8g2.setCursor(25,24);
  Batt1Aus = "Rene Gorlt";
  u8g2.print(Batt1Aus);
  u8g2.setCursor(0,45);
   Batt1Aus = "Batteriemonitor";
  u8g2.print(Batt1Aus);
  u8g2.setCursor(40,63);
    Batt1Aus = "V0.1";
u8g2.print(Batt1Aus);

  }

void page1() {
  // graphic commands to redraw the complete screen should be placed here  
 
  
 u8g2.setCursor(0,11);
 if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 1=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,24);
   if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 2=" + String(Batt2V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,37);
   if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 3=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,50);
   if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 4=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,63);
   if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 5=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);
 
  
}
void page2(){
  
 u8g2.setCursor(0,11);
 if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 6=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,24);
   if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 7=" + String(Batt2V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,37);
   if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 8=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,50);
   if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 9=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,63);
   if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 10=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);
 
}
void page3(){
  u8g2.setCursor(0,11);
 if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 11=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,24);
   if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 12=" + String(Batt2V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,37);
   if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 13=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,50);
   if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 14=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,63);
   if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 15=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);
 
}
void page4(){
 u8g2.setCursor(0,11);
 if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 16=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
   u8g2.setCursor(0,24);
   if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 17=" + String(Batt2V) + "V " + Bout;
 u8g2.print( Batt1Aus);
  
   u8g2.setCursor(0,37);
   if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 18=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  // int zustandTaster = digitalRead(PIN_8);
  if (digitalRead(PIN_8)  == LOW) {
     u8g2.setCursor(0,50);
   if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 19=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,63);
   if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 20=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);} else {}

 
}```

Das paßt nicht zusammen, Du mußt Dich für full_buffer oder page_buffer entscheiden.

Mein Tipp, nimm den letzten Sketch aus der Sicherung.
Da kannst sicher den letzten Stand wieder herstellen, oder der funktioniert sofort wieder.

Hallo anbei der alte Sketch,
dieser hat aber das Problem das nach 6 min ca. das Display nur noch Standbild hat,
Also habe ich den Code umgeschrieben.

#include "U8glib.h"
#define PIN_8 8

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 
float Batt1V = 9.00,Batt2V = 10.00,Batt3V = 11.00,Batt4V = 14.00,Batt5V = 15.00,i = 0;
float GW1 = 10.01;
float GW2 = 14.00;
String Batt1Aus ; 

void page0();
const char *text = "Rene-Batteriemonitor";
void page1();
void page2();
void page3();
void page4();
const int pageCount = 5;
int p;
void (*pages[pageCount])()={page0,page1, page2, page3,page4};
int duration [pageCount] ={10000,6500,6500,6500,6500};
String Bout;
String text1 = "i.O"; 
String text2 = "n.iO";


void setup() {
  pinMode(PIN_8, INPUT_PULLUP); 
  // flip screen, if required
  // u8g.setRot180();
  
  // set SPI backup if required
  //u8g.setHardwareBackup(u8g_backup_avr_spi);

  // assign default color value
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255,255,255);
  }
  
  
}

void loop() {
 
   Serial.begin(9600);
 
  // picture loop
 
 if (digitalRead(PIN_8)  == LOW){
  
  void u8g_SleepOn(u8g_t *u8g);
 //void clearBUFFER(); } else{
u8g.firstPage();
  u8g.setFont(u8g_font_unifont);
  do {  
    (*pages[p])();
  } while( u8g.nextPage() );
  delay(duration[p]);
  p = p+1;
  if (p == pageCount)
    p=1;

   
  // rebuild the picture after some delay
  void clearOLED();
  delay(1000);
}}

void page0(){
  
  u8g.setPrintPos(25,24);
  
  Batt1Aus = "Rene Gorlt";
  u8g.print(Batt1Aus);
  u8g.setPrintPos(0,45);
   Batt1Aus = "Batteriemonitor";
  u8g.print(Batt1Aus);
  u8g.setPrintPos(40,63);
    Batt1Aus = "V0.1";
  u8g.print(Batt1Aus);
  }

void page1() {
  // graphic commands to redraw the complete screen should be placed here  
 
  u8g.setPrintPos(0,11);
   if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.1=" + String(Batt1V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,24);
   if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.2=" + String(Batt2V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,37);
   if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.3=" + String(Batt3V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,50);
   if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.4=" + String(Batt4V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,63);
   if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.5=" + String(Batt5V) + "V " + Bout;
  u8g.print(Batt1Aus);
 
  
}
void page2(){
  
u8g.setPrintPos(0,11);
 if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.6=" + String(Batt1V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,24);
  if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.7=" + String(Batt2V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,37);
   if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.8=" + String(Batt3V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,50);
  if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.9=" + String(Batt4V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,63);
  if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.10=" + String(Batt5V) + "V " + Bout;
  u8g.print(Batt1Aus);
 
}
void page3(){
  
u8g.setPrintPos(0,11);
if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.11=" + String(Batt1V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,24);
 if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.12=" + String(Batt2V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,37);
  if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.13=" + String(Batt3V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,50);
  if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.14=" + String(Batt4V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,63);
  if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.15=" + String(Batt5V) + "V " + Bout;
  u8g.print(Batt1Aus);
 
}
void page4(){

u8g.setPrintPos(0,11);
if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.16=" + String(Batt1V) + "V " + Bout;
  u8g.print(Batt1Aus);
 
  u8g.setPrintPos(0,24);
   if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.17=" + String(Batt2V) + "V " + Bout;
  u8g.print(Batt1Aus);
 
  u8g.setPrintPos(0,37);
if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
 Batt1Aus = "B.18=" + String(Batt3V) + "V " + Bout;
  u8g.print(Batt1Aus);
 // int zustandTaster = digitalRead(PIN_8);
if (digitalRead(PIN_8)  == LOW) {
  u8g.setPrintPos(0,50);
  if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.19=" + String(Batt4V) + "V " + Bout;
  u8g.print(Batt1Aus);
  
  u8g.setPrintPos(0,63);
  if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "B.20=" + String(Batt5V) + "V " + Bout;
  u8g.print(Batt1Aus);} else {}
}

Und was verstehst du unter Standbild ?
Möchtest du Videos anzeigen ?

Und zwischen den Beiden gibt es keine Sicherung ?

Nein das Display blättert die Page nicht weiter.
Es steht dann einfach die letzte Ausgabe im Display und nichts passiert mahr.

Im letzten Sketch machst du den Fehler, dass du in der loop() auch andere Funktionen eingebaut hast. Funktionen dürfen nicht innerhalb einer Funktion (hier loop()) stehen.

Hallo,
ich habe mir auch noch mal den ersten Sketch angesehen.
Da hast du auch in der loop() eine Funktion eingebaut.
Das kann nicht funktionieren.
Ich vermute, du verwechselst hier die Funktion und den Aufruf der Funktion.

Zudem zeigt der Sketch beim kompilieren dass beim Uno zu wenig dynamischer Speicher zur Verfügung steht. Das kann dein Problem sein.

Welches Board verwendest du ?

Ich habe einen UNO

Und zu den anderen Problemen hast du nichts zu sagen ?
Aber du weißt ja jetzt, wo dein Problem bzw. die Problem zu suchen sind.

Hallo das habe ich auch gesehen und habe bei der Displayauswahl auf 1_H umgestellt
U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
damit ist das Speicherproblem behoben.

Ok, das ist alles, was du dazu zu sagen hast ?

Na ja ich bin noch in den Anfängen und Hangel mich durch.
Habe den Code umgebaut nun ist das Speicherproblem behoben.
Nun ist im Diplay nur die erste Zeile und auch nur die hälfte zu sehen.
Restliche Daten nach unten fehlen.

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

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#include "U8glib.h"
#define PIN_8 8
U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 
float Batt1V = 9.00,Batt2V = 10.00,Batt3V = 11.00,Batt4V = 14.00,Batt5V = 15.00,i = 0;
float GW1 = 10.01;
float GW2 = 14.00;
String Batt1Aus ; 

void page0();
const char *text = "Rene-Batteriemonitor";
void page1();
void page2();
void page3();
void page4();
const int pageCount = 5;
int p;
void (*pages[pageCount])()={page0,page1, page2, page3,page4};
int duration [pageCount] ={10000,6500,6500,6500,6500};
String Bout;
String text1 = "i.O"; 
String text2 = "n.iO";


void setup() {
  pinMode(PIN_8, INPUT_PULLUP); 
   u8g2.begin();
 
}

void draw(void){

  draw_page0(); 
 draw_page1();
 draw_page2();
draw_page3();
 draw_page4();
  
  
  }
  
void loop(void) {

// picture loop  
 u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB08_tr);
  draw();
  u8g2.sendBuffer();
  
  delay(6000);


  
}
void draw_page0(){
  
  
  u8g2.setCursor(25,24);
  Batt1Aus = "Rene Gorlt";
  u8g2.print(Batt1Aus);
  u8g2.sendBuffer();
  u8g2.setCursor(0,45);
   Batt1Aus = "Batteriemonitor";
  u8g2.print(Batt1Aus);
  u8g2.sendBuffer();
  u8g2.setCursor(40,63);
    Batt1Aus = "V0.1";
u8g2.print(Batt1Aus);
u8g2.sendBuffer();
delay(6000);
  }

void draw_page1() {
  // graphic commands to redraw the complete screen should be placed here  
 
  
 u8g2.setCursor(0,11);
 if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 1=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);
   
  u8g2.setCursor(0,24);
   if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 2=" + String(Batt2V) + "V " + Bout;
  u8g2.print( Batt1Aus);
   
  u8g2.setCursor(0,37);
   if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 3=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,50);
   if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 4=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,63);
   if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 5=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);
 
  u8g2.sendBuffer();
  delay(6000);
 
}
void draw_page2(){
  
 u8g2.setCursor(0,11);
 if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 6=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,24);
   if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 7=" + String(Batt2V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,37);
   if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 8=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,50);
   if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 9=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,63);
   if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 10=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);
 u8g2.sendBuffer();
 delay(6000);
}
void draw_page3(){
  u8g2.setCursor(0,11);
 if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 11=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,24);
   if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 12=" + String(Batt2V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,37);
   if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 13=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,50);
   if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 14=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,63);
   if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 15=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);
 u8g2.sendBuffer();
 delay(6000);
}
void draw_page4(){
 u8g2.setCursor(0,11);
 if ((Batt1V > GW1) && (Batt1V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 16=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
   u8g2.setCursor(0,24);
   if ((Batt2V > GW1) && (Batt2V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 17=" + String(Batt2V) + "V " + Bout;
 u8g2.print( Batt1Aus);
  
   u8g2.setCursor(0,37);
   if ((Batt3V > GW1) && (Batt3V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 18=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  // int zustandTaster = digitalRead(PIN_8);
  if (digitalRead(PIN_8)  == LOW) {
     u8g2.setCursor(0,50);
   if ((Batt4V > GW1) && (Batt4V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 19=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  
  u8g2.setCursor(0,63);
   if ((Batt5V > GW1) && (Batt5V < GW2)){ Bout = text1;
  } else { Bout = text2; }
  Batt1Aus = "Batt. 20=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);} else {}

 u8g2.sendBuffer();
 delay(6000);
}

Zeig doch bitt mal ein Foto von deinem Display mit der fehlenden Anzeige.

Also das Problem liegt an der Umstellung von F auf 1 bei der Display defin.

Ok, wenn du das so schreibst.
Dann dokumentiere bitte mal deinen aktuellen Sketch, so dass wir auch nachvollziehen können, was da genau passieren soll. Und dann formatiere den auch in der IDE mit Strg + t, damit der besser lesbar ist.
Und tausche den letzten Sketch dagegen aus.
Evtl. lässt sich dadurch dein Fehler finden.

Der Sketch wird ein Batteriemonotoring 18-32 Batt 12V werden gelesen. Daten werden später über I2C Bus von 18-32 Attiny ausgelesen. Ich wollte erstmal die Ausgabe zum laufen bekommen und dann die Verknüpfung mit dem Einlesen nur noch einfügen.


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

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#include "U8glib.h"
#define PIN_8 8
U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);



float Batt1V = 9.00, Batt2V = 10.00, Batt3V = 11.00, Batt4V = 14.00, Batt5V = 15.00, i = 0;
float GW1 = 10.01;
float GW2 = 14.00;
String Batt1Aus ;


String Bout;
String text1 = "i.O";
String text2 = "n.iO";


void setup() {
  pinMode(PIN_8, INPUT_PULLUP);
  u8g2.begin();

}

void draw(void) {

  draw_page0();
  draw_page1();
  draw_page2();
  draw_page3();
  draw_page4();


}

void loop(void) {

  // picture loop
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_ncenB08_tr);
  //u8g2.setFont(u8g2_font_6x12_tr);
  draw();
  u8g2.sendBuffer();

  delay(6000);



}
void draw_page0() {


  u8g2.setCursor(25, 24);
  Batt1Aus = "Rene Gorlt";
  u8g2.print(Batt1Aus);

  u8g2.setCursor(0, 45);
  Batt1Aus = "Batteriemonitor";
  u8g2.print(Batt1Aus);

  u8g2.setCursor(40, 63);
  Batt1Aus = "V0.1";
  u8g2.print(Batt1Aus);
  u8g2.sendBuffer();
  delay(6000);
  u8g2.clearBuffer();
}

void draw_page1() {
  // graphic commands to redraw the complete screen should be placed here


  u8g2.setCursor(0, 11);
  if ((Batt1V > GW1) && (Batt1V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 1=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 24);
  if ((Batt2V > GW1) && (Batt2V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 2=" + String(Batt2V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 37);
  if ((Batt3V > GW1) && (Batt3V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 3=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 50);
  if ((Batt4V > GW1) && (Batt4V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 4=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 63);
  if ((Batt5V > GW1) && (Batt5V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 5=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  //u8g2.drawRFrame(0, 0, 128, 64, 5);

  u8g2.sendBuffer();
  delay(6000);

}
void draw_page2() {

  u8g2.setCursor(0, 11);
  if ((Batt1V > GW1) && (Batt1V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 6=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 24);
  if ((Batt2V > GW1) && (Batt2V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 7=" + String(Batt2V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 37);
  if ((Batt3V > GW1) && (Batt3V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 8=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 50);
  if ((Batt4V > GW1) && (Batt4V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 9=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 63);
  if ((Batt5V > GW1) && (Batt5V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 10=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  u8g2.sendBuffer();
  delay(6000);
}
void draw_page3() {
  u8g2.setCursor(0, 11);
  if ((Batt1V > GW1) && (Batt1V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 11=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 24);
  if ((Batt2V > GW1) && (Batt2V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 12=" + String(Batt2V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 37);
  if ((Batt3V > GW1) && (Batt3V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 13=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 50);
  if ((Batt4V > GW1) && (Batt4V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 14=" + String(Batt4V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 63);
  if ((Batt5V > GW1) && (Batt5V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 15=" + String(Batt5V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  u8g2.sendBuffer();
  delay(6000);
}
void draw_page4() {
  u8g2.setCursor(0, 11);
  if ((Batt1V > GW1) && (Batt1V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 16=" + String(Batt1V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 24);
  if ((Batt2V > GW1) && (Batt2V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 17=" + String(Batt2V) + "V " + Bout;
  u8g2.print( Batt1Aus);

  u8g2.setCursor(0, 37);
  if ((Batt3V > GW1) && (Batt3V < GW2)) {
    Bout = text1;
  } else {
    Bout = text2;
  }
  Batt1Aus = "Batt. 18=" + String(Batt3V) + "V " + Bout;
  u8g2.print( Batt1Aus);
  // int zustandTaster = digitalRead(PIN_8);
  if (digitalRead(PIN_8)  == LOW) {
    u8g2.setCursor(0, 50);
    if ((Batt4V > GW1) && (Batt4V < GW2)) {
      Bout = text1;
    } else {
      Bout = text2;
    }
    Batt1Aus = "Batt. 19=" + String(Batt4V) + "V " + Bout;
    u8g2.print( Batt1Aus);

    u8g2.setCursor(0, 63);
    if ((Batt5V > GW1) && (Batt5V < GW2)) {
      Bout = text1;
    } else {
      Bout = text2;
    }
    Batt1Aus = "Batt. 20=" + String(Batt5V) + "V " + Bout;
    u8g2.print( Batt1Aus);
  } else {}

  u8g2.sendBuffer();
  delay(6000);
}

Du hast den Sketch leider nicht kommentiert bzw. dokumentiert.
Und warum 18 - 32 ATiny ?
Warum nicht mit entsprechenden ADC's ?

Kann Attiny mit einem Sketch beschreiben.
Und die Batteriespannung dierekt als Wert an den Arduino übergeben.
18x12V in Reihe sind 216V evt 36X12V= 432V darum Einzelmessung galvanische Trennung.

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

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#include "U8glib.h"
#define PIN_8 8
U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

float Batt[] = {9.00, 10.00, 11.00, 14.00, 15.00, 9.01, 10.01, 11.01, 14.01, 15.01}

int p_num = 0;
float GW1 = 10.01;
float GW2 = 14.00;
String Batt1Aus ;
String Bout;
String text1 = "i.O";
String text2 = "n.iO";

void setup() {
  pinMode(PIN_8, INPUT_PULLUP);
  u8g2.begin();
}

void loop(void) {
  // picture loop
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_ncenB08_tr);
  //u8g2.setFont(u8g2_font_6x12_tr);
  draw();
  delay(6000);
  u8g2.clearBuffer();
  u8g2.sendBuffer();
  p_num++;
  if (p_num > 2) p_num = 0;
}

void draw() {
  switch (p_num) {
    case 0:
      u8g2.setCursor(25, 24);
      u8g2.print("Rene Gorlt");
      u8g2.setCursor(0, 45);
      u8g2.print("Batteriemonitor");
      u8g2.setCursor(40, 63);
      u8g2.print("V0.1");
      u8g2.sendBuffer();
      break;
    default:
      for int (line = 0; line < 5; line++) {
        u8g2.setCursor(0, 11 + 13 * line);
        if ((Batt[line + (p_num-1) * 5] > GW1) && (Batt[line + (p_num-1) * 5] < GW2)) {
          Bout = text1;
        } else {
          Bout = text2;
        }
        BattAus = "Batt. " + String(line + (p_num-1) * 5) + "=" + String(Batt[line + (p_num-1) * 5]) + "V " + Bout;
        u8g2.print( BattAus);
      }
  }
}

Ich habe mal das ganze copy paste entfernt. Hier mal für 10 Batterien