Saturday, August 20, 2016

LED class with blink method



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);
}

No comments:

Post a Comment