element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum Arduino - multiple LEDs with different delays
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Suggested Answer
  • Replies 8 replies
  • Answers 5 answers
  • Subscribers 404 subscribers
  • Views 4266 views
  • Users 0 members are here
Related

Arduino - multiple LEDs with different delays

Former Member
Former Member over 12 years ago

Hi all

I'm trying to write code to get 3 LEDs flashing independently, each with a different ON and OFF period.

For example:

LED1: ON for 25 ms, OFF for 500 ms

LED2: ON for 50 ms, OFF for 800 ms

LED3: ON fo 100 ms, OFF for 300 ms

 

 

So far I have set up the hardware: 3 LEDs on digital pins 6, 7 and 8 using my Arduino UNO board and a breadboard.

 

 

Code-wise I understand that I can't use the "delay" function because it causes the whole system to delay i.e. causes 'blocking'. At the moment I'm using the millis() function. My problem is that at the moment my code causes LED1 to turn ON for 25 ms and off for 25 ms, LED2 turns ON for 50 ms and off for 50 ms etc. So I need to somehow alter the OFF period independently.

 

 

In summary: I need a new approach or an alteration to my code to be able to independently change the ON and OFF periods for each of my LEDs independently.

 

 

Here is my code so far:

[code]

 

 

// Which pins are connected to which LED

const byte LED1 = 6;

const byte LED2 = 7;

const byte LED3 = 8;

 

 

// Assigning delays.

const unsigned long LED1_interval = 25;

const unsigned long LED2_interval = 50;

const unsigned long LED3_interval = 100;

 

 

// Declaring the variables holding the timer values for each LED.

unsigned long LED1_timer;

unsigned long LED2_timer;

unsigned long LED3_timer;

 

 

// Setting 3 digital pins as output pins and resetting timer

void setup ()

  {

  pinMode (LED1, OUTPUT);

  pinMode (LED2, OUTPUT);

  pinMode (LED3, OUTPUT);

  LED1_timer = millis ();

  LED2_timer = millis ();

  LED3_timer = millis ();

  }  // end of setup

 

 

//LED1 loop that turns it ON if it is OFF and vice versa

void toggle_LED1 ()

  {

   if (digitalRead (LED1) == LOW)

      digitalWrite (LED1, HIGH);

   else

      digitalWrite (LED1, LOW);

 

 

  // remember when we toggled it

  LED1_timer = millis (); 

  }  // end of toggleLED_1

 

 

//LED2 loop

void toggle_LED2 ()

  {

   if (digitalRead (LED2) == LOW)

      digitalWrite (LED2, HIGH);

   else

      digitalWrite (LED2, LOW);

 

 

  // remember when we toggled it

  LED2_timer = millis (); 

  }  // end of toggle_LED2

 

  //LED 3 loop

void toggle_LED3 ()

  {

   if (digitalRead (LED3) == LOW)

      digitalWrite (LED3, HIGH);

   else

      digitalWrite (LED3, LOW);

 

 

  // remember when we toggled it

  LED3_timer = millis (); 

  }  // end of toggle_LED3

 

 

void loop ()

  {

 

 

  // Handling the blink of LED1.

  if ( (millis () - LED1_timer) >= LED1_interval)

     toggle_LED1 ();

 

 

  // Handling the blink of LED2.

  if ( (millis () - LED2_timer) >= LED2_interval)

    toggle_LED2 ();

   

// Handling the blink of LED3.

  if ( (millis () - LED3_timer) >= LED3_interval)

    toggle_LED3 ();

   

/* Other code that needs to execute goes here.

   It will be called many thousand times per second because the above code

   does not wait for the LED blink interval to finish. */

 

 

}  // end of loop

[/code]

 

 

Any help would be greatly appreciated because I'm [b]very[/b] new to this!

 

 

Thanks!

  • Sign in to reply
  • Cancel

Top Replies

  • billabott
    billabott over 12 years ago +1 suggested
    Most Arduino boards have two external interrupts: numbers 0 (on digital pin 2) and 1 (on digital pin 3). Official Arduino.cc Example int pin = 13 ; volatile int state = LOW ; void setup ( ) { pinMode …
Parents
  • nona96
    0 nona96 over 6 years ago

    why don't you try the code in the examples of arduino . i guess you might get it right there.Also youtube will bring great help to you.hope this informative is helpful.u may try all the solution from the tread,it is quite helpful.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • nona96
    0 nona96 over 6 years ago

    why don't you try the code in the examples of arduino . i guess you might get it right there.Also youtube will bring great help to you.hope this informative is helpful.u may try all the solution from the tread,it is quite helpful.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube