Adding interrupt example

master
androiddrew 5 years ago
parent 07bcb4f05b
commit 5ffdc6e63c

@ -0,0 +1,36 @@
# Interrupts
While a great amount of logic can be handled within our code, `while` loops are not very conducive to event driven
behavior. [Enter interrupts](https://randomnerdtutorials.com/micropython-interrupts-esp32-esp8266/). When a change is detected interrupts trigger a handler function.
When an interrupt occurs the processor halts execution of the main program and executes the interrupt handling routine
then returns control back to the main program.
On the ESP32 you can use all pins as interrupts with the except of pins 6 - 11.
## Basics
Let's use a button and an LED to demonstrate the basics of interrupts.
Your interrupt handler must accept a single parameter, a `Pin` object, which will be set to the pin triggering the interrupt.
````
def hangle_interrupt(pin):
pass
````
Set the GPIO that will be used as the input pin.
```
pin = Pin(14, Pin.IN)
```
Attach an interrupt to pin.
```
pin.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt)
```
There are 3 different trigger modes you can use:
* IRQ_RISING - Trigger on the rising edge
* IRQ_FALLING - Trigger on the falling edge. For example when a button is released.
* 3 - Trigger the interrupt on both edges.

@ -0,0 +1,15 @@
from machine import Pin
# Enable input pin. We will put a button on this pin
pir = Pin(34, Pin.IN)
# Create handler
def handle_interrupt(pin):
print("You triggered the interrupt")
# attach interrupt to pin
pir.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt)
# You don't need a While loop here. If you leave it off you will get a REPL with your objects still set.

@ -5,7 +5,7 @@ import time
def testThread(): def testThread():
while True: while True:
print("Hello threading") print("Hello threading")
time.sleep(15) # Time is so high so that we can actually get a repl. time.sleep(15) # Time is so high so that we can actually get a repl.
_thread.start_new_thread(testThread, ()) _thread.start_new_thread(testThread, ())

@ -1,3 +1,10 @@
# ESP32 Webserver # ESP32 Web server
This project makes use of the ESP32's wifi capabilities and the `usocket` library to respond to a simple get request and return and HTML response. This project makes use of the ESP32's wifi capabilities and the `usocket` library to respond to a simple get request and return and HTML response.
### Web page auto refresh
You can make use the of the meta tag to tell the web browser to refresh the page on a certain interval:
```
<meta http-equiv="refresh" content="10">
```

Loading…
Cancel
Save