How to Use Arduino Interrupts The Easy Way

Поделиться
HTML-код
  • Опубликовано: 23 янв 2025
  • НаукаНаука

Комментарии • 254

  • @ZothiamaCF
    @ZothiamaCF 11 месяцев назад +31

    5 minutes in to the video and I've already clicked the subscribe and like buttons. This is how all tutorials should be made. You are a most awesome teacher.

  • @jdoedoenet
    @jdoedoenet Год назад +12

    You are one fantastic teacher! I am a former HP engineer (long ago!) and have finally reached a place in life where I can do this sort of thing just for fun.
    Your videos are immensely helpful and entertaining to boot. Absolute goldmine.
    Thanks for all that you do!

  • @mikepower-l7w
    @mikepower-l7w Месяц назад +1

    Rachel has a knack of being able to teach clearly - well done.

  • @SlotCarNomad
    @SlotCarNomad Год назад +16

    Easily the best Arduino tutorials I’ve seen on RUclips. I came for the interrupts, but I will definitely be watching more. A refreshing change from the usual content. Thank you!

  • @jtodora
    @jtodora 11 месяцев назад +3

    EXCELLENT description of using interrupts. Very Good!!!

  • @kentharris7427
    @kentharris7427 11 месяцев назад +2

    I built a demonstration of a perpetual motion machine as my first project using an Arduino. "Perpetual Motion Machine?" The Arduino is very flexible and can even work with a power supply that is a half bridge rectifier. Looking forward to your next video.

  • @JumbleLane
    @JumbleLane Год назад +3

    This is brilliant, for a 65 year old to finally understand how interupts work. Your upbeat way of describing how it works is just fantastic. I can now implement this in a few of my projects and also see if I can find information on doing a similar thing with the ESP32 to improve some of those projects. Thanks Rachel, I will certainly go through your videos and also subscribe. Regards, Geoff.

  • @shirleysharrock7204
    @shirleysharrock7204 Год назад +4

    Your descriptions are clear and enjoyable to watch. I didn’t yawn at all and no urge to nap which is common with the monotone streams I have endured. Showing the pitfalls and showing the process . Thank you for your stream.

  • @janskrdlant4197
    @janskrdlant4197 Месяц назад

    Your explanation of things is so much clearer then any other I have found so far. Excellent job, thanks!

  • @zuzukouzina-original
    @zuzukouzina-original 11 месяцев назад +1

    You have a gift to explain it very clear and simple. Thank you 🙏🏼

  • @emmamarx9284
    @emmamarx9284 4 месяца назад +1

    You are such a good teacher!!! This made interrupts so much easier to grasp, thank youuuuuu❤

  • @miachristensen5444
    @miachristensen5444 Год назад +9

    This is so incredibly easy to understand and paced at such a great rate! Thanks for the amazing video! Can't wait to learn more from you =)

    • @RachelDeBarrosLive
      @RachelDeBarrosLive  Год назад +2

      Glad it was helpful! Let me know if you want me to cover any topics and I'll put it in rotation.

  • @ProfessorOzone
    @ProfessorOzone 7 месяцев назад +1

    As I watched this video, I thought to myself, I know this person from somewhere, but from where? So I googled and OF COURSE, it was All Girls Garage! I'm a car guy too. I don't know how a marketing person gets into Arduino code, but I'm really glad you did because you explained it in a way I can understand. What I'm doing is simple and you explained very nicely how to do it simply. Thank you for this.

  • @aardito215
    @aardito215 Год назад +4

    Great video, you explained this so well! I've spent hours looking at other videos on timers and interrupts which just confused me. I'm just getting back into Arduino programming after a 5-year break, and this was a huge help with the project I'm working on.

  • @surenbono6063
    @surenbono6063 Год назад +1

    ..i like the flow of this tuturial...its like a sketch itself...it delivers you from darkness to light...

  • @KenanYusufTemel
    @KenanYusufTemel 6 месяцев назад

    You are well prepared, so good at teaching and fun to watch. Thank you for making it possible to watch without getting bored.

  • @oscareriksson9414
    @oscareriksson9414 Год назад +3

    Really good, straight to the point and simple. Exactly what I need for my projects

  • @PammyStevensonEquest
    @PammyStevensonEquest Год назад +3

    Great video. Might be worth mentioning a while loop with small 1ms delay as a non interrupt solution on the way to the interrupt solution. Also an internal timer is a hardware interrupt, software interrupts are generated directly by the microprocessor when it needs system tasks done - memory management, errors, crashes, etc

  • @elevatedviewstcl
    @elevatedviewstcl 2 месяца назад

    Thank you so much for this video. The way you explain things and your examples make it so easy for beginners like me to understand. Please never stop making videos like this lol. Thanks again.

  • @edgarbonet1
    @edgarbonet1 8 месяцев назад +5

    Very nice tutorial! I would just suggest a few corrections:
    1. The Arduino Uno has no software interrupts, although they can be simulated by writing to an interrupt pin configured as output. The timers are hardware devices, and the timer interrupts are hardware interrupts.
    2. The first parameter of attachInterrupt() is an “external interrupt” number. This is not the same as an interrupt vector number. FWIW, external interrupt number 0 is interrupt vector 2 (see the ATmega328P datasheet).
    3. Only variables shared between ISR and regular code need to be volatile. In the example you give, buttonState should be local to the ISR, and doesn't need to be volatile.
    4. Using millis() within an ISR is perfectly fine. You should not, however, expect millis() to get updated within the ISR, as it gets “frozen” when the interrupt is triggered.

  • @anthonysullivan851
    @anthonysullivan851 10 месяцев назад

    I have to confirm previous comments, you are a great teacher and the best and demonstrating Arduino IDE.

  • @joemechanic2751
    @joemechanic2751 8 месяцев назад

    I'm new to Arduino but not new to programming, so I'm glad I found this channel. Most other sites for Arduino channels for newbies assume you know zero about programming and are unwatchable.

  • @davidgorman2665
    @davidgorman2665 5 месяцев назад

    I found you searching for interrupts. Really enjoyed your video and the way you delivered the information. I can't say I enjoyed any others more. I struggled with button debounce using the hardware interrupt approach, but finally worked through the issues. I look forward to your other videos.

    • @davidgorman2665
      @davidgorman2665 5 месяцев назад

      Ps: I get page not found when I try to follow your link. Probably because you have move on.

    • @RachelDeBarrosLive
      @RachelDeBarrosLive  5 месяцев назад

      Thanks for letting me know about the dead link. I re-organized my tutorials on my website and the url must have changed. I corrected it so you can now see the page with the code! 👍

  • @AbeDillon
    @AbeDillon 2 месяца назад +1

    3:06 I haven't implemented this, but I know that some programming languages like Python 3 offer asyncronous programming by using an event loop that runs in the background. The event loop simply reads from an event queue and coordinates calls to and responses from what would outherwise be blocking operations. I think the most efficient implementations end up using interrupts anyway, but you could also implement a simple approach using polling techniques.

  • @daviddossor6711
    @daviddossor6711 5 месяцев назад

    !!!! Thank you. !!!! As you would say I now have no hair left after a day that I spent trying to get 3 led's to blink with one at a different rate....
    They did blink but not to the timings I set no matter what I did or how I rewrote the sketch..... They were very random at best no matter what I did..... I definitely failed the class and was at the bottom of the grade... """" Interrupts"""" nice stuff.!!!!!! After watching you video multiple times and taking lot's of notes for later Ron....
    My sketch now works as intended and I'm now a solid "'" A "" student....
    To a dumb bum you are a angel , a little crazy but an absolute angel ,,, !!!!!!! Thank you.!!!!!!!

  • @Hardeepsingh-re8xn
    @Hardeepsingh-re8xn 13 дней назад

    Thanks for this video, Very nice tutorial, EXCELLENT description of using interrupts.

  • @acousvnt
    @acousvnt Год назад

    It's refreshing to hear code explained with such enthusiasm!

  • @hz.maverick
    @hz.maverick 4 месяца назад

    this is the best tutorial i`ve seen in a while! thank you very much for sharing!

  • @dibakardutta180
    @dibakardutta180 7 дней назад

    Excellent video. Thank you very very much. Today I understood interrupt because of you. Your tutorial is as beautiful as you.

  • @stevehamann9624
    @stevehamann9624 8 месяцев назад

    I think the best explanation for interrups on youtube👍🏼

  • @fastprocessvelocity
    @fastprocessvelocity 3 месяца назад

    Thank you. You made it very easy to understand interrupts

  • @ConzKlips
    @ConzKlips Год назад

    interrupting my viewing to say this: Amazing, so clear and helping so much. Not even finished the video yet and its already heaps helpful, thanks!

    • @RachelDeBarrosLive
      @RachelDeBarrosLive  Год назад

      I'm glad to hear the vid is helping you out! Let me know if you'd like me to cover any other topics!

  • @nawnifari
    @nawnifari Год назад +3

    Cool.. arduino beginner should watch this.. I'm sharing it to classmate..

  • @Richardson_Valakyr
    @Richardson_Valakyr 9 месяцев назад

    Im learning english and also Arduino... i found both here you are amazing... Thanks!!!!

  • @andybp840c
    @andybp840c Год назад

    I almost want to duplicate the previous comment excellent explanation so pleased I found this channel
    Thank you

  • @75mechanic
    @75mechanic Год назад +1

    Wow great video. Well presented. Easy to understand.
    Learning arduino and found this excellent.

  • @guidovlaere
    @guidovlaere Год назад +1

    Thanks from the Netherlands 🇳🇱 for your super tutorial! Your videos are very helpfull! 😊

  • @nityamaheshwari8259
    @nityamaheshwari8259 Год назад +1

    i watch so may videos on google related to interrupt , but your lecture is amazing, i understand all the concept very clearythanku so much , for a grt video😁😁

    • @RachelDeBarrosLive
      @RachelDeBarrosLive  Год назад

      Glad you enjoyed it! Let me know if you want to see any other topics.

  • @ChaplainDaveSparks
    @ChaplainDaveSparks 8 месяцев назад

    I love this video for two different reasons:
    I haven’t programmed interrupts in ages. If I’m not mistaken, it was on a Z-80 back in the 80s.
    Rachel reminds me so much of someone we lost, also in the 80s: *_Karen Carpenter!_* Similar voice, facial expressions, and body language.

  • @khanqaiserster
    @khanqaiserster 11 месяцев назад

    You are a wonderful teacher of embedded systems.
    Your style is very nice otherwise it's a very dry subject

    • @RachelDeBarrosLive
      @RachelDeBarrosLive  11 месяцев назад

      I have fun doing these. Writing the code is like telling a story of what you want to see happen in order from beginning to end.

  • @sanJorgeRM
    @sanJorgeRM Год назад +3

    Very usefull explanations! Ty very much. Blessings from Spain 🇪🇸

  • @jaynewman6420
    @jaynewman6420 11 месяцев назад

    I agree with the ones saying that you are a great instructor. I'm also retired, but I'm making and programming robots.

  • @bullitthead7853
    @bullitthead7853 Год назад

    I'm new to arduino and programming. I thought that this video was fantastic, thank you. Liked and subscribed!

  • @hamradio3716
    @hamradio3716 11 месяцев назад

    Wow, what a great teacher. So enthusiastic!. Good examples. Now I can fix some broken ISRs that use sleep.

  • @rayleblanc7209
    @rayleblanc7209 Год назад

    I remote controlled a 10 HP Craftsman track drive snow blower using a 10 channel Flysky and mega 2560. I learned Arduino coding just to build the project. I use all 10 channels to operate the servos, motors and actuators. I was able to get everything to work without using any interrupts. I'm sure my code is far from perfect, but surprisingly I got everything to function.

  • @williamburns7336
    @williamburns7336 Год назад +1

    I JUST FOUND YOU TODAY AND LOVED YOUR VIDEO. LEARNING CAN BE BORING, BUT NOT IN YOUR VIDEOS. I'M REQUESTING MORE CODING VIDEOS, YOU HAVE TWO, AND I SEE YOU PLAY THE VIOLIN , I HAVE ONE I HAVEN'T LEARNED TO PLAY YET. JUST A COUPLE OF SUGGESTIONS, THANK YOU WILLIAM

    • @RachelDeBarrosLive
      @RachelDeBarrosLive  Год назад

      Thanks so much for the suggestions! Yep - I have more coding videos coming - mostly Arduino and coding for robots/animatronics projects. I hope you pick up the violin soon!

    • @BariumCobaltNitrog3n
      @BariumCobaltNitrog3n Год назад

      No need to shout.

  • @indikaudayasaranga988
    @indikaudayasaranga988 Год назад +1

    Your knowledge is excellent. Thank you for sharing. Big Hats off.

  • @dsbohra
    @dsbohra 4 месяца назад

    HI Rachel, would you please explain why BLUE LED keeps blinking after uploading your code at 5:14? I made it on Wokwi and on actual Arduino, both have a mild blinking effect. Thanks.

  • @zambonni
    @zambonni Год назад

    You are my new favorite teacher

  • @paulalmquist5683
    @paulalmquist5683 Год назад

    When you refer to a function like setup or loop or any user defined function just say its name, "setup", "loop", or whatever it is called. Do not include "void", "int", or whatever it's return type is. The return type is part of the function declaration but is not part of the name.
    Good presentation. Nice to see someone that is obviously enthused about the topic.

    • @speakertoanimals
      @speakertoanimals Год назад

      saying "void setup" adds clarity because the () are not spoken. IMO saying the return type is like prepending an honorific... like, "King Charles" instead of just "Charles."

  • @8867348
    @8867348 Год назад +1

    Wow, you are so much fun. I don't know how far I will get with this arduino stuff. I'm 52 and originally just wanted to build an led cube but somehow got off into this coding. It's very interesting but having a difficult time retaining what I learn. I don't get to spend as much time on it as I would like to. You did a very good job explaining in your video and I completely understand but, 3 days from now I'll be like "how did that lady do that?". Lol, maybe I'm getting in over my head.

    • @arliewinters2776
      @arliewinters2776 10 месяцев назад +1

      I'm 64....Not as on-point as I used to be. I've found just reading about it is not enough for me.... "doing it" keeps it fresh in my mind.

  • @nexpro6985
    @nexpro6985 Год назад +4

    Pretty good explanation of ISR, thanks.
    Maybe the pin names should be constants not variables. They are not going to change.
    const int BLUE_LED = 11;
    LOW and HI are constants also hence uppercase.

    • @ABaumstumpf
      @ABaumstumpf Год назад

      "LOW and HI are constants also hence uppercase."
      Kinda,... not... they are defines.

  • @robertrodgers6251
    @robertrodgers6251 3 месяца назад

    Thank you very much! I didn't know about the interruption being a specific pin, and that there are different pins on different boards

    • @RachelDeBarrosLive
      @RachelDeBarrosLive  3 месяца назад

      Indeed! On some boards like the ESP32, all pins can be used as an interrupt, which is nice!

  • @paulmcmahon7899
    @paulmcmahon7899 Год назад +1

    Thank you for this. My project involves LaRa radios remotely located, so this is a big boost in being able to run the remote processes while waiting to receive a transmission.
    One difference from your video. When I run your sketch, exactly copied, RED flashes four times, the BLUE flashes, but twice, in opposite synch to RED. Then red flashes twice more, then blue-red twice, etc. I've played with the delay and the microseonds. Seems as though the ISR runs twice every 1/10 second. I'd like to test LoRa for data receipt in the interrupt and do pass the incoming data to the loop. It may not matter, but thought I'd ask since my results differ. Thank you again.

  • @valrach7303
    @valrach7303 Год назад

    i am not a native english speaker.. i kind of have a hard time understanding various dialects..so, dear mam..THANK YOU!!! Its literally the first video I can understand 😭
    I am missing out a lot in school due to mental health reasons and I try to relearn all the stuff so i wont fall behind

  • @warsteelcalgarus5790
    @warsteelcalgarus5790 Год назад

    This was awesome. Going to check out the rest of your Arduino vids. Thank you so much for posting this. Really appreciate it =)

    • @RachelDeBarrosLive
      @RachelDeBarrosLive  Год назад

      Thanks! Let me know if you'd like to see any specific topics.

  • @HaulahTebazaalwa
    @HaulahTebazaalwa 10 месяцев назад +2

    The world's best Queen teacher thanks

    • @RachelDeBarrosLive
      @RachelDeBarrosLive  10 месяцев назад

      Glad you enjoyed it! Let me know if there's any topics you'd like me to cover.

    • @shlokmahajan8439
      @shlokmahajan8439 2 месяца назад

      ​​@@RachelDeBarrosLivecan you make tutorial series on esp32 from scratch

  • @husky-nu3xk
    @husky-nu3xk 9 месяцев назад

    Best explanation ever. Thx Rachel

  • @tb303wpf1
    @tb303wpf1 8 месяцев назад +1

    Thank you so much for this video! I had buttons on pins that were not hardware interrupts and I woumd up modifying my code in some very creative ways to simulate hardware interrupts. It worked pretty good too. Lol.
    Now I will remove all of that erroneous code and move the buttons to the hardware pins.
    I feel like such an idiot. 🤣

  • @tonyparakka4038
    @tonyparakka4038 6 месяцев назад

    Thank you! So nicely explained!

  • @pierrefiore6933
    @pierrefiore6933 6 дней назад

    good clear explanations, learned quite a few things. you say funny things about code...I'll try everything you showed....I have yet to find a working example of either type ... I can get my Arduino to sing, but it won't dance. iow, I can get it to do anything I want, spew to the serial ouput, led matrix, external oled, 16x2lcd, blink lights, change execution paths with a button press - everything except 'the actual work' which in my case, counting a pulse for a certain amount of time and this requires an interrupt. hence I watched this video

  • @ethzero
    @ethzero Год назад

    13:00 Regarding where to put additional functions in code, it's true that for the Arduino IDE+Compiler top or bottom is fine.
    However, if you're using an ESP32+Arduino Framework+PlatformIO+VScode I've found that (probably) the compiler complains about "undeclared functions" if you put them at the end, i.e. you try to call on a named function before it's seen in the code.
    There might be an additional parameter or something that can be parsed to the compiler, but that beyond me.

  • @sennabullet
    @sennabullet 9 месяцев назад

    Thank you for this video. I really appreciate your enthusiasm!

  • @JamesConway-s9q
    @JamesConway-s9q 2 месяца назад

    I find your videos amazing, I love to see the videos you make and I find them very helpful so God love you always and forever. From Jim. 😇🥰👍

  • @hicl5450
    @hicl5450 Год назад

    Thanks for the video. May I know for button interrupt, what if the button is kept to be pressed, is there any way to disable the interrupt and warn the user to release the button, then re-install the interrupt again?

  • @ammarlokhandwala2858
    @ammarlokhandwala2858 7 месяцев назад

    Hello there, I was just wondering if we can assign other pins appart from 2 and 3 in arduino uno for interrupt, if we are using digitalpintointerrupt function?

  • @arturosanvicente
    @arturosanvicente 4 месяца назад

    Heyy Rachel I saw you on TV in a car repair program!!!!

  • @arliewinters2776
    @arliewinters2776 10 месяцев назад

    Good Teacher !
    Easy on the eyes too ☺

    • @arliewinters2776
      @arliewinters2776 10 месяцев назад

      My problem is, when I should be looking at the code, I'm looking elsewhere...!

  • @Roe124
    @Roe124 2 месяца назад

    I have a question
    is it possible to do an interrupt while having the components connected on a shield?
    like this connects directly to an arduino but i need to use a shield for a project so is there anyway it could be done

  • @catmeow2633
    @catmeow2633 3 месяца назад

    Thanks for your great and detailed explanation, the notion of interrupt in Arduino docs is dull and nerve racking, while sees your video I have a better understanding of this.

  • @aaronfrye1195
    @aaronfrye1195 Год назад +1

    Thank you for this very inspiring and informative video.

  • @dougcox835
    @dougcox835 Год назад

    I have multiple routines that are called from the main loop which are selected by a mode variable. The interrupt works to change that mode variable but it still has to return to the main loop in order to take the next action. I would love it to just break off from whatever it was doing and back to the main loop. At least the button push registers and can be depended on. I just have to wait for the current sub to finish. I could have each sub check for a change in mode and bail but that's messy because every routing would need the same treatment. If I want to do that I might as well have each routing check the button inside the loops.

  • @onebeartoe
    @onebeartoe Год назад

    This was really well explained!

  • @kennysmart8273
    @kennysmart8273 6 месяцев назад

    @ Rachel De Barros, how can I use this for multiple blinking lights, say like the strobe lights on an aircraft, if I wanted to put this on a model I need them to go on in one colour then off & onto another colour, there’s 3 colours I need to use red, white & green. The white light would be constantly on too. Any help or advice would be greatly appreciated.

    • @Klimafutzi
      @Klimafutzi 5 месяцев назад

      Don't know, whether you still need an answer...
      Here is my suggestion.
      I would implement a timer counter with a counting speed of the smallest time slice you need, say it is 100 milli seconds. So on each timer interrupt increase the counter by one. Then think of a state machine where at distinct count values things should be done.
      For example red LED every 300 milli seconds (ms), green LED every 500 ms and blue LED every 700 ms.
      Then the counter has to count up to the smallest common multiple. In our case this is 3 * 5 * 7 = 105. If the counter reaches this value set it back to zero. Within ISR:
      Counter = Counter + 1;
      If Counter >= 105 {
      Counter= 0;
      }
      To toggle the red led use the following if statement:
      If ( (counter % 3) == 0) {
      ToggleRedLed();
      }
      For the green LED exchange 3 by 5 and call
      ToggleGreenLed():
      If ( (counter % 5) == 0) {
      ToggleGreenLed();
      }
      For the blue LED exchange 3 by 7 and call
      ToggleBlueLed()
      The % is the so-called modulo operator:
      0 % 3 = 0
      1 % 3 = 1
      2 % 3 = 2
      3 % 3 = 0
      4 % 3 = 1
      5 % 3 = 2
      6 % 3 = 0
      ....
      And so on
      X % n will always compute to values from 0 to n-1 (for X >= 0)

  • @SusanAmberBruce
    @SusanAmberBruce Год назад

    Very well explained and helps a lot of thanks.

  • @tenfriskydingos
    @tenfriskydingos 11 месяцев назад

    Awesome video thanks! Ive been having trouble reading the pulses from an old school rotary dialer using just debouncing, I think this will do the trick for me though!

  • @georgejetson4378
    @georgejetson4378 Год назад +1

    Great content and thank you for posting. I’m just getting started with Arduino so your posts are very timely but I’m wondering why you declared buttonState variable inside of loop. I was taught to only declare variables once otherwise the processor wastes resources. I think your code would still work if you declared before the loop. Do you agree?😊

  • @hanvanderveeken904
    @hanvanderveeken904 Год назад

    love your energy and enthousiasm ;-)

  • @spudnickuk
    @spudnickuk Год назад

    I have not long understood about using Millis instead of delay
    I have a question to ask
    If I have power to the Arduino
    And have a code programed installed
    Can I use a button to activate the code
    Meaning the code is dormant untill I press a button
    What I'm doing at the moment is have two LEDs blink via the Millis timing
    But it runs all the time so I have a button that is used as a circuit breaker and so when I press it it makes the leds connect
    But I would like to understand is there a way how to use a button to run the code to activate the LEDs only when the button is pressed

    • @Klimafutzi
      @Klimafutzi 5 месяцев назад +1

      There is a "sleep mode" you can use for this.
      In this mode the Arduino consumes only very less power, so this is great to be used on battery powered solutions.
      From this sleep mode the Arduino can get waked up by timer or button, as you like.
      Then the Arduino can do it's job and fall to sleep again.

  • @kiranvsutar5980
    @kiranvsutar5980 Год назад +1

    Thanks for such an informative session. This video really helped me to take out the fear of using Interrupts.
    However, I have a question:
    If the Timer 0 interrupt is used....I should NOT be using delay or millis functions......but if I am using Timer 1 or Timer 2 .....can I use delay and/or millis in the loop function?

  • @zz3709
    @zz3709 11 месяцев назад

    Great explanation, how about serial receive interrupts?

  • @jackkylejr.1112
    @jackkylejr.1112 Год назад

    I have two water level switches on a aquaculture food system. The top switch tells when the thank is full and the water pump should turn off. And the bottom switch tells when the tank is empty and the pump should turn on. But I don't know how to code for to hardware switches that are in concert with each other???? Can arduino do this??

  • @terrybest3036
    @terrybest3036 Год назад

    Question: Is the interrupt routine being called twice each press since you used "change"? The pin is pulled up, then you press the button so it goes low and the interrupt gets called. When you release the button, is that also another change to high so it gets called again?

    • @Klimafutzi
      @Klimafutzi 5 месяцев назад

      Yes, you are right.
      There will be an interrupt for each state change.
      One interrupt on changing from HIGH to LOW and another on changing back from LOW to HIGH.

  • @hamidbayrami1780
    @hamidbayrami1780 Месяц назад

    hi , ho can I handle USART RX Interrupt ?

  • @columbiabuzz
    @columbiabuzz 7 месяцев назад

    Thankyou darling: this the first time I've heard about Timer1. Many examples call to timer1 when there's no evidence where it came from. Obviously, it was in the library file, but I didn't know why everyone uses TimerOne the file name, but the code is calling Timer1. It must be imbedded in the library, but it wasn't obvious to me. First I heard about 3 timers also.

  • @insoft_uk
    @insoft_uk Год назад +1

    I would recommend when using such things as == LOW reverse it so LOW ==
    as it prevents mistakes like single = getting missed as a “var = const” will compile yet “const = var” will fail and you will pickup on the missing =

  • @jstampfl
    @jstampfl Год назад

    Great video. Enjoyable and informative.

  • @TheJohndeere466
    @TheJohndeere466 3 месяца назад

    Is there a way to make an arduino close a circuit. The circuit will have a very very low current draw. I just need the arduino to close the circuit just like you would press a little button. I know you can make the arduino trigger a relay but is there a way to close a circuit without an external relay.

  • @mazharkhaliq1971
    @mazharkhaliq1971 10 месяцев назад

    Thank you, it is a well informed video 😊.

  • @chronobot2001
    @chronobot2001 Год назад

    So pretty and smart.
    The video was excellent !!!!
    Thanks for doing it.

    • @RachelDeBarrosLive
      @RachelDeBarrosLive  Год назад

      Glad you liked it! Let me know if you'd like to see any other topics.

  • @antoniopavanetto9891
    @antoniopavanetto9891 Год назад

    Excellent indeed! I've suffered while you hot swap the connections.😅

  • @Witsenburg
    @Witsenburg 10 месяцев назад

    I've used millis functions to multitask up to now. What would be the faster way? I'm working on an IR sensor changing state every 0,007 seconds, I need to be fast...

    • @edgarbonet1
      @edgarbonet1 8 месяцев назад

      7 ms is not fast. For such slow things, multitasking with millis() (or micros() for better granularity) should work fine.

  • @MikelGarin999
    @MikelGarin999 Год назад

    Thank you! I didn't know TimerOne library and its ease use! I think i could use it on a 16 steps MIDI sequencer i have built! Can it be used in combination with hardware interruptions? I need two hardware interrupts to control the state os two buttons.

    • @Klimafutzi
      @Klimafutzi 5 месяцев назад +1

      For a midi sequencer I assume you need serial interface communication.
      I am rather sure, that you could use interrupts for this interface for RX and TX as well on top of the two button interrupts.
      Since the midi timing is critical you should minimize the code within the ISR of the button code.

    • @MikelGarin999
      @MikelGarin999 5 месяцев назад

      @@Klimafutzi Thank you! I have used a OR gates combination in order to detect whether any boton out of the 16 the interface contains was pushed. The last gate output is connected to pin 2 (INT0)

  • @MettaZen
    @MettaZen Год назад

    Good video :) You're clear in your explanations.
    Here are some video ideas. Id love to see a video about threading or on some more basic stuff like interpretation of the pinouts, how to look to get to know how a new component works (what things to look into)... Stuff that give users more independance

  • @rjm842
    @rjm842 Год назад

    Thank you for this very, very helpful tutorial! it wooooorrrrrrrkkkssssss :)

  • @DJMovit
    @DJMovit 2 месяца назад

    I'd love to see a project with multiple moisture sensors and maybe a display to let you know when plants need water and when they don't.
    I had one kind of working but adding multiple sensors it continued to read off the original sensor.

  • @cadillacescalade5428
    @cadillacescalade5428 10 месяцев назад

    Hi, Good Afternoon I am New to arduino and I am trying to put a sketch together by using a servo at 0 to 60 and use a IR sensor to activate it and also use a sound file or DF-Mini player for sound.
    Could you please help me with it ?

  • @mikefochtman7164
    @mikefochtman7164 Год назад

    Just a small comment @16:14. In this case, you only use 'buttonState' within the ISR, so it could be left local to that and wouldn't need the keyword 'volitile'. The only time this variable is changing is the line with 'digitalRead(buttonPin)' and that's only called in the ISR.
    An example where you would want it declared outside the ISR and WITH the keyword 'volitile' would be if it's changed inside the ISR (via that call to 'digitalRead(buttonPin)') and then used OUTSIDE of the ISR, (perhaps in 'loop()'). The compiler has no way of 'knowing' when the ISR may be triggered to change 'buttonState' so in loop() it must check the value in memory each and every time.

  • @davidnichols7401
    @davidnichols7401 10 месяцев назад

    At 3:15 you asked if anyone had figured out how to do this without interrupts. Just build a state machine into the loop() code. Let's say you want to update the button every 50 mS. {20 times a second}. You have two tasks to accomplish (update the red LED and update the button), so loop() has to run every 25 mS. In setup(), add stored_millis = millis(); {along with all the other bits.}. Inside loop() write a while loop that reads the latest value of millis() and compares it to stored_millis(), If greater than 25 mS, break out of the while loop. Next, stored_millis = latest_millis; state_counter += 1; If state_counter is odd, call Update_Red() else call Update_Blue(). In Update_Red(): increment a variable red_counter. If red_counter == 10, {25*10 = 250mS}, change the state of the Red LED and reset red_counter to 0. In Update_Blue(), make the Blue LED state equal to the button state. easy peasy.

    • @edgarbonet1
      @edgarbonet1 8 месяцев назад

      Or just follow the “Blink Without Delay” Arduino tutorial.

  • @peterkowald7092
    @peterkowald7092 9 месяцев назад

    So you asked has anyone ever written a multitasking function without using interrupts, and the answer is yes. I developed a cooperative multitasking core for any microcontroller after has a system that was doing a ton of work and struggling to get all done within a second. It took me a good while thinking about the problem before I developed the engine (it’s very very light weight and consumes only a few hundred bytes of memory. That same system doing all the same things (and now more) runs at around 15,500 cycles a second.
    I have now been using it for several years and use it on very project as it eliminated more code than it uses. In fact I even use it on top of RTOS because make coding do easy. So yo answer your question .. Yes
    I use it commercially so I won’t release it, sadly but I have a significant competitive edge killing systems with bigger, faster and more expensive microcontrollers.
    Nice bright video for beginners