Doing multiple timed things with Arduino: Unleash the millis()!

  Рет қаралды 125,003

Programming Electronics Academy

Programming Electronics Academy

Күн бұрын

Пікірлер: 207
@madscientist1595
@madscientist1595 3 жыл бұрын
This what you call High Quality Video.
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Thank you!
@AbdullahKhan-ud9pg
@AbdullahKhan-ud9pg Ай бұрын
Hey ive watched this series from part 1-6 and as someone with no prior coding experience, having to learn arduino and coding in a relatively short period of time for university has been quite challenging. I have an upcoming assessment where millis are crucial to the code so these videos were extremely helpful and I cant thank you enough!
@programmingelectronics
@programmingelectronics Ай бұрын
Great to hear!
@dericktharp5796
@dericktharp5796 5 жыл бұрын
Really like your videos!! My 12 yr. old and I are learning together. My goal is to totally automate a greenhouse using Arduino. This video is exactly what we need.
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Sounds like a cool project! It's great you and your son are learning it together.
@timwhite7127
@timwhite7127 9 ай бұрын
I couldn't have said it better.@@programmingelectronics
@tunckuyel
@tunckuyel 4 жыл бұрын
Man this millis series of you saves my life. Thanks a lot.
@programmingelectronics
@programmingelectronics 4 жыл бұрын
Glad it was helpful!
@anakie9660
@anakie9660 2 жыл бұрын
the only person that explained millis the right way...thanks bro
@programmingelectronics
@programmingelectronics 2 жыл бұрын
I appreciate that Anakie!
@tonntoh8829
@tonntoh8829 Ай бұрын
Hi, I´d like to say how much great and important is this playlist to understanding millis function. I´ve been learning millis from excellent videos in Portuguese, Spanish and English, actually I've already watch the last two videos from this playlist weeks ago(maybe months), but only now after watch all the videos from this amazing and F. (funny) playlist I can say that I understand millis. Finally I can drink enjoying an amazing sunset knowing I understand the tensile strength of a rubber band, the Mayan calendar, the intimacy between space- time and black holes while my soul floats through ancient music. Thank You!
@programmingelectronics
@programmingelectronics Ай бұрын
So glad it helped!
@Mike40M
@Mike40M 10 ай бұрын
Got my first Arduino yesterday. Thought it could be fun to play with a fairly modern system. A lot to learn. Made embedded real time multiprocessor systems decades ago. Both hardware and software, Intel 4040, 8051 8085, 80188. and Z80. Assembly & high level languages like PL/M and Modula-2. This video made it clear how to structure a small stepper motor project.
@programmingelectronics
@programmingelectronics 10 ай бұрын
Thanks for the note! I hope you have fun!
@jesus2639
@jesus2639 5 жыл бұрын
You're the hero we need.
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks James ;)
@blinkanddie3397
@blinkanddie3397 2 жыл бұрын
Dude I would never have figured this out without you.. thank you
@programmingelectronics
@programmingelectronics 2 жыл бұрын
Awesome! I'm glad it helped!
@nevillesterling2480
@nevillesterling2480 4 жыл бұрын
best millis explanation on tintanet understood instanly,, total new to arduino, never done any code, now ive got 6 led running without delay ... thks
@thebeanberas9564
@thebeanberas9564 3 жыл бұрын
Thank you so much. I’m working on a walking 4 legged robot and I didn’t want to use the delay function. This video saved my butt.
@programmingelectronics
@programmingelectronics 3 жыл бұрын
cool application - best of luck on our robot!
@johndee7603
@johndee7603 3 жыл бұрын
This has to be best described video tutorial I have seen on almost any topic, very clear descriptions and well thought out content. First time visiting and cant wait to learn more from this channel.
@ianbertenshaw4350
@ianbertenshaw4350 3 жыл бұрын
Just what I was looking for ! I needed to slow down the up and down increment of the set rpm programme on an Arduino that uses a touchscreen display without using the despicable delay function , managed to slot this into one of the if statements inside aviod ReadControls function - works a treat and as this programme is interrupt based ( rpm sensor ) the delay is a big no no . 100 milliseconds did the trick . Thank you !
@programmingelectronics
@programmingelectronics 3 жыл бұрын
So glad it helped!
@redhaali6847
@redhaali6847 2 жыл бұрын
thank you very much That was very helpful and clear I was struggling to understand the mills function until I saw your videos thanks
@programmingelectronics
@programmingelectronics 2 жыл бұрын
Glad it helped - thanks so much for watching! Timing can be confusing as all get out and it's not always easy to think through, let alone code.
@alejandroperez5368
@alejandroperez5368 5 жыл бұрын
If you have 2 events like on this example, but the first one takes a considerable time to execute, because there are many instructions in between, I guess updating the currentTime variable with the newer mills value wouldn't harm and it's actually recommended to do so before every event.
@knightdeluxegaming
@knightdeluxegaming 2 жыл бұрын
How?
@robllewellyn
@robllewellyn 3 жыл бұрын
That was a cool series, I learnt a load of new stuff .. will go and do your full course now I think. Super clear!
@VasilisKarastergios
@VasilisKarastergios 5 жыл бұрын
Excellent, I really enjoyed the millis series, I hope you can explain state machines in another video using the millis function.
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks Vasilis - that's a great idea, I'll look into it!
@mikebarton3218
@mikebarton3218 5 жыл бұрын
Thanks Michael. A very well made tutorial and very helpful to me right now as I am writing my first code for an Arduino (aged 63 !) which will strike a bell every hour exactly. I would like to expand the program to move a stepper motor driven hour hand. A stepper motor tutorial would be great ;-). Best regards, Mike
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks Mike - nice work! Note taken on Steppers ;)
@ShiningSilverWolf
@ShiningSilverWolf 3 жыл бұрын
Thank you for the nicely laid out tutorial. You showed a simple but effective way to plan out what to do, and then carry it out. While I have programmed in other environments before, I’m new to the Arduino, and you have made it easy to pick up the new parts. Cheers!
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Glad it was helpful!
@larrydee8859
@larrydee8859 5 жыл бұрын
Great lessons; Easy to understand! (I'm trying to develop multiple debounce sensors for my model railroading, using millis).
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks for the note Larry! Have you checkout Geoff Bunzas KZbin Channel? kzbin.info/door/KzeYLMEPxWGilqZTNuG0JA He uses Arduino in model railroading. Pretty neat stuff.
@larrydee8859
@larrydee8859 5 жыл бұрын
@@programmingelectronics Thanks so much! Thanks for the tip. I'll check it out.
@jakethesnake630
@jakethesnake630 5 жыл бұрын
Fantastic video. I've been watching the series and hoping you'd cover timed events using the Millis() function. Very difficult to get your head around that function and you have definitely helped.
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks Jake - I appreciate that! I often still scratch my head on using it well.
@yashaswikulshreshtha1588
@yashaswikulshreshtha1588 3 жыл бұрын
@@programmingelectronics i guess millis still sucks because if you have any delay()s in those timed events your entire timeline will be screwed up. i think to use millis everything has to be perfectly synchronized
@programmingelectronics
@programmingelectronics 3 жыл бұрын
@@yashaswikulshreshtha1588 I don't believe delay() effects the background count of the millis() function - millis() will keep counting. You might consider some timer libraries that trigger interrupts at specific times...
@yashaswikulshreshtha1588
@yashaswikulshreshtha1588 3 жыл бұрын
@@programmingelectronics I wanted to use millis for timed events but let's say if one event which turns on led has a delay in it then It won't affect millis counts but yes it will act as blocking code for other code pieces sometimes like permanent blockage, you can a event which happens every one second and then an event which happens every 3 seconds, so ofc the first will execute first but if u put delay of 3000 In it then the second event won't happen at all, it never will. I thought maybe I could use millis to run big code blocks having lot of functionalities. At timed intervals
@yashaswikulshreshtha1588
@yashaswikulshreshtha1588 3 жыл бұрын
@@programmingelectronics I would be really grateful if you can make video of classes and objects in Arduino. Probably no has explained good on KZbin, but if u can make it, it will be on top and it will be helpful to all of us, cuz some of us are trying to learn actual programming concepts using arduino
@LevyCarneiro
@LevyCarneiro 2 жыл бұрын
I saw an example code where someone created an array to hold the millis readings per item you want to manage, and the condition logic was within a function. That way the code was quite minimal. That was in the Doomsday Communicator KZbin video where he demonstrated building a Lora chat device.
@pantac4493
@pantac4493 Жыл бұрын
That sounds a lot cleaner, will have to check it out
@alphonsesynrem28
@alphonsesynrem28 4 жыл бұрын
Very nicely done with Millis function. Thank you.
@programmingelectronics
@programmingelectronics 4 жыл бұрын
Glad it was helpful!
@conradsinsua7415
@conradsinsua7415 5 жыл бұрын
wow , the quality of your videos have improved alot
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks! Always trying to get better.
@Robin-mi1zj
@Robin-mi1zj 3 жыл бұрын
hi! thank you so much for this series (btw I think you forgot to add this video to the playlist lol), it's super clear and your explanation is amazing
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Thank you!
@webslinger2011
@webslinger2011 5 жыл бұрын
Awesome! I find your lectures easy to understand. Thanks!
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thank you! I appreciate that!
@stever3886
@stever3886 3 жыл бұрын
Great video and love the humor sprinkled in there. In your closing remarks relative to the IF statement……it would be nice to say you set the first previous time to zero….you did say it in the up front part. That is when “I got it”…..like you said walk thru it.
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Great point! Thanks Steve.
@martinbolton9483
@martinbolton9483 3 жыл бұрын
Brilliant tutorial 👏
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Thank you! I hope it helped!
@iggzistentialism8458
@iggzistentialism8458 4 жыл бұрын
You explained it really well, thank you, it really helped. Thanks for making this and all your videos!
@programmingelectronics
@programmingelectronics 4 жыл бұрын
Glad it was helpful!
@rimapark8081
@rimapark8081 4 жыл бұрын
Can't explain how much I love these videos ;~; luv u
@epartsacc
@epartsacc 2 жыл бұрын
Amazing free content. Very well explained
@programmingelectronics
@programmingelectronics 2 жыл бұрын
Thanks!
@ivanprasetyo8533
@ivanprasetyo8533 5 жыл бұрын
Absolutely amazing videos, i can do more about millis function by now, thank you for making this videos and keep it up! 😁😁😁
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks a ton Ivan!
@jerkycam
@jerkycam 2 жыл бұрын
Hey thanks! I didn't think I would need the millis function till I saw your videos about it. I'm building a miniature dollhouse that I want to have music and dimmed lights. Using delay would have caused me some problems.
@programmingelectronics
@programmingelectronics 2 жыл бұрын
Great - I hope it helps!
@unknownblueblue
@unknownblueblue 3 жыл бұрын
Thank you so much this is the best arduino video
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Thanks for watching!
@KJ7JHN
@KJ7JHN 3 жыл бұрын
This is some great stuff. Thanks!!
@wa8eem
@wa8eem 3 жыл бұрын
Right traight to the point and it works!
@WayneTheSeine
@WayneTheSeine 5 жыл бұрын
Very high quality instruction. Thanks
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks Wayne!
@TheUnofficialMaker
@TheUnofficialMaker 2 жыл бұрын
Well done!
@programmingelectronics
@programmingelectronics 2 жыл бұрын
Thank you!
@masouddayaghi5923
@masouddayaghi5923 4 жыл бұрын
Thanks man, amazing video
@michaellove7912
@michaellove7912 3 жыл бұрын
super helpful, thank you!
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Glad it was helpful!
@MrAce-rs6ju
@MrAce-rs6ju 5 жыл бұрын
You are good teacher *****
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks Ace!
@ipadize
@ipadize 2 жыл бұрын
good to know things are: making a variable a constant with "const" will prevent accidentally changing the value later in the program and the compiler will generate an error: "error: assignment of read-only variable 'YourVariable' " "long" = -2,147,483,648 to 2,147,483,647 "unsigned long" = 0 to 4,294,967,295 unsigned just means that the value stored will never be smaller than 0
@programmingelectronics
@programmingelectronics 2 жыл бұрын
Great notes! I think the numbers on long and unsigned long need switched though in your comment: "long" = -2,147,483,648 to 2,147,483,647 "unsigned long" = 0 to 4,294,967,295
@ipadize
@ipadize 2 жыл бұрын
@@programmingelectronics yes you are correct i have mistakenly swapped the values ^^
@muhammadbilal2000
@muhammadbilal2000 3 жыл бұрын
Amazingly taught.
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Thanks for watching!
@jameswise7701
@jameswise7701 3 жыл бұрын
I like the concept. Just not sure how you handle the rollover of the millis() count? In the reference documentation, millis() will rollover in about 50 days. Seems you should have to check for a rollover condition.
@bolekcomamilionrolek
@bolekcomamilionrolek 4 жыл бұрын
Thanks very much!
@ami9675
@ami9675 2 ай бұрын
Thank you very much for explaining the millis() function in such detail. I want to use the millis() function as a monostable multivibrator. I would like to use a 300msec pulse on one of the outputs when a button is pressed. what program should I write? THX
@PrometheanConsulting
@PrometheanConsulting 2 жыл бұрын
Nice video. I've got a use case that requires both event-driven and timer-driven functions so this was helpful. Regarding your timer update, though, I think I would have updated previousTime_1 & previousTime_2 by ADDING their respective intervals back into them rather than updating to the current time. loop() is subject to blocking and there are other reasons that your loop might lag, so your implementation might creep (e.g. 0... 1003... 2003... 3005... 4006... 5007 vs 0... 1003... 2000... 3002... 4001... 5001). Staying truer to your intervals might be important.
@gabrialpetersen914
@gabrialpetersen914 2 жыл бұрын
Amazing. Subscribed
@programmingelectronics
@programmingelectronics 2 жыл бұрын
Awesome, thank you!
@joshuapitong899
@joshuapitong899 2 жыл бұрын
Reall great.🙌 Thank you.❤
@programmingelectronics
@programmingelectronics 2 жыл бұрын
Thanks Joshua!
@ikercos9694
@ikercos9694 Жыл бұрын
you're a genius
@programmingelectronics
@programmingelectronics Жыл бұрын
Thanks! I hope you found this helpful!
@GranVlog
@GranVlog 5 жыл бұрын
Thank you. Just what I needed
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Great - glad it could help. Thanks Gran's Stuff!
@DodgyBrothersEngineering
@DodgyBrothersEngineering 5 жыл бұрын
lol how funny is that. I have not long finished writing code very similar to this, except I used a DHT22 and a HC-SR04. I timed three events, temp, humidity and distance (at 5 seconds, 7.5 seconds and 10 seconds). Threw in a millis reading at the end of each loop just to see how often it was going through the loop (and any delay processing). I prefer to update the previous time immediately after the If statement, just in case you are not putting the millis value into a variable like "currentTime" if(millis() - previousTime_1 >= eventInterval_1){ previousTime_1 = millis();
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks for sharing that! That makes for more succinct code for sure.
@DodgyBrothersEngineering
@DodgyBrothersEngineering 5 жыл бұрын
@@programmingelectronics I knew I was on the right track when I saw what you wrote was very similar to what I had come up with. I initially had down what you wrote, but then changed it at the last minute to just tighten it up a little. Doing three different events one after another, I played with both ways. The way you did it might be slightly more memory friendly, the way I did it will keep the timed events slightly more accurate. If we weren't playing around with milliseconds which increment pretty rapidly, I would have normally done it the way you did it. Thinking about it now, I wonder if I can test the value, and pipe it into the variable in the same action to try cut down the time difference even more? Hmmm another thought just occurred to me. If I put it back to the way you have it, and just reset the currentTime before the start of each event it might be even better still.
@DodgyBrothersEngineering
@DodgyBrothersEngineering 5 жыл бұрын
Yep I think just resetting the currentTime is a winner. That way it isn't so time critical when previousTime_x is updated. Although it is good to get it done out of the way and not forgotten. currentTime = millis() if(currentTime - previousTime_3 >= eventInterval_3){ previousTime_3 = currentTime;
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Great thought - so adding that currentTime = millis() line before each if condition. Thanks again for sharing!
@DodgyBrothersEngineering
@DodgyBrothersEngineering 5 жыл бұрын
@@programmingelectronics Yeah I think that is the way to go... You are capturing the value immediately before you do the If statement, so if it goes into the If (i.e the right amount of time has elapsed), you don't have any lag between the millis at the time of checking the If statement, and the time of storing in the previousTime variable. I think resetting the currentTime just before the next If can potentially make the difference of it stepping into the If statement and it not stepping in, on projects that require a very minimal delay between checks. If you only set it once and it takes say 50ms to run through the first If statement, in real time the internal counter has increased by 50ms but you are still using the old value. By putting a println of millis at the end of each loop, I noted that the average loop time for a non activity loop was about 7ms, but when it did a sensor check and printed to screen it was around 40-45ms. I have a 10ms Delay between LOW and HIGH Pin to get the reading. Since I am using 5, 7.5 and 10 second intervals (just random values) some loops will do nothing, some loops one activity, others two, and some three. On the ones that do three, the initial time set with currentTime = millis() will be way out by the time it enters the third If statement.
@mbundesmond3696
@mbundesmond3696 21 күн бұрын
great explanation
@programmingelectronics
@programmingelectronics 20 күн бұрын
Glad it was helpful!
@ThuanDuong-pv3xu
@ThuanDuong-pv3xu 4 жыл бұрын
Thank so much for your lensson in my a late night , it is my event !
@andrasparanici5491
@andrasparanici5491 4 жыл бұрын
I also like the title from the videos: "Unleash the millis()!" - Awesome! - not just the content :) Thanks very much!
@cpsanjana
@cpsanjana 3 жыл бұрын
You are really good. How night celt you explain anybody can understand great job I too started learning don’t be surprised
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Thanks!
@hassambinhassan4446
@hassambinhassan4446 4 жыл бұрын
really helpful. thanks a lot.
@programmingelectronics
@programmingelectronics 4 жыл бұрын
Glad it was helpful!
@ruwansamanpriya6085
@ruwansamanpriya6085 5 жыл бұрын
Wonderful as always...
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks Ruwan!!!!
@carlostph
@carlostph 5 ай бұрын
Great explanation. I was wondering what happens when milis overflows. Would this stop working around day 49?
@digihz_data
@digihz_data 5 жыл бұрын
Well explained.
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thanks Hans!
@danielbernhard1250
@danielbernhard1250 4 ай бұрын
Nice Video. Do you wanna explain how to use the actuall timer to do such things faster than every millisecond?
@siddharthsinghrajawat9419
@siddharthsinghrajawat9419 5 жыл бұрын
Sir keep making awesome courses . Soon will take your paid course its awesome . Love from india
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Thank you Siddharth!
@sushildamle3449
@sushildamle3449 Жыл бұрын
Excellent description. I just wanted to know weather i can use delay function in side the loop without affecting the over all working? Thanks.
@sledzeppelin
@sledzeppelin 3 жыл бұрын
There are several event manager and timer libraries for Arduino which are much easier and more powerful than manually writing lots of millis() code.
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Very true! It's fun to dive into some details. Do you have any specific libraries you would recommend?
@MegaSamsand
@MegaSamsand 3 жыл бұрын
So good! Thank you. Are you guys still uploading new content?
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Yes! We have taken a break and been focusing on our member content for quite some time though.
@mourikogoro9709
@mourikogoro9709 3 жыл бұрын
very nice tutorial!
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Thank you!
@0124akash
@0124akash 9 ай бұрын
This vdo is really helpful for me understand to millis function. Just one question sir am using millis function for one LED blink off time and on time is same. How to change off time only means 1000 Ms is off time and on time is 500 ms. I think you you understand my question sir.
@RhoTrepaan
@RhoTrepaan 2 жыл бұрын
nice, this what i was looking for. intuitively I would have updated the previousTime with the interval, instead of the currentTime... previousTime_1 += eventTime_1 but i expect differences to be minimal, a small (yet slowly increasing) delay in the currentTime version compared to my idea...
@strangejmaster
@strangejmaster 4 жыл бұрын
This is an old video you probably won't respond, but if you see this then... I need help creating a photogate I know the equations etc. but I don't want to use an Arduino Zero or buy and RTC module, I have a short deadline for a project so I'm not sure if I have time to buy anything else online. I need the photogate to find the time it was broken then do an if statement like /=Divided By Time Broken Phototrsnisotr = millis() or something to get time between beam is broken and restored like a stopwatch Speed = Time Broken Phototransistor / Object Diameter if(Speed == 2 Meters Per Second) {Speed up or something}
@WayneMcNab
@WayneMcNab Жыл бұрын
Love ALL your videos. You mentioned one on interfacing the LDR and Temp sensor but couldn’t find it on your site. Could you supply me a link. Does it also deal with scaling analog readings to displayed units? Thanks so much. Wayne
@Kibinas
@Kibinas 3 жыл бұрын
Can you explain how this method avoids overflowing of a unsigned long variable?
@iffyschannel
@iffyschannel 3 жыл бұрын
You saved me thank you!!!!
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Glad it helped!
@jordanlambrecht706
@jordanlambrecht706 9 ай бұрын
Hi there, your videos helps me a lot since I'm new for this, thank you a lot. Quick question about millis(), is it possible to make a wave of leds fading on and off on different LEDs at the same time like for example chroma lighting for keyboards? I try the whole week to learn how to create a code for this issue and it's very clear with the delay() function it's impossible to do so. Thank you beforehand!
@tswoshman0016
@tswoshman0016 5 жыл бұрын
Can you explane how to use millis() for pausing someting ? Like having a little wait loop for ex. 0.5 seconds before making the next without using delay().
@Schlohmotion
@Schlohmotion Жыл бұрын
For everyone worrying about the currentTime rollover after 3 weeks: If currentTime is smaller than previousTime, a rollover has happened. Check for this condition and then just set previousTime to zero (basically reset your program this wasy).
@andreweastland9634
@andreweastland9634 Жыл бұрын
The rollover is handled automatically by this code. Do the maths in binary instead of thinking in decimal and you will find it works correctly as is. The key is to subtract the times rather than using addition.
@chrisridd9423
@chrisridd9423 Жыл бұрын
If any of your multiple events take "significant" amounts of time, then your events are going to start drifting away from your intended intervals. To solve that, I would suggest replacing your lines "previousTime_1 = currentTime" etc with "previousTime_1 += eventTime_1_LDR" etc.
@MikeleRoca-y3k
@MikeleRoca-y3k Ай бұрын
Hello. I'm a beginner on arduino. I appreciate all your videos. Got a question. BTW isn't about the topic bu5 about memory or understanding how to better define variables or constants. Using const unsigned long for values of 1000 and 5000 would be like a waste of space on the memory? Can't they be declared like a type int variable? Got a couple weeks ago an advice on reddit about the use of delay. Your videos really help people who want to really understand how stuff work!
@programmingelectronics
@programmingelectronics Ай бұрын
Yes, you are correct. I usually make an exception for values that deal with time, that way all the timing variable types are similar. Whatever variable you have tracking time from millis should definitely be a long, otherwise though, you are correct, and int would work fine. Great question.
@udaraamila7072
@udaraamila7072 11 ай бұрын
Thank you very much for this tutorial. Theoretically soon after millis() overflows, previousTime variable will be larger than currentTime and the currentTime-previousTime will be a large negative value. Will not be this an issue?
@nektarioskourakis8331
@nektarioskourakis8331 3 жыл бұрын
Great tutorial!!! Two questions 1) the event's happen exactly in one and five seconds?? Instead of const uns... can I put define ...? Thanks
@toastrecon
@toastrecon 3 жыл бұрын
Awesome! So... you're obviously not guaranteed that your function is getting called "on time". If your other operations aren't too taxing on the processor, you'd be fine. Maybe it'd be interesting to display the millis or the variance to see how far off it was when the function was executed.
@lastchance045
@lastchance045 2 жыл бұрын
I enjoy your videos but this one has me stumped! I tried to substitute leds as a test as you suggested. My timing was led1 once every second and led2 once every 10 seconds. One the first loop it went well BUT following that both leds were on all the time! I tried with delays added and that allowed the leds to blink correctly. My uncertainty is based on the thought that we were to AVOID using delay??? By the way I am 79. Here is my code int led1 = 12; int led2 = 11; /* Two "independant" timed events */ const long eventTime_1_led1 = 1000; //in ms const long eventTime_2_led2 = 10000; //in ms /* When did they start the race? */ unsigned long previousTime_1 = 0; unsigned long previousTime_2 = 0; void setup() { //initialize digital pin led1 & led2 as an outputs. pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); Serial.begin(9600); } void loop() { /* Updates frequently */ unsigned long currentTime = millis(); /* This is my event_1 */ if ( currentTime - previousTime_1 >= eventTime_1_led1) { Serial.println("led1 "); digitalWrite (led1, HIGH); delay (100); digitalWrite (led1, LOW); /* Update the timing for the next event*/ previousTime_1 = currentTime; } /* This is my event_2 */ if ( currentTime - previousTime_2 >= eventTime_2_led2) { Serial.println("led2: "); digitalWrite (led2, HIGH); delay (100); digitalWrite (led2, LOW); delay (200); /* Update the timing for the next event*/ previousTime_2 = currentTime; } }
@Steven_Bennett_YT
@Steven_Bennett_YT 5 жыл бұрын
Is there a potential problem, when millis() rolls over after 49 days, that the sensor updates to serial could stop when the if statement is not true and is there a way to avoid this happening?
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Hi Steve, Great question. I am planning on releasing a video about the roll over (at some point...) In the meantime, you can check out this article on stack exchange arduino.stackexchange.com/questions/12587/how-can-i-handle-the-millis-rollover/12588#12588 Hope this helps some!
@freddiemortos8519
@freddiemortos8519 5 жыл бұрын
@@programmingelectronics sir please do a tutorial about this rollover problem of millis in a code. It is easier to understand your explaination than reading a book :)
@tharlynnoo
@tharlynnoo 3 жыл бұрын
I think with another if statement ; if (previousTime_1 > 49days || previousTime_2 > 49days) {previousTime_1 = 0; previousTime_2 =0}
@seanlin6862
@seanlin6862 5 жыл бұрын
hi, is there a way to have time events, but when the event happens, let it continue longer. For example, I want to turn on LED1 for 21 seconds straight, at the same time, turn on LED2 for 3 seconds then turn off LED2 for 4 seconds, then turn LED2 back on for 3 seconds and turn LED2 off for 4 more seconds, until the 21 seconds is up.
@programmingelectronics
@programmingelectronics 5 жыл бұрын
Yes, this is definitely possible. You could potentially break the 2nd LED event into two separate timed events, and set up different event variables for the turning on and turning off of the LED.
@ser7ser7i
@ser7ser7i 3 жыл бұрын
Thank you.
@programmingelectronics
@programmingelectronics 3 жыл бұрын
Thanks for watching!
@abrahanshahzad1371
@abrahanshahzad1371 4 жыл бұрын
9:20 We can write this line as " if(currentTime >= previousTime_1 + eventTime_1_LDR)" That way it is easy to understand!
@georgemugala4830
@georgemugala4830 3 жыл бұрын
You de best my man!!. What a way to explain things
@arvand26
@arvand26 3 жыл бұрын
Hello.. can using currentTime_1=millis();, currentTime_2=millis(); ... etc . because if use many library using millis to. sory for my bad english
@sabbirahmedsumon1023
@sabbirahmedsumon1023 Жыл бұрын
is there any function called micros? I mean what if I need the values in micro second. Can arduino produce that precise data?
@programmingelectronics
@programmingelectronics Жыл бұрын
Yes, there is a micros() function as well, that returns the number of microseconds: www.arduino.cc/reference/en/language/functions/time/micros/
@aliozdemir8002
@aliozdemir8002 5 жыл бұрын
thank you so much for this useful narration! Let's say i want to control the digital output with "millis" function. How do i set the exit working time without stopping the loop or other ?
@ninek8
@ninek8 4 жыл бұрын
What exactly do you want to use and for how long? You can use this same sketch he shows but instead of reading values and printing them, you can just set up a digital pin to become high or low. You'll need all the code without the display part for just one digital pin. I might have said it a weird way so if its confusing, ask again.
@pritam65010
@pritam65010 4 жыл бұрын
Hi, i need a code for a servo motor. Which move 0 to 180 forward and wait 2 hours and again it reverse and wait 2 hours and it is to be continued, can you help me.
@anthony6841
@anthony6841 4 жыл бұрын
I can help you a little, if you need more specification let me know: -Do exactly what he did in the video -For event 1, change it to your servo doing 0 to 180 -For event 2, change it to your servo doing 180 to 0 -You also going to need to think of a way to put a delay for event 2 -In other words: from start, 2 hours has past (servo do 0 to 180), an additional 2 hours has past (servo 180 to 0) -To be more precise, event 1 will START at 2 hours and event 2 will START at 4 hours -Their interval will be 14 400 000 millis (4 hours) if i did the math correctly
@timwhite7127
@timwhite7127 9 ай бұрын
Help an idiot out. Is it necessary to assign currentTime to millis() and use currentTime in the conditional statements or can you just use the millis() function itself in the conditionals?
@programmingelectronics
@programmingelectronics 9 ай бұрын
You could use millis in the conditionals. Not an idiotic question at all.
@timwhite7127
@timwhite7127 9 ай бұрын
Thank you very much!@@programmingelectronics 🙂
@mannnanshaikh7608
@mannnanshaikh7608 2 жыл бұрын
sir I have 1 question: can we run both tasks at same time means both tasks at per second speed????????
@imamkusnendar
@imamkusnendar 2 жыл бұрын
Sir, can I use milis() if say, I want to analogRead from my sensor every 16 ms? I have project to read voltage and current sensor from charging capacitor which is happend about 800 ms to fully charge. I want to measure 50 data point (AnalogRead()) from my sensor during 800 ms. I really appreciate your help Sir?
@programmingelectronics
@programmingelectronics 2 жыл бұрын
Cool project - > Yes, using millis() would allow you to sample something everything 16ms. If you look at the blink without delay example in the Arduino IDE, or watch this series, you should get a thorough idea of how to implement that in code.
@imamkusnendar
@imamkusnendar 2 жыл бұрын
@@programmingelectronics Thank you Sir. I am still to follow along series videos that you provide in this channel, Sir. very helpful. Many thanks Sir.
@mannnanshaikh7608
@mannnanshaikh7608 2 жыл бұрын
Can you explain how this method avoids overflowing of a unsigned long variable? I'm taking 4 readings from 4 different Distance Sensors and lighting up the LED on the basis of output I gathered from each sensor .But the values which is coming from distance sensors are overflowing the functions . I appreciate if you help me out.
@kotobukichannel4367
@kotobukichannel4367 4 жыл бұрын
What if i want to also print the last update of the lm35 in the serial monitor for example you set a time interval of 1sec in LDR and 5sec in LM35 but what if i want to print the last update of LM35 while the LDR prints simultaneusly
@learnbox3783
@learnbox3783 4 жыл бұрын
Hi, Please let me know I have 5 events and I want to run them sequentially but 2 events are working in manner but when I add 3rd event the sequence got disturbed. unsigned long ct, pt=0, pt1=0, pt2=0; void loop() { ct = millis(); if(ct - pt >= 1000) { lc.setChar(0,0,'a',false); pt = ct; } if(ct - pt1 >= 2000) { lc.setRow(0,0,0x05); pt1 = ct; } if(ct - pt2 >= 3000) { lc.setChar(0,0,'d',false); pt2 = ct; } }
@qzorn4440
@qzorn4440 3 жыл бұрын
this is wonderful, i would like to program a variable time input so when the button-A is pushed for 1 second something will happen or when button-A is pushed for 2 seconds something else will happen, then maybe a 3rd event? thanks a lot...:)
@swapnilbandgar8730
@swapnilbandgar8730 3 жыл бұрын
Please help me ::::: I want to start my loop only when my Ultrasound sensor detects the object and if the object is not present then it should directly stop all the operations until the ultrasound sensor detect another (different or same) object
@mlggeek1812
@mlggeek1812 5 жыл бұрын
great!
@tillytony
@tillytony Жыл бұрын
Could this be used to call lcd.clear without using delay?
@adnan_oday
@adnan_oday 5 жыл бұрын
Veru nice i would like to explain how to setup 8relay depending on reading sensor ac voltage as example
@rodcurrywood9134
@rodcurrywood9134 3 жыл бұрын
I'm attempting that very thing right now!
Arduino MASTERCLASS | Full Programming Workshop in 90 Minutes!
1:25:31
Programming Electronics Academy
Рет қаралды 2,6 МЛН
Arduino delay() and millis()  Functions: Tight Loops and Blocking Code
13:00
Programming Electronics Academy
Рет қаралды 103 М.
Fake watermelon by Secret Vlog
00:16
Secret Vlog
Рет қаралды 31 МЛН
兔子姐姐最终逃走了吗?#小丑#兔子警官#家庭
00:58
小蚂蚁和小宇宙
Рет қаралды 13 МЛН
Wait for the last one 🤣🤣 #shorts #minecraft
00:28
Cosmo Guy
Рет қаралды 15 МЛН
НАШЛА ДЕНЬГИ🙀@VERONIKAborsch
00:38
МишАня
Рет қаралды 3,1 МЛН
How to Use Millis to Master Arduino Multi-tasking
50:17
Rachel De Barros
Рет қаралды 57 М.
Arduino Sketch with millis() instead of delay()
14:27
Programming Electronics Academy
Рет қаралды 230 М.
Using Arrays with For Loops
17:24
Programming Electronics Academy
Рет қаралды 33 М.
Arduino millis() function: 5+ things to consider
12:49
Programming Electronics Academy
Рет қаралды 141 М.
If you don’t learn sprintf(), your code will hate you later
8:34
Programming Electronics Academy
Рет қаралды 52 М.
Optimizing Arduino Code: no setup(), no loop() ⛔
9:27
Wokwi
Рет қаралды 207 М.
7 simple Arduino projects which YOU can build in 15 minutes.
31:07
Major Tom Workshop
Рет қаралды 1 МЛН
Fake watermelon by Secret Vlog
00:16
Secret Vlog
Рет қаралды 31 МЛН