@@ -38,6 +38,7 @@ ezOutput::ezOutput(int pin) {
3838
3939 _highTime = 0 ;
4040 _lowTime = 0 ;
41+ _blinkTimes = -1 ;
4142 _lastBlinkTime = 0 ;
4243
4344 pinMode (_outputPin, OUTPUT);
@@ -61,19 +62,24 @@ void ezOutput::toggle(void) {
6162 digitalWrite (_outputPin, _outputState);
6263}
6364
64- void ezOutput::blink (unsigned long lowTime, unsigned long highTime, unsigned long startTime) {
65- _highTime = highTime;
66- _lowTime = lowTime;
67- _startTime = startTime;
65+ void ezOutput::blink (unsigned long lowTime, unsigned long highTime, unsigned long startTime, long blinkTimes) {
66+ _highTime = highTime;
67+ _lowTime = lowTime;
68+ _startTime = startTime;
69+ _blinkTimes = blinkTimes;
6870
6971 if (_blinkState == BLINK_STATE_DISABLE) {
7072 _blinkState = BLINK_STATE_DELAY;
7173 _lastBlinkTime = millis ();
7274 }
7375}
7476
77+ void ezOutput::blink (unsigned long lowTime, unsigned long highTime, unsigned long startTime) {
78+ blink (lowTime, highTime, startTime, -1 );
79+ }
80+
7581void ezOutput::blink (unsigned long lowTime, unsigned long highTime) {
76- blink (lowTime, highTime, 0 );
82+ blink (lowTime, highTime, 0 , - 1 );
7783}
7884
7985int ezOutput::getState (void ) {
@@ -83,6 +89,9 @@ int ezOutput::getState(void) {
8389void ezOutput::loop (void ) {
8490 bool isBlink = false ;
8591
92+ if (_blinkTimes == 0 )
93+ _blinkState = BLINK_STATE_DISABLE;
94+
8695 switch (_blinkState) {
8796 case BLINK_STATE_DISABLE:
8897 return ;
@@ -112,6 +121,9 @@ void ezOutput::loop(void) {
112121 _outputState = (_outputState == LOW) ? HIGH : LOW;
113122 digitalWrite (_outputPin, _outputState);
114123 _lastBlinkTime = millis ();
124+
125+ if (_blinkTimes > 0 )
126+ _blinkTimes--;
115127 }
116128}
117129
0 commit comments