/* -------------------------------------------------------- eventsources.h Header Ereignisquellen (event-sources) fuer ein event- basierendes System in Arduino OHNE Verwendung von Interrupts 09.05.2026 R. Seelig -------------------------------------------------------- */ #ifndef EVENTSOURCES_H #define EVENTSOURCES_H #include /* ---------------------------------------------------------------------- TIMERADC Klasse ---------------------------------------------------------------------- */ class TIMERADC { private: uint32_t starttime; uint8_t adcpin; uint8_t event; uint16_t minvalue; uint16_t adcdiv; public: TIMERADC(uint8_t pin, uint8_t tevent); void begin(void); void setstarttime(void); int getadcmillis(void); uint8_t getstate(void); void setminvalue(uint16_t value); void setadcdiv(uint16_t value); }; /* ---------------------------------------------------------------------- TIMERSOFT Klasse ---------------------------------------------------------------------- */ class TIMERSOFT { private: uint32_t starttime; uint16_t overflow; uint8_t event; public: TIMERSOFT(uint16_t ovf, uint8_t tevent); void setstarttime(void); uint8_t getstate(void); void setoverflow(uint16_t ovf); }; /* ---------------------------------------------------------------------- GPIOCHANGE Klasse ---------------------------------------------------------------------- */ class GPIOCHANGE { private: uint8_t iopin; uint8_t state; uint8_t event; public: GPIOCHANGE(uint8_t gpiopin, uint8_t tevent); uint8_t read(void); uint8_t getChange(void); uint8_t getState(void); void begin(void); }; /* ---------------------------------------------------------------------- SYSTICKER Klasse ---------------------------------------------------------------------- */ class SYSTICKER { public: SYSTICKER(uint8_t tevent); void update(); uint8_t getstate(); uint32_t seconds; uint8_t secondsflag; private: uint32_t lastmillis; uint32_t remainder; uint8_t event; }; /* ---------------------------------------------------------------------- DATETIME Klasse ---------------------------------------------------------------------- */ class DATETIME { public: uint16_t year; uint8_t month; uint8_t day; uint8_t hour; uint8_t minute; uint8_t second; uint32_t stamp; DATETIME(uint8_t tevent); void stamp2date(void); void date2stamp(void); char getwtag(void); private: static constexpr uint16_t yearofs = 1970; static constexpr uint8_t secPerMin = 60; static constexpr uint16_t secPerHour = 3600; static constexpr uint32_t secPerDay = 86400UL; static constexpr uint32_t secPerYear = secPerDay * 365; uint8_t event; uint8_t isschaltjahr(int year); uint8_t monthlen(int year, uint8_t month); }; #endif