User Tools

Site Tools


gpio_inputs_-_button_led_control_using_an_interrupt

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
gpio_inputs_-_button_led_control_using_an_interrupt [2016/08/09 23:05] walkeradmingpio_inputs_-_button_led_control_using_an_interrupt [2017/02/01 22:05] (current) – removed walkeradmin
Line 1: Line 1:
-====== GPIO Inputs - Button LED Control using an Interrupt ====== 
-\\  
-\\  
-The previous example of using a button to light an LED, everything worked fine, but our processor was at 100%, this needs fixing, so in this example instead of constantly polling and setting GPIO pins, we are using a interrupt where by we do nothing until a button is actually pressed. 
-\\  
-\\  
-Create a new file in the normal way ( you can download the python file {{ :led-button-i.zip |here}} to save time) 
-\\  
-    sudo nano LED-Button-i.py 
  
-    #import modules 
-    import RPi.GPIO as GPIO    # This imports the GPIO library that allows the use of the GPIO pins, 
-    import time                # This imports the time library (for delays among other things) 
-                               # These libraries are built in to Raspbian. 
-     
-    GPIO.setmode (GPIO.BOARD)  # This sets the GPIO pin numbering. Our LED is connected to Pin 12, 
-                               # so we can reference it by using BOARD as pin 12. However there is 
-                               # another option (BCM) where we can reference a pin by it's name, pin 
-                               # 12 is called GPIO18 (a reference to its place on the chip). 
-     
-    GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # setup GPIO Pin 11 as an input, and set 
-                                                        # the resistor to Pull Down (PUD_DOWN) 
-                                                        # this is the pin the button is connected to 
-                                                        # button is connected from pin 11 to the 
-                                                        # +3.3v pin on the GPIO 
-     
-    # this def buttonPressed needs to be defined before it can be reference in the GPIO.add_event_detect 
-    def buttonPressed(channel):    # this is where our code will look when button is pressed 
-        print "Button is Pressed"  # print something to the screen 
-        GPIO.output(12,1)          # set GPIO pin 12 to high (3.3v) so LED will come on 
-     
-    # this is where we setup the GPIO input to use the event buttonPressed that was 
-    # defined previously. bouncetime is a simple switch debouncer in mS. 
-    GPIO.add_event_detect(11, GPIO.RISING, callback=buttonPressed, bouncetime=500)     
-     
-    GPIO.setup(12, GPIO.OUT)   # Sets the GPIO pin as output. This is connected to the LED, then 
-                               # from the LED to 0v via a 330 Ohm resistor. 
-     
-    GPIO.output(12, 0)         # sets the GPIO Pin 12 to low (so 0v) 
-     
-    try: 
-            while True:                             # start a loop 
-                    time.sleep(1)                   # 1 second delay (or LED wont stay illuminated 
-                    GPIO.output(12,0)               # Set PIN 12 to 0v so LED is off 
-    except KeyboardInterrupt:                       # if Ctrl-C is pressed, exit loop 
-            GPIO.cleanup()                          # reset GPIO pins to default state 
-     
-    #End 
gpio_inputs_-_button_led_control_using_an_interrupt.1470780309.txt.gz · Last modified: 2023/03/09 22:35 (external edit)