mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
77 lines
2.0 KiB
C++
77 lines
2.0 KiB
C++
#pragma once
|
|
//
|
|
// FILE: timing.h
|
|
// AUTHOR: Rob Tillaart
|
|
// VERSION: 0.2.6
|
|
// PURPOSE: Arduino library with wrapper classes for seconds millis micros
|
|
// URL: https://github.com/RobTillaart/timing
|
|
|
|
|
|
#define TIMING_LIB_VERSION (F("0.2.6"))
|
|
|
|
|
|
class microSeconds
|
|
{
|
|
public:
|
|
microSeconds() { set(0); };
|
|
uint32_t now() { return micros() - _offset; };
|
|
void set(uint32_t value = 0UL) { _offset = micros() - value; };
|
|
void add(uint32_t value) { _offset -= value; };
|
|
uint32_t getOffset() { return _offset; };
|
|
double toSeconds() { return (millis() - _offset) * 0.000001; };
|
|
|
|
private:
|
|
uint32_t _offset = 0UL;
|
|
};
|
|
|
|
|
|
class milliSeconds
|
|
{
|
|
public:
|
|
milliSeconds() { set(0); };
|
|
uint32_t now() { return millis() - _offset; };
|
|
void set(uint32_t value = 0UL) { _offset = millis() - value; };
|
|
void add(uint32_t value) { _offset -= value; };
|
|
uint32_t getOffset() { return _offset; };
|
|
double toSeconds() { return (millis() - _offset) * 0.001; };
|
|
|
|
private:
|
|
uint32_t _offset = 0UL;
|
|
};
|
|
|
|
|
|
class seconds
|
|
{
|
|
public:
|
|
seconds() { set(0); };
|
|
uint32_t now() { return millis() / 1000UL - _offset; };
|
|
void set(uint32_t value = 0UL) { _offset = millis() / 1000UL - value; };
|
|
void add(uint32_t value) { _offset -= value; };
|
|
uint32_t getOffset() { return _offset; };
|
|
// for completeness
|
|
double toSeconds() { return millis() * 0.001 - _offset; };
|
|
|
|
// experimental
|
|
// does not include days (beyond 99 hrs)
|
|
char * toClock()
|
|
{
|
|
static char buf[12];
|
|
uint32_t _now = now();
|
|
int hh = _now / 3600;
|
|
_now = _now - hh * 3600;
|
|
int mm = _now / 60;
|
|
int ss = _now - mm * 60;
|
|
// ESP32 warning breaks Arduino build. next line.
|
|
sprintf(buf, "%02d:%02d:%02d", hh, mm, ss);
|
|
return buf;
|
|
}
|
|
|
|
|
|
private:
|
|
uint32_t _offset = 0UL;
|
|
};
|
|
|
|
|
|
// -- END OF FILE --
|
|
|