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);
}