mirror of
https://github.com/grillbaer/esp32-geiger-counter.git
synced 2025-12-21 13:23:15 +01:00
38 lines
944 B
C++
38 lines
944 B
C++
#ifndef GEIGERDATA_H_
|
||
#define GEIGERDATA_H_
|
||
|
||
#include "Arduino.h"
|
||
|
||
// Russion STS-6 ("CTC-6") Geiger tube:
|
||
// N = (2.28–3.42)*10^3 at 0.36 µR/h; Nmax = 6*10^4; Nf = 110
|
||
const float STS6_CPM_PER_USPH = 875;
|
||
|
||
// Holds pulse counter history and performs calculations
|
||
class GeigerData {
|
||
public:
|
||
const uint16_t sampleCount;
|
||
const uint16_t sampleSeconds;
|
||
const float cpm_per_uSph;
|
||
|
||
private:
|
||
uint16_t currentSample;
|
||
uint16_t *pulsesPerSample;
|
||
uint16_t next(uint16_t index);
|
||
uint16_t prev(uint16_t index);
|
||
|
||
public:
|
||
|
||
GeigerData(uint16_t sampleCount, uint16_t sampleSeconds,
|
||
float cpm_per_uSph);
|
||
virtual ~GeigerData();
|
||
|
||
virtual void addPulses(uint16_t pulses);
|
||
virtual void nextSample();
|
||
|
||
virtual uint16_t getCurrentSample();
|
||
virtual uint32_t getPreviousPulses(uint16_t offset, uint16_t samples);
|
||
virtual float toMicroSievertPerHour(uint32_t pulses, uint16_t samples);
|
||
};
|
||
|
||
#endif /* GEIGERDATA_H_ */
|