You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.3 KiB
C++

#ifndef __TIMED_PIN__H__
#define __TIMED_PIN__H__
#include <Arduino.h>
enum TPinModes {
TPM_OFF, // permanent on
TPM_ON, // permanent off
TPM_BLINK, // blink
TPM_TIMED_ON, // timed on, then off permanently
TPM_TIMED_OFF // timed off, then on permanently
};
class TimedPin {
private:
uint8_t PinId; /// pin number (assignment on board)
TPinModes TPinMode; /// current working mode
bool PinState; /// current state of pin
bool PinInvert; /// pin configuration (normal:on=HIGH, inverted:on=LOW)
uint32_t RefTime; /// time of start or state change
uint32_t OnTime; /// on time duration
uint32_t OffTime; /// off time duration
uint16_t CycleCnt; /// count of cycles at blink (0=non stop)
void PinOn(); /// set pin to "on" (internal function)
void PinOff(); /// set pin to "off" (internal function)
public:
TimedPin();
TimedPin(uint8_t pin, bool inverted = false);
void begin();
void update();
void Blink(uint32_t t_on, uint32_t t_off, uint16_t cycles = 0);
void Blink(uint32_t t) { Blink(t, t); }
void BlinkCycles(uint32_t t_on, uint32_t t_off, uint16_t cycles) { Blink(t_on, t_off, cycles); };
void Off();
void OffTimed(uint32_t t);
void On();
void OnTimed(uint32_t t);
void Set(bool val) { if (val) On(); else Off(); };
};
#endif