Motorradtacho mit Arduino nano // Hilfe benötigt

Hallo Kollegen,
sorry aber ich muss den Thread nochmal aufwärmen, da ich hier einfach nicht weiterkomme.
Ich habe meinen Sketch auf ein (kompilierendes) Minimum runtergestrickt; den Fehler "provoziere" ich in der Setup() Routine.
Hier übergebe ich 5 Werte an Runningaverage und lese anschließend den Mittelwert aus. Nach wievor bekomme ich "nan" als Rückgabewert.
Allerdings wird das Problem gelöst, wenn ich:

  • getKilometerstand() auskommentiere ODER
  • draw() auskommentiere ODER
  • OneButton.h inkl. aller Aufrufe entferne ODER
  • das Display inkl. u8g2 entferne ODER
  • die RTC entferne

Eine dieser Aktionen reicht!!! Das macht doch alles keinen Sinn.
Wie kann eine Funktion in void setup() von später aufgerufenen Funktionen beeinflusst werden? Zumal diese Funktionen nichts mit RunningAverage zu tun haben?

ARGH!!!! :o

#include <EEPROM.h>
#include <RunningAverage.h>
#include "OneButton.h"
#include <U8g2lib.h>
#include "RTClib.h"

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ 16, /* data=*/ 17);   // ESP32 Thing, HW I2C with pin remapping
RTC_DS3231 rtc;

RunningAverage myRA(5);
short VAnzeige;
const int buttonPin = 4;
OneButton button(buttonPin, true);
char Speed[10];

unsigned long GesamtMeter;
unsigned long TripMillimeter;
int GesamtMeter_ADDR = 0;
int TripMillimeter_ADDR = GesamtMeter_ADDR + 4;
char TripKm[10];
char GesamtKm[10];

void setup()   {
  Serial.begin(9600);      // open the serial port at 9600 bps:
   
  myRA.clear();
  Serial.println("5 Werte werden übergeben");
  myRA.addValue(5);
  myRA.addValue(100);
  myRA.addValue(20);
  myRA.addValue(30);
  myRA.addValue(77);
  Serial.println(myRA.getAverage());  

  getKilometerstand();                                   //gespeicherten Tachostand abrufen (eeprom-adresse mit höchstem Zählerstand suchen) 

}

void loop() {                   
  u8g2.clearBuffer();
  draw();      
  u8g2.sendBuffer();
}


void draw() {  
  DateTime now = rtc.now();
  int hunderter = (TripMillimeter / 100000) % 10;
  int tausender = TripMillimeter / 1000000;
  sprintf(GesamtKm, "%6ldkm", GesamtMeter/1000); 
  sprintf(TripKm, "%5d.%dkm", tausender, hunderter); 
  sprintf(Speed, "%3d", VAnzeige); 
  }

void getKilometerstand(){      
  EEPROM.get(GesamtMeter_ADDR, GesamtMeter);    
  EEPROM.get(TripMillimeter_ADDR, TripMillimeter);
  Serial.println("########");
  Serial.println("gefundener Kilometerstand:");      
  Serial.println(GesamtMeter);
}