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 6032 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…
  • 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
  • Former Member
    Former Member over 12 years ago

    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! image Seriously though, I just wish I could one day be as helpful as you two are, I am still trying to figure the whole IDE language and there are a plethora of books out there. I am super lost as to where to start. Bah!

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • billabott
    billabott over 12 years ago in reply to Former Member
    [deleted]
    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • shabaz
    shabaz over 12 years ago in reply to billabott

    billabott wrote:

     

    Well, I can tell you and everyone else that the place to start is here: http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=la_B000AQ1TNQ_1_1?ie=UTF8&qid=1364699822&sr=1-1

     

    It's such a great book. Ultra-concise and to the point. And although it is expensive compared to others, it holds it's value well and you can always sell it if you ever decide you don't need it.

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

    Excellent references, billabott!

     

    Which reminds me...

     

    For those who don't want to spend money, there are also free resources available online:

    Like this C guide from Stanford: http://cslibrary.stanford.edu/101/EssentialC.pdf

     

    For free online courses from Stanford, with videos and assignments (full courses, but no credits given)...

     

    "C language and programming experience at the level of 106B": https://itunes.apple.com/ca/course/programming-abstractions/id495054099

     

    The prerequisite for that course is:   "Programming Methodology": https://itunes.apple.com/ca/course/programming-methodology/id495054181

     

    That course doesn't have prerequisites, "but does require considerable dedication and hard work."

     

    Cheers,

    -Nico

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

    Hi there Billabott, I think one of the main reasons so many people have "ignored" the free documentation within the IDE. Or rather, have so much difficulty reading and understanding the free documentation that is provided, is the fact that the examples are somewhat scarce and just reading code can be quite confusing and gives many people the feeling of total isolation as to where to begin. I was somewhat apprehensive to ask a question anywhere on this site since most people seem to be extremely knowledgable and versed in the topics, and that they are somewhat complacent to how they begun reading lines and lines of code. They forgot how difficult it was to pick apart the code that they need vrs. the code that isn't needed therby wasting time and efficiency, not to mention brain power, to complete any project they embark on. Which tends to lead them to be crude and lacking a deft social touch. I don't mean to offend or be pessimistic but it is one thing if I asked a question on this site whilst holding any sort of degree or certification in C programming language and the likes, as opposed to a greenhorn just learning the language. I guess the best and most disarming analogy I can use is language in and of itself. Any language be it English, German, French, Japanese, or any of the languages used in the world today cannot just be looked upon by someone then spoken to the utmost fluency. To learn any language, first there must be a need to start somewhere and begin implementing a foundation from which to build upon. So you would start out leraning the alphabets, root words, pronunciation, verbs vrs. nouns, and how to form setences that is grammatically relevant to the native countries' language. So the same idea can be applied to C, no one can expect to see the lines of code and expect that there can be a authoritarian understanding of the language. It is human nature to delve deeper than just words and symbols to garner a deeper understanding of anything we are learning. Also, since I am a greenhorn I have used the reference site countless times trying to understand and put what I have read into logical reasoning as well as read three other books but to no avail in composing a code do to what I am looking for. I do thank you for your input but I don't appreciate someone assuming that I have done nothing to further my knowledge and try to hint at my classification as being lazy. There is a saying about assumptions but I feel that it is counter-intuitive to post on this site. Well, thank you all anyway for trying to lead me in the right direction, and I will look up this book so that I won't bog the site down with greenhorn questions. Thanks again for your time and consideration!

    -Jeder tut's auf seine Weise

    • Cancel
    • Vote Up 0 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
>
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