Don't Use DigitalRead | Arduino Interrupt Programming Guide

Sdílet
Vložit
  • čas přidán 17. 06. 2024
  • Get Altium (One Month Free) - www.altium.com/yt/RoboCircuits | Octopart - octopart.com
    Previous Video - • SMT Assembly from JLCP...
    Code and Schematics -
    In this video we are going to learn how to use interrupts with Arduino, an advanced but extremely useful feature of the Arduino. There is a lot to cover, so without any further delay let's get started!
    But what is an interrupt? Most microprocessors have interrupts. Interrupts let you respond to external events while doing something else. Suppose you are sitting at home waiting for the new ESP32 board, you have ordered a few days ago, to arrive at your mailbox. You are very excited so you check your mailbox every ten minutes to see if the board has arrived. This procedure is called polling, and we were using this technique a lot in our projects. But what if we had told the mailman to ring the doorbell at his arrival? This way, we are free to do anything we want and at the time the board arrives at the mailbox we get notified and we can use it at once. This example explains exactly how an interrupt causes a processor to act.
    Social Links
    Facebook - robocircuits
    Instagram - / robocircuits
    Twitter - / robocircuits
    Instructables - www.instructables.com/member/...
    Arduino CC - create.arduino.cc/projecthub/...
  • Věda a technologie

Komentáře • 63

  • @nassimkoubeissi5814
    @nassimkoubeissi5814 Před 2 lety +6

    this is one of the basics in all programming languages
    in microchip assembly
    hardware interrupt can be used for many things including reading buttons
    as long as there are no delay loops in interrupt routine it is very effective
    and fast way .
    I use interrupt to read switches
    set variable I=100 in the main declaration for variables
    and in in hardware interrupt routine also set I=100 as soon as it finishes the interrupt and returns back to main program
    then I do a software interrupt using call subroutine and put a counter
    example I=I-1
    and disable hardware interrupt
    in this loop
    then checks I if =0
    then enable hardware interrupt
    and set I =100
    if not exit subroutine
    I do not use any delay in the software subroutine
    and rely on instructions delay
    when the program counter is
    executing every instruction in main program (depends on the clock frequency used by your MCU )
    the benefits
    are no impact on main program
    and my MCU ignores any button
    until 100 main program loops are done .
    another note I=100 is for example demo not a fix value it depends on the main program how long are the instructions and normal delay loops in it .
    use delay loops only when necessarily needed .
    I hope that helps .

    • @RoboCircuits
      @RoboCircuits  Před rokem

      I completely agree with you… the method you suggested is even better

  • @flyingrobots4937
    @flyingrobots4937 Před 2 lety +2

    Awesome video… best explanation of interrupts i have seen

  • @ChrisWilliams-pu8pj
    @ChrisWilliams-pu8pj Před 5 měsíci

    Nicely done. Thank you!

  • @creativewonder1152
    @creativewonder1152 Před 2 lety +4

    Really useful video 👌😁

  • @guatagel2454
    @guatagel2454 Před rokem +6

    Interrupts may require some state machine if the algorithm gets bigger and bigger. Saying "don't use digitalread" is misleading, because interrupts do not solve every problem. You know this, but you prefer the clickbait.

    • @RoboCircuits
      @RoboCircuits  Před rokem +1

      But its a point worth learning for a lot of people

    • @guatagel2454
      @guatagel2454 Před rokem +2

      @@RoboCircuits you should say that, then. "digitalRead is not always the best idea", or "alternatives to digitalRead", or "when digitalRead is not the fastest solution".

  • @vandita7196
    @vandita7196 Před 2 lety +1

    Great efforts👍🏻🔥

  • @mamadoubapassioninformatique

    Good to know. Thanks for sharing.

    • @RoboCircuits
      @RoboCircuits  Před rokem

      You are welcome… thanks for appreciation

  • @axramar7743
    @axramar7743 Před 5 měsíci

    Nice explanation 🎉keep it up
    Any RTOS tutorials?
    Semaphore
    Mutex
    Threads?

  • @ClaudioParraGonzalez
    @ClaudioParraGonzalez Před 2 lety +1

    thanks, good video

  • @0124akash
    @0124akash Před 5 měsíci

    Properly explained, why and how. Thankyou sir. But can you make vdo in Hindi language for 100% understanding.

  • @creativeelectronics6266
    @creativeelectronics6266 Před 2 lety +2

    very nice

  • @sudheerkumar5966
    @sudheerkumar5966 Před 2 lety +1

    Very good

  • @phoenixflames6019
    @phoenixflames6019 Před 7 měsíci +1

    I am really happy to see a video on some slightly advanced interrupt handling, but as far as I know, using `delay()` in the ISR definition is not a good practice. In fact, the watchdog timer would ideally run out way before something like `delay(150000)` executes. I have experienced this while using a few `Serial.println()` calls in my ISR definition. Printing data a few times onto the serial monitor takes long enough to exhaust the watchdog timer, causing the microcontroller to reset. 😂
    Am I right? Or am I missing something?

  • @TheDiverJim
    @TheDiverJim Před 5 měsíci

    You need a cap to denounce. Depending on what edge you care about, you can just use a cap, or a cap and resistor

  • @user-zl7ve6bm3n
    @user-zl7ve6bm3n Před rokem +1

    Thanks

  • @shrikantnikam2426
    @shrikantnikam2426 Před 2 lety +2

    Standard practice use millis insted delay then no need of external interrrupt bcz less pins to use.

    • @ClaudioParraGonzalez
      @ClaudioParraGonzalez Před 2 lety

      Could you please elaborate?

    • @shrikantnikam2426
      @shrikantnikam2426 Před 2 lety +1

      @@ClaudioParraGonzalez suppose you use delay in program of 5ms and controller executing that delay and that time any button pressed then controller will not accept that button bcz it have only one core and we cant do multitasking solution is use external hardware interrupt but pins are isr pins limited on arduino then solution for this only one that is dont use delay in program use millis, find out how millis replace dalay, checkout my channel Mr tech inventor

    • @RoboCircuits
      @RoboCircuits  Před rokem +1

      Yes its true… but if code is big then we can miss the press of button if not implemented properly

  • @borwankarsunil
    @borwankarsunil Před 5 měsíci

    Sir, I am designing a working model of lift. In that I am using push buttons. For that, I incorporated all three solutions provided by you. But the code is giving error- Compilation error. Expected initializer before 'extern'. What does it mean? Should I 'include' some function from library?

  • @JmChauhan-hp4dz
    @JmChauhan-hp4dz Před 8 měsíci

    Bro when i give high at pin 10 high and read pin 10 and pin 11input and both get high(1) value . So why this occur you can say.

  • @x-6790
    @x-6790 Před 2 lety +1

    nice

    • @RoboCircuits
      @RoboCircuits  Před rokem

      Thank you

    • @x-6790
      @x-6790 Před rokem

      @@RoboCircuits so brilliant you are after a month replied 🤣🤣

  • @sanjaybatra6593
    @sanjaybatra6593 Před rokem

    1. Nice explanation of interrupts. I have a question , you have explained about how to use interrupt for a BUTTON ( single button).
    but in real system , there are 3-5 buttons .....like MENU Button , UP button, DOWN button , ENTER button .
    How to deal with this situation ?
    2. suppose I want to use a keypad of size 4x4 or 4x5, how to deal with this situation.
    can a interrupt will be generated for any key pressed ?

    • @RoboCircuits
      @RoboCircuits  Před rokem

      During keypads, you need to check 2 pins at the same time.. there you can use interrupt. But you need to be a little creative. I never tried but i will try and let you know.

    • @RoboCircuits
      @RoboCircuits  Před rokem

      Using multiple interrupts is fine. Just make sure isr should be as small as possible

    • @sanjaybatra6593
      @sanjaybatra6593 Před rokem

      @@RoboCircuits I wish to know your viewpoint, how to implement and use interrupt when there are multiple BUTTONS.

    • @RoboCircuits
      @RoboCircuits  Před rokem

      In case of keypad.. i never tried. But i have tried 4 pushbuttons and 4 interrupts and it works

    • @sanjaybatra6593
      @sanjaybatra6593 Před rokem

      @@RoboCircuits From your statement I got any idea to use interrupt for keypad. 2 pins can be given to any logic gate and output of logic gate will be single.

  • @nishants.robocircuits
    @nishants.robocircuits Před 2 lety +2

    👍👍

  • @emileballard4417
    @emileballard4417 Před 2 lety +1

    i dont like useing interrupts for this i use it for more important stuff. i use
    if(buttonstate != prevbuttonstate){
    if(buttonstate == HIGH){
    //do stuff.....
    }
    }
    prevbuttonstate = buttonstate;
    and the longer de code gets the bounce issue manly disapears and if i doesnt, i use millis(). but DONT USE delay its bad in most cases.

    • @RoboCircuits
      @RoboCircuits  Před rokem

      True… i will implement it
      Thanks for sharing

    • @guatagel2454
      @guatagel2454 Před rokem +2

      You hit a very important nerve here: interrupts are difficult to learn, and if you use 2 or more sources of interrupts you will need some state machine to keep track of what the program is doing. Some problems requires interrupts and interrupts are the only solution. But you have to think your program very well.

  • @mohammadjunaid3200
    @mohammadjunaid3200 Před rokem +1

    Do you know how to use a note acceptor machine if you know can you teach me I will also pay you money for this

  • @shrikantnikam2426
    @shrikantnikam2426 Před 2 lety +1

    Bro where are you now job?

    • @RoboCircuits
      @RoboCircuits  Před rokem

      A little busy with other things… but will get back soon

  • @ensarija
    @ensarija Před rokem +1

    I will teach you...
    Indian guys 😁

  • @shaygoldin
    @shaygoldin Před 4 měsíci

    Nice video. You should realy use a good microphone, lose the music, it's not mixed well, and maybe talk a bit slower, so people who are not nThanks anyway.

  • @serutipkrobart4070
    @serutipkrobart4070 Před rokem

    hello, this is cienna from Beijing DWIN Technology company, I visited your youtube platform,I believe there is a strong possibility for us to work with you, we are LCD manufacturer for 19 years,we have hundreds kind of LCD display,and our products could connect with Arduino, ESP32,STM32 etc, so I believe there is a strong possibility for us to work with you.

  • @p.k.electronics4981
    @p.k.electronics4981 Před 7 měsíci

    😂

  • @kennyberg338
    @kennyberg338 Před rokem

    Why annoying music

  • @serutipkrobart4070
    @serutipkrobart4070 Před rokem

    and i send you email today, pls check it and thank you😀😀