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 trying to get an LED to come on for 3 seconds and come off without delay
  • 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
  • Replies 29 replies
  • Subscribers 405 subscribers
  • Views 6043 views
  • Users 0 members are here
  • arduino_code
Related

trying to get an LED to come on for 3 seconds and come off without delay

Former Member
Former Member over 12 years ago

hey guys i'm just trying to get an led to come on for 3 seconds and then comeoff, without using delay, i'm not understanding the millis function but i've tried a bit. kindly let me know what i'm doing wrong. thank you.

 

int count = 0;
long previousMillis = 0;        




long interval = 3000;           


void setup() {
  // set the digital pin as output:
  pinMode(ledPin, OUTPUT);    
  
}


void loop()
{
  
  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis > interval) {
    
    previousMillis = currentMillis;   


     if (count <=1)
      digitalWrite(ledPin,HIGH);
    else
      digitalWrite(ledPin,LOW);
count ++;
    
    
  }
}

  • Sign in to reply
  • Cancel

Top Replies

  • billabott
    billabott over 12 years ago in reply to phoenixcomm +2
    Interesting insight Cris H. Unfortunately, your code does not plug into the 'Duino IDE too well. So, I took some time to create my own completely commented version which I now make available to everyone…
  • ntewinkel
    ntewinkel over 12 years ago in reply to Former Member +1
    To have red and green alternating on, you basically copy the lines of code that turn the ledpin high and low and set opposite values for the other LED. ie, when you turn the red led on, at that time you…
  • Former Member
    Former Member over 12 years ago +1
    Thank you Navin and Nico I will definately try out the two versions! You guys are awesome and I will give you 50 cool points each! Seriously though, I just wish I could one day be as helpful as you two…
Parents
  • ntewinkel
    ntewinkel over 12 years ago

    It looks like the led will only be on for 6 secs and then stays off.

    If you replace

      Count <= 1

    With

      count % 2 == 0

     

    Then it will be on for even counts and off for odd counts.

     

    (% is modulo, aka remainders of division)

     

    Hope that helps :)

     

    Ps maybe make previousMillis unsigned to match.

     

    Cheers,

    Nico

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 12 years ago in reply to ntewinkel

    Hi Nico, how would you write the code if you want to have a red led on for the even counts and a green led for the odd counts? I'm very new to programming and tried to use blink twice and switch the number on the led, then I tried to use switch case, then I tried to set a parameter where it will read the ouput and try to switch the led (like how a pushbutton would change the led from off to on described in Getting Started with Arduino by Massimo Banzi pgs. 55-64) but I have not had any progress. Am I wrong for thinking that programming would replace a switch? Well I thank the both of you for discussing this since it is somewhat similar to my problem and Navin gave me an idea to search for the Millis function!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 12 years ago in reply to Former Member

    for the even it would be %2==0 and for off %2==1,, %2 will divide by 2 giving the remainder, therefore if its even you will get = 0 and odd will be =1. I am not an expert but i'd just use an if else statement, like mmm,

    if(count%2==0)

    {

    digitalWrite(led,HIGH);

    }

    else

    digitalWrite(led,LOW);

     

     

     

    and of course you'll have a counter.try your best not to use delay, if causes problems if you need to read inputs during the time it delays, since it literally pauses the entire program. Theres a timer library, search arduino timer library, it has oscillate and pulse and so on, not sure if thats what you're looking for.

     

    http://playground.arduino.cc/code/timer

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • ntewinkel
    ntewinkel over 12 years ago in reply to Former Member

    To have red and green alternating on, you basically copy the lines of code that turn the ledpin high and low and set opposite values for the other LED.

    ie, when you turn the red led on, at that time you would turn the green led off. And when you turn the red led off, you turn the green led on.

     

    if(count%2==0)

    {

    digitalWrite(redLed,HIGH);

    digitalWrite(greenLed,LOW);

    }

    else {

    digitalWrite(redLed,LOW);

    digitalWrite(greenLed,HIGH);

    }

     

    You'd have to define and setup redLed and greenLed, of course, just like you did for ledpin.

     

    And you are correct - you can use programming instead of a physical switch, or instead of pretty much any input.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • billabott
    billabott over 12 years ago in reply to ntewinkel

    Nico teWinkel wrote:

    .

    ie, when you turn the red led on, at that time you would turn the green led off. And when you turn the red led off, you turn the green led on.

     

    Just remember what Steve Ciarcia always said about designing in hardware verses software.  It is always a choice.

     

    One digital pin and 2 leds with current limiting ( I <= 20 mA ) resistors.  Polarity inverted for one of the LED legs and connected to the opposite rail.

     

    http://playground.arduino.cc/Main/ArduinoPinCurrentLimitations

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • billabott
    billabott over 12 years ago in reply to ntewinkel

    Nico teWinkel wrote:

    .

    ie, when you turn the red led on, at that time you would turn the green led off. And when you turn the red led off, you turn the green led on.

     

    Just remember what Steve Ciarcia always said about designing in hardware verses software.  It is always a choice.

     

    One digital pin and 2 leds with current limiting ( I <= 20 mA ) resistors.  Polarity inverted for one of the LED legs and connected to the opposite rail.

     

    http://playground.arduino.cc/Main/ArduinoPinCurrentLimitations

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
Children
  • ntewinkel
    ntewinkel over 12 years ago in reply to billabott

    That's a much better approach, billabott!

    Can you tell I'm a software guy? image

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
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