Understanding Arduino Interrupts | Hardware, Pin Change & Timer Interrupts

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 พ.ค. 2024
  • Learn to use Hardware, Pin Change and Timer Interrupts with the Arduino Uno.
    Article with code: dronebotworkshop.com/interrupts
    More articles and tutorials: dronebotworkshop.com
    Join the conversation on the forum: forum.dronebotworkshop.com
    Subscribe to the newsletter and stay in touch: dronebotworkshop.com/subscribe/
    Today we are working with a fundamental programming concept, the use of Interrupts.
    Now, this certainly isn't the first time we have worked with interrupts, we have used Hardware Interrupts in several previous videos. But we have never taken a deep dive into the subject, and as it is a very important concept, I feel it's time that we did!
    Plus, Hardware Interrupts are just one of three types of interrupts supported by the Arduino. So we also should take a look at Pin Change and Timer Interrupts as well.
    We are working with an Arduino Uno today, but the concepts we are discussing are applicable to just about any microcontroller.
    Interrupts can help you make more responsive user interfaces, perform timed operations, or just write better and more efficient code.
    Here is the Table of Contents for today's video:
    00:00 - Introduction
    01:51 - No Interrupt Demo
    07:02 - Hardware Interrupts
    19:51 - Pin Change Interrupts
    37:22 - Timer Interrupts
    46:21 - Conclusion
    Hopefully the video and its associated article will prove to be a good resource as you work to improve your code with interrupts.
    Bill
  • แนวปฏิบัติและการใช้ชีวิต

ความคิดเห็น • 147

  • @Dronebotworkshop
    @Dronebotworkshop  3 หลายเดือนก่อน +8

    Hi everyone - It's come to my attention that there has been someone masquerading as myself, responding to some comments here with a link to a Telegram chat to win a prize from me. THIS IS A SCAM, I am not holding a contest, nor do I have a Telegram account. PLEASE DO NOT RESPOND TO THESE MESSAGES!!
    It's happening on a lot of my videos, I'm taking steps to remove them manually, but as I have 162 videos, it will take some time. If you do run across a suspicious comment, I would appreciate you letting me know at info@dronebotworkshop.com.
    Thanks!
    Bill (The real one!)

  • @le-manche-de-pelle
    @le-manche-de-pelle 2 ปีที่แล้ว +176

    He interrupted his own presentation to make a point about interrupts while asking for audience subscription. This guy is a genius 👏

    • @JustaReadingguy
      @JustaReadingguy 2 ปีที่แล้ว +5

      Yea, I laughed

    • @user-mr3mf8lo7y
      @user-mr3mf8lo7y 2 ปีที่แล้ว +3

      He actually is. Did that to let you guys memorize the concept next time around.

    • @JeffAPierson
      @JeffAPierson ปีที่แล้ว +4

      he is playing 4D Interrupts, he is on a different level of interrupts ;)

    • @sketchypoodle1236
      @sketchypoodle1236 8 หลายเดือนก่อน

      All I wanted was a Pepsi.

    • @evonite841
      @evonite841 หลายเดือนก่อน

      I actually subscribed lol

  • @thorntontarr2894
    @thorntontarr2894 ปีที่แล้ว +14

    As a seasoned user of interrupts, this video is outstanding to overcome the fear many users have regarding the use of interrupts. You have done a great service with this video.

  • @GLH8
    @GLH8 9 วันที่ผ่านมา

    Thanks once again!
    After scratching my head for an hour trying to get my interrupt to work, you explained the issue and solution clearly. I was able to fix it first attempt!

  • @rahuls7039
    @rahuls7039 ปีที่แล้ว +10

    I believe that this video is one of the most well-described video on interrupts. The best part is that it contains crisp and clear information. Thank you for uploading this. Your videos are a blessing to the developer community.
    I wish I had access to this resource a bit earlier.

  • @seankayll9017
    @seankayll9017 2 ปีที่แล้ว +3

    Last time a piano fell on my head I was actually reaching for my car's fire extinguisher. So there. Great video as always!

  • @tubeDude48
    @tubeDude48 2 ปีที่แล้ว +4

    At 21 minutes, this got really interesting. Well done, Bill.

  • @mua7573
    @mua7573 2 ปีที่แล้ว +8

    the timing is incredible! was just in the procces of researching about interrupts xD Thanks for this tutorial!

    • @nodrug2
      @nodrug2 2 ปีที่แล้ว +1

      Yes sorry to interrupt you but I agree the timing was incredible! ;)

  • @sinjhguddu4974
    @sinjhguddu4974 2 ปีที่แล้ว +9

    What an elegant illustration and beautifully laid out segment. Thank you.

  • @anonymous.youtuber
    @anonymous.youtuber 2 ปีที่แล้ว +6

    The concept of interrupts brilliantly explained. Kudos !

  • @philgo2024
    @philgo2024 2 ปีที่แล้ว +3

    Thank you from France for all your so clear videos !

  • @pellechi1
    @pellechi1 2 ปีที่แล้ว +15

    This lesson was crystal clear! Nicely done …

  • @akanda3642
    @akanda3642 3 หลายเดือนก่อน +1

    There is an error in code in timer interrupt section. Program works by accident because 31249 is around half of scope. In ISR(TIMER1_COMPA_vect) TCNT1 needs to be set to 0 so it can start counting from the start and in setup part TCNT1 also needs to be 0 but we need to put timer1_compare_match in OCR1A because OCR1A is the value timer TCNT1 compare.
    Thanks for the video, it goes really deep into the subject. It's very useful.

  • @erikpeterson1989
    @erikpeterson1989 2 ปีที่แล้ว +6

    Really enjoyed this! Crisp, straightforward, and elegant tutorial!

  • @joshchen2818
    @joshchen2818 2 ปีที่แล้ว +4

    just learning interrupt and the video popup. like it

  • @denouch358
    @denouch358 5 หลายเดือนก่อน

    I just started playing with an Arduino and stumbled onto your channel. You are a very good presenter and have tons of good info. Thank you for sharing.

  • @CeheLvideo
    @CeheLvideo 2 ปีที่แล้ว +1

    kilohertz kHz kilo k km kilomètres
    One of my old teachers corrected me every time I put a K for kilo
    But, I like very much your videos. You make a great job. Thank you for your videos. Take care.

  • @kwasmich
    @kwasmich 2 ปีที่แล้ว +32

    In your timer interrupt example I think you actually want to used CTC mode instead of Normal mode. In CTC the register TCNT1 counts from 0 to OCR1A, triggers the compare interrupt and resets the counter TCNT1 to 0 automatically. - You are using Normal mode where TCNT1 normally counts from 0 and overflows at 65535. By setting TCNT1 to a different value you change the duration before the overflow occurs. Since you are not setting the Output Compare Register (OCR1A) it is set to its initial value 0. Hence you have the output compare match interrupt right after the overflow interrupt. And in that interrupt handler you again set TCNT1 to the predefined value. - Since your timer1_compare_match value is pretty close to the middle value of 32768 it is hard to tell the difference if you are counting up from 0 to X or from X to 65535. But it makes a difference in the timing.

  • @mrcurly1147
    @mrcurly1147 2 ปีที่แล้ว +6

    Perfect timing - I'm just starting to work with these handy things. Thank you for sharing your knowledge.

  • @projardgreen2568
    @projardgreen2568 ปีที่แล้ว

    The problem given to introduce Interruptions was GENIUS. I have a channel of my own, but I'm just a Mechatronics Technition (from Portugal, though born in USA). My knowladge on the Arduino is in great part, thanks to your videos that are, I'd say, absolutly EYE OPENING to anyone dealing with Arduino.

  • @highwaytohelles4561
    @highwaytohelles4561 2 ปีที่แล้ว +2

    You sir, have just earned yourself a subscription!

  • @nodrug2
    @nodrug2 2 ปีที่แล้ว +3

    As usual another easy to understand tutorial, you make things soooo much easier.

  • @rarespopa6648
    @rarespopa6648 ปีที่แล้ว

    dude,you are the goat of arduino I don't know what i would do without you

  • @richardp1962
    @richardp1962 หลายเดือนก่อน

    Awesome video and clear explanations. You must have been a teacher in a previous life.
    I’m new to the Arduino world but not to software development. The first videos i saw on the Arduino programming environment seemed a bit strange to have everything coded in an infinite loop() method. Using interrupts makes a lot more sense to me
    Thanks again.

  • @antonioastorino7488
    @antonioastorino7488 2 หลายเดือนก่อน

    Thank you for this amazing video. It's nice to see how to handle things using registers before taking the shortcut of using a library :)

  • @ventasti2742
    @ventasti2742 ปีที่แล้ว

    Thank you Bill, you have a fine way of explaining things.

  • @studiochefson3573
    @studiochefson3573 2 ปีที่แล้ว +1

    Loved this one! (also loved previous videos). VERY interresting. Thank you very much

  • @TheUnofficialMaker
    @TheUnofficialMaker 9 หลายเดือนก่อน

    playing with the code, what joy! BTW your written guides are AWESOME.

  • @nanolabhamlinux
    @nanolabhamlinux 5 หลายเดือนก่อน

    Thanks! answered a lot of questions I had!

  • @justaguy7172
    @justaguy7172 2 ปีที่แล้ว +2

    Great video with excellent technical information presented in an easily-understood manner.

  • @TheDickw
    @TheDickw ปีที่แล้ว +1

    Beautiful Description. What an amazing amount of work you put into it. Thanks very much.

  • @mhegyi2
    @mhegyi2 2 ปีที่แล้ว

    I was just designing a project that takes button input to change temperature up or down. The first part exactly spelled out my first attempt. This is so helpful! Thank you! Now back to work…

  • @PhG1961
    @PhG1961 2 ปีที่แล้ว +1

    Outstanding video ! Many thanks for this awesome TH-cam channel !

  • @kenhaynes
    @kenhaynes ปีที่แล้ว

    Excellent video, as always. Thank you.

  • @powersprouter
    @powersprouter ปีที่แล้ว

    thank you. best explanation I've found for hardware interrupts.

  • @inlywang8157
    @inlywang8157 2 ปีที่แล้ว

    As always informative, a good and different perspective

  • @usefulelectronics
    @usefulelectronics 2 ปีที่แล้ว +1

    Nice tutorial!!. I am not one of Arduino fans but this tutorial is quit informative and gives good understanding about interrupts

  • @andrewhollenbach7330
    @andrewhollenbach7330 2 ปีที่แล้ว +1

    Another great topic!

  • @nara49veera12
    @nara49veera12 4 หลายเดือนก่อน

    Good compilation of all interrupts in Arduino!

  • @TonySwitzerland
    @TonySwitzerland 2 ปีที่แล้ว +1

    I like the way you explain things!

  • @braddixon3338
    @braddixon3338 2 ปีที่แล้ว +5

    You sir are a wealth of information! This is a very good video describing all kinds of details around the various interrupts and how to change them as desired. Where do you learn all this stuff from (the various interrupts and how to set them)? Yes, I'm subscribed, notifications turned on, and you have my email for the news letter, a true fan ;-)

  • @derekloudon8731
    @derekloudon8731 2 ปีที่แล้ว +1

    A very useful video, thank you!

  • @Max_Mustermann
    @Max_Mustermann ปีที่แล้ว

    Thank you. This video was very helpful.

  • @carlosbah4623
    @carlosbah4623 ปีที่แล้ว

    A really instructive channel, everything very well explained in detail. Subscribed!
    ¡Gracias por compartir!

  • @jassimjaved3309
    @jassimjaved3309 ปีที่แล้ว

    Excellent video! Thank you so much!

  • @JLCPCB
    @JLCPCB 2 ปีที่แล้ว +1

    Great video as always!

  • @TYGAMatt
    @TYGAMatt 2 ปีที่แล้ว +2

    The timers on the AVR chips are great. I try to use them as often as I can. They are reliable and accurate. However, It takes a fair bit of reading through the datasheets to take full advantage of them.

  • @JohnJTraston
    @JohnJTraston ปีที่แล้ว +2

    You can still use (call) millis() withing ISR for debouncing. It can be used to get time delta between ISR calls but not to measure any time deltas within the same ISR. Since what millis() returns is only updated by the timer ISR. Given that all ISR should be super small and fast that's not a problem.

  • @bluehornet6752
    @bluehornet6752 ปีที่แล้ว

    Brilliant presentation. Don't forget to mark your timer1_compare_match variable as "volatile" though, at 42:26 in the timeline.

  • @MyVideoCollection
    @MyVideoCollection ปีที่แล้ว

    quite a thorough and excellent explanation. I found timer interrupts a bit more confusing, but I get it.

  • @nedstar7378
    @nedstar7378 ปีที่แล้ว

    Excellent information thanks for sharing

  • @FreLuZi
    @FreLuZi ปีที่แล้ว

    Great Video, helped a lot!

  • @bozotheclown935
    @bozotheclown935 ปีที่แล้ว +1

    Hey, I have been avoiding IRQ's but you "easy speak" way of looking at it should make it easy.
    Appreciate you work.
    Thanks a lot...
    ==BOZE==

  • @williamkennedy3837
    @williamkennedy3837 3 หลายเดือนก่อน

    Your videos seem well thought out and have the info I am looking to find. I'm midwestern and my ears aren't programmed to filter thru heavy accents. Some may call me names for this but I am too old to reprogram my brain.

  • @doug3458
    @doug3458 ปีที่แล้ว

    Thank you for introducing the PinChangeInterrupt library, I was wondering how I was going to implement lots of interrupts on the Mega2560. It might be worth mentioning that the library gives options for interrupting on high's or low's, as well as change.

  • @henkoegema6390
    @henkoegema6390 ปีที่แล้ว

    Thanks for interesting video. 👏

  • @lets_go_brandon99
    @lets_go_brandon99 2 ปีที่แล้ว

    Hi, Bill. Thanks for all the work that you put in this channel. Could you please make a video about charging batteries of a project with (mini) solar panel? Something like the Spirit and Opportunity Mars rovers.

  • @tirthvora5061
    @tirthvora5061 2 ปีที่แล้ว +1

    nice and knowledgeable

  • @321jimh
    @321jimh 2 ปีที่แล้ว +1

    Thank you, thank you !!! Jim : )

  • @johnkeeling5629
    @johnkeeling5629 2 ปีที่แล้ว +3

    Thanks!

    • @Dronebotworkshop
      @Dronebotworkshop  ปีที่แล้ว

      John, thank you so much, and my apologies for taking so long to respond - still learning how this "Super Thanks" thing works. I appreciate your generosity.

  • @the1spyderryder
    @the1spyderryder ปีที่แล้ว

    Great video! I am going to build a few amateur VHF and UHF repeater controllers and the interrupt timers are the only way to go but with such short duration timers I will ha e to continue to increment a location in the ISR and test them also in the ISR. I will need a 5 minute transmitter time out timer and a 10 minute ID timer so I will have to build two or three timers all running off timer one peogrammed for one second. "Tick".
    For ID i plan to use an ISD 1820 for id. Either voice or CW id played from the 1820. Suggestions?

  • @joelrcha3368
    @joelrcha3368 2 ปีที่แล้ว +1

    Great vídeo

  • @aziza.bootwala5015
    @aziza.bootwala5015 ปีที่แล้ว

    Hello Bill,
    The video is great as always, and I never tend to miss another one. I have a question which I need to ask you about the ISR , since the interrupt has occurred because of the switch, do we need to read it again while we are inside the ISR? KEEP UP THE GOOD WORK👍, BEST OF LUCK.

  • @alokbiswas8183
    @alokbiswas8183 2 ปีที่แล้ว +2

    Thank you for vedio

  • @stevegelnett4469
    @stevegelnett4469 11 หลายเดือนก่อน

    This is a good video.

  • @74862
    @74862 2 ปีที่แล้ว

    Id love to see a workshop tour. Judging from the backdrop your workshop looks nice

  • @GiC7
    @GiC7 2 ปีที่แล้ว +1

    Thanks

  • @aminehteshami3781
    @aminehteshami3781 2 ปีที่แล้ว

    Thanks for great content and Please make videos about assembly codes

  • @MathPiSG
    @MathPiSG ปีที่แล้ว

    Great video, as always! If the interrupt is called during the delay, say 2 seconds into the 5 seconds delay, after the interrupt function has finished, does the delay restart (the full 5 sec) or does it continue where it left (the remaining 3 sec)?

  • @markday3145
    @markday3145 2 ปีที่แล้ว +2

    33:00 Try pushing and holding one of the buttons and then pushing the other one. On the second press, I'll bet you'll find that both LEDs toggle. To fix that, you'd have to store the previous state of the input, and only toggle if the input is now low, and was previously high.

  • @SchwanaCARDHUT
    @SchwanaCARDHUT ปีที่แล้ว

    Bravo 👏 👏 merci

  • @1yyymmmddd
    @1yyymmmddd 2 ปีที่แล้ว +1

    Great video. It would have probably been worth touching on how to set timer depending on CPU clock speed set up in Arduino IDE.

  • @stevenheynderickx583
    @stevenheynderickx583 ปีที่แล้ว

    Hi, wanted to say that I think your tutorials are very good. Thank you very much for putting them up. Please keep doing this. I learned a lot today!

  • @peddlereffects
    @peddlereffects 2 ปีที่แล้ว +1

    I can’t wait for your vide on hardware debouncing - in particular I would love to know if I need a Schmitt trigger for debouncing Arduino or if a simple RC filter is enough.

    • @newburypi
      @newburypi 2 ปีที่แล้ว +2

      RC circuits can be a big problem in electrically noisy environments. Having said that I have successfully used them. You just need to be diligent in your testing.

  • @boiwithskillz
    @boiwithskillz ปีที่แล้ว +1

    Please do a video on esp32 interrupts!!

  • @lilblackduc7312
    @lilblackduc7312 ปีที่แล้ว

    Thank you! 🇺🇸 😎👍☕

  • @waynel8645
    @waynel8645 2 ปีที่แล้ว +1

    How do you make your schematic drawings, This is an outstanding video, I tried to get programmers at LLNL to use interrupts in PLC's code but my supervisor said I was making the code too difficult. he then gave me the nickle raise. I left his group and had a very successful career in another group. I thanked him.

  • @gregorymccoy6797
    @gregorymccoy6797 2 ปีที่แล้ว

    Great presentation. I'd like to see some esp32 coding for multiprocess coding.

  • @j1952d
    @j1952d 2 ปีที่แล้ว

    A bit off-topic, but after your short series about using the I2C bus, you said you'd be doing an explanation of the use of multiple bus masters. Did you ever to it? I've searched around, and can't find anything. Cheers, John.

  • @jeffhulett4194
    @jeffhulett4194 2 ปีที่แล้ว +1

    what do you use for your animation? really nice.

  • @RDDTVCEBU
    @RDDTVCEBU 2 ปีที่แล้ว +2

    Shout out Sir

  • @cadillacescalade5428
    @cadillacescalade5428 8 หลายเดือนก่อน

    Hi, There I have a question for you..
    I am in to Arduino model RR and I have a sketch that I did for a RR Crossing an it has a sound file PCM
    That uses timers 1 an 2 an it only holds about 2sec. Of audio. So I use mp3 audio turn it into wav form at 8000Hz an 16000hz but for my bell audio tones an it loops over an over...
    So I re copied my sketch for a single bell tone to stop after the gate has lowered my question is for the sound file that I am using in my sketch what do I need to do to just have the bell run once ? I've been looking at timer 1s an doing some searching but I'm not sure what I need to do. I also use Audacity to transfer my audio into wav files.

  • @DrRusty5
    @DrRusty5 2 ปีที่แล้ว

    Can you use an interrupt within a State Machine. I have a circuit that waits for a voltage signal, then triggers a Mosfet. The downside is I can't eliminate the delay that I need to keep the Mosfet on, so I have to wait for that delay until the Ardunio goes looking for the voltage in again, to tiegfer the next Mosfet.

  • @ytdemori
    @ytdemori 2 ปีที่แล้ว +2

    Very interesting video, can I ask you which software do you use to create the sketches animations with arduino and all components? Thank you.

  • @Stofftasse
    @Stofftasse ปีที่แล้ว +1

    Beim Timer Interrupt gibt es Fehler:
    Im jetzigen Zutand passiert nichts, wenn man timer1_compare_match ändert.
    Nach folgenden Schritten ging es bei mir:
    Zunächst einmal wird OCR1A = timer1_compare_match und nicht TCNT1.
    Zusätzlich muss der CTC mode noch eingeschaltet werden. Es fehlt vor dem setzen des Prescalers TCCR1B |= (1

  • @dang495
    @dang495 2 ปีที่แล้ว +2

    I'm interested to see how interrupts are used for power saving. E.g. waking from sleep / low power states.

  • @myidahohomestead.7123
    @myidahohomestead.7123 2 ปีที่แล้ว

    Its a different topic than this video but have you ever used a roboclaw motor driver? I have one I'm trying to run 2 dc motors with. I can make the motors do anything i want in the motion studio for the roboclaw. But when i hook the roboclaw to my arduino with a joystick i can only get the motors to go in one direction. I can make them go fast or slow but they will not reverse no matter what. The roboclaw is rated for 2 motors at 15 amps each.

  • @KhunThomat
    @KhunThomat ปีที่แล้ว

    Anything I need to care about when using a PWM output or the millis() together with timer interrupts?

  • @KeithHeilner
    @KeithHeilner ปีที่แล้ว

    Is there a way to selectively enable and disable interrupts on one pin all while leaving interrupts on other pins enabled? Thanks.

  • @nileshdharap
    @nileshdharap 2 ปีที่แล้ว +1

    Can you get rid of debounce in ISR by checking again if pin is LOW after some delay, if its a fake one use goto to move at the end of the interrupt.
    ISR(){
    if(digitalRead(pin==LOW)){
    delay(40);
    if(digitalRead(pin==HIGH)){
    goto endOfISR;
    }
    //IsrCode
    endOfISR:
    }
    }

  • @jgl153
    @jgl153 ปีที่แล้ว

    This is a great video about interupts, and it fits to my new project. I want to measure wind. The default is, measure 5 seconds (gust period) 24 times (=2min) for wind. So I need a timer for 5 seconds. Thats not possibel for Arduino (max is 4,19 sec). So the first questions is how to prolonge to 5 second. The second question is, even if I setup timer only for 4 seconds, I need a second external interrupt for the anemometer to count the revolutions within the period of 4 (or 5) seconds. What happens if the CPU just is in ISR for timer setting when the external interrupt happens. Or vice versa the external ISR is running and the timer counts down. By the way the external ISR is very short (only count++). Which one is prioritised ? If there is someone who can give me an answer, i would be very thankful.

  • @cosmoferreri8366
    @cosmoferreri8366 ปีที่แล้ว

    Hi i built my own flux capacitor from back to the future, with my friends help. We have written a large sketch with 9 sequences. we have the y centre leds (3 strips of 10) and door leds (4 x3) working simutaneously. we are using arduino mega. everything works fine but we are having the problem of the IR remote changing the sequences. i tried incorporating your code, it uploaded fine but didnt make a real difference. happy to show you the code if you could help. thanks

  • @gabrieljulioarmandosiagian1921
    @gabrieljulioarmandosiagian1921 ปีที่แล้ว

    if we change the timer1_compare_match_value value, did the delay we created changed too?

  • @brucelau5359
    @brucelau5359 2 ปีที่แล้ว +1

    I like your red Tshirt. Looks energetic lol

  • @avalonsof3665
    @avalonsof3665 ปีที่แล้ว

    What if I wanted to use an ultrasonic sensor as an interrupt? Will that work?

  • @RussTanner
    @RussTanner 2 ปีที่แล้ว +2

    The animations for DBW are very well done. What kind of software would you use to do that?

    • @electronics.unmessed
      @electronics.unmessed ปีที่แล้ว +1

      You can do that with MS PowerPoint

    • @RussTanner
      @RussTanner ปีที่แล้ว

      @@electronics.unmessed Thanks for the reply. I wonder what software DroneBot uses. I think Apache makes a free package that works somewhat like powerpoint.

    • @electronics.unmessed
      @electronics.unmessed ปีที่แล้ว

      @@RussTanner I am working with MS PowerPoint 2019. The maximum resolution for movies and pixels seems to be Full HD. Maybe the Apache product can go further to 4k or 8k?

    • @RussTanner
      @RussTanner ปีที่แล้ว

      @@electronics.unmessed OK Very good. Thanks for the info!

  • @Henrikh2011
    @Henrikh2011 ปีที่แล้ว

    Tak!

  • @rodrigog666
    @rodrigog666 3 หลายเดือนก่อน

    ¿Qué software de edición de video usas?

  • @jstro-hobbytech
    @jstro-hobbytech 2 ปีที่แล้ว +1

    I loved this channel when I was new. But when someone builds a project after you're a beginner you know how to deal with that using better code. People who love arduino need to learn c++ and read the data sheet. I don't say this to troll, just to help.

  • @davidogundiran4869
    @davidogundiran4869 2 ปีที่แล้ว

    is it possible to make software interupts on the arduino that will all most give the same performance as an hardware interupt