Probleme mit Geigerzähler Sketch

Hallo Leute,
ich habe ein kleines Problem. Ich möchte gerne die Kompletten Counts Auf meinem Display angezeigt bekommen, sowie Duchschnittliche Counts Pro Minute seit Programmstart und eine Zeit, die Nach Start einfach hochzählt.

Da mein Counter alle 10Sek die Counts zahlt und zu uSv/h unrechnet, bekomme ich auch nur meine Gewünschten Ausgaben alle 10Sek angezeigt bzw aktualisiert.

Ich probiere jetzt schon 3Tage daran herum und komme auf keinen richtigen nenner.
Hier mein Funtionierender Sketch ohne die Gewünschten Zusatzfunktionen:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,20,4);  // Stellt das LCD auf die Adresse 0x3F diese steht für 20 Zeichen und 4 Linien

#define CONV_FACTOR 0.00812    // Conversion Factor - CPM zu uSV/h

// Variables
int geiger_input = 2;
long count = 0;
long countPerMinute = 0;
long timePrevious = 0;
long timePreviousMeassure = 0;
long time = 0;
long countPrevious = 0;
float radiationValue = 0.0;

void setup(){
  pinMode(geiger_input, INPUT);
  digitalWrite(geiger_input,HIGH);
  for (int i=0;i<5;i++){
    
  }

  Serial.begin(9600);

  // LCD Setup für die einzelnen Reihen und Reihenanfänge
  lcd.init();                      // LCD wird initialisiert
  lcd.backlight();
  lcd.clear();  
  lcd.setCursor(0, 0);
  lcd.print("CPM=");
  lcd.setCursor(4,0);
  lcd.print(6*count);
  lcd.setCursor(0,1);
  lcd.print(radiationValue);
  lcd.setCursor(3,3);
  lcd.print("Radioactivity");

  attachInterrupt(0,countPulse,FALLING);

}

void loop(){
  

  
  if (millis()-timePreviousMeassure > 10000){           //15000 Millisekunden sind 15 Sekunden = Die Zeit wo gezählt wird
    countPerMinute = 6*count;                           //Das ganze mal 4 ergibt hochgerechnet die Count`s pro Minute
    radiationValue = countPerMinute * CONV_FACTOR;      //Hier wird Multiplizier mal den Faktor für uSv/h
    timePreviousMeassure = millis();
    Serial.print("cpm = "); 
    Serial.print(countPerMinute,DEC);
    Serial.print(" - ");
    Serial.print("uSv/h = ");
    Serial.println(radiationValue,4);      
    lcd.clear();    
    lcd.setCursor(0, 0);
    lcd.print("CPM=");
    lcd.setCursor(4,0);
    lcd.print(countPerMinute);
    lcd.setCursor(0,1);
    lcd.print(radiationValue,4);
    lcd.setCursor(6,1);
    lcd.print(" uSv/h");
    lcd.setCursor(3,3);
  lcd.print("Radioactivity");

   

    count = 0;

  }

}

void countPulse(){
  detachInterrupt(0);
  count++;
  while(digitalRead(2)==0){
  }
  attachInterrupt(0,countPulse,FALLING);
}

Ich möchte gerne die Kompletten Counts Auf meinem Display angezeigt bekommen, sowie Duchschnittliche Counts Pro Minute seit Programmstart und eine Zeit, die Nach Start einfach hochzählt.

Was sind die "kompletten Counts"? Akkumuliert alle Counts seit dem Einschalten? Du kannst einfach eine Variable akcount definieren und jedes Mal, wenn count auf Null gesetzt wird, vorher noch schnell diese Variable um den alten Inhalt erhöhen. Die durchschnittlichen Counts sind dann diese Variable mal 60000 geteilt durch millis() (Achtung: der Berechnungstyp muss die Zahlen fassen können). Die Zeit hast Du in millis().

Thrillhouse:
Hier mein Funtionierender Sketch ohne die Gewünschten Zusatzfunktionen:

Dein "funktionierender Sketch" weist ein katastrophales Interrupt-Handling auf.

Insbesondere bei hohen Zählraten besteht eine hohe Gefahr falscher/abweichender Anzeigewerte.

Du rechnest nicht damit, dass Dein Zähler jemals hohe Zählraten ganz korrekt und fehlerfrei anzeigen muss?

Und wenn es hohe Zählraten auf Deinem Geigerzähler gibt, dann ist es wahrscheinlich Dein geringstes Problem, wenn es in der LCD-Anzeige gelegentlich zu falsch angezeigten Werten kommt?

In dem Fall kannst Du das Interrupt-Handling so lassen wie es ist.

Ich persönlich würde mir jedenfalls erstmal über eine korrekte Erfassung der Daten Gedanken machen, bevor ich die LCD-Anzeige um weitere Anzeigeoptionen aufbohre.

Im übrigen steht Dir "eine Zeit, die Nach Start einfach hochzählt" in Form der Funktion "millis()" zur Verfügung, die Dir die Anzahl der Millisekunden seit Programmstart zurückliefert (bis der Zähler nach knapp 50 Tagen überläuft).