Hi Ash,
See if this is helpful for you...
Cheers,
John
class Blinker{
public:
Blinker(int pin)
{
pinMode(pin,OUTPUT);
_pin=pin;
state=0;
delayms = 100;
}
void loop()
{
long now = millis();
switch(state)
{
case 0:
digitalWrite(_pin,HIGH);
timer=now;
state = 1;
break;
case 1:
if (now-timer>=delayms)
{
state=2;
}
break;
case 2:
digitalWrite(_pin,LOW);
timer=now;
state=3;
break;
case 3:
if (now-timer>=delayms)
{
state=0;
}
}
}
void setDelayMs(long dms){ delayms=dms; }
private:
unsigned long timer;
int pin;
int _pin;
int state;
long delayms;
};
Blinker led1(13); // pin 13
Blinker led2(11); // pin 11
void setup()
{
led2.setDelayMs(250); // led2 will be constant at 2 cycles per second
}
void loop()
{
// make led1 speed up over the course of 30 seconds
long delay = 1000 - (millis()/1000)%30 * 30;
led1.setDelayMs(delay);
led1.loop();
led2.loop();
}