Below is a class I created to blink multiple LEDs at independent blink rates. This code below is the initial test of the class and shows you how to go about building a class of your own but you can save a lot of typing by downloading the library from Github using the following link:
led class code library
Just download led.cpp and led.h and put them in a library folder (call it led) where the Arduino libraries are located.
The code sample program is self explanintory. Just create an LED object using the following:
LED LED1 = LED(3); where 3 is the pin number you want to hook to the LED.
LED1.blink(100); Sets the blink rate of the LED to 100 milliseconds.
LED1.on(); Turns on the LED
LED1.off(); Turns off the LED
LED1.status(); Returns the status of the LED on or off
Have fun.
LED class and test of class ----------------------------------------------------------
class LED
{
public:
LED(int pin);
void on();
void off();
bool status();
void blink(int delayTime);
private:
int _pin;
bool _status;
int _delayTime;
int _rate;
unsigned long previousMillis = millis();
};
LED::LED(int pin)
{
_pin = pin;
pinMode(_pin,OUTPUT);
}
void LED::on()
{
digitalWrite(_pin, HIGH);
_status = 1;
}
void LED::off()
{
digitalWrite(_pin, LOW);
_status = 0;}
bool LED::status()
{
return _status;
}
void LED::blink(int delayTime)
{
_delayTime = delayTime;
if (millis() - previousMillis >= _delayTime) //if current system time - last time is greater then desired delay then make last system
// equal to current system time
{
previousMillis = millis();
if (_status == 0)
{
on();
}
else
{
off();
}
}
}
//Test of class --------------------
LED LED1 = LED(3);
LED LED2 = LED(4);
LED LED3 = LED(2);
void setup()
{
}
void loop()
{
LED1.blink(100);
LED2.blink(1000);
LED3.blink(500);
}