Paul Baumgarten

Computer Scientist, teacher, freelance programmer and self confessed geek

Raspberry Pi: Using buttons

This diagram shows the new wiring to add. Do not disconnect the LED wiring, you will still use the LED!

There's a couple of different ways a button can be used. We're just going to query the state of the button at a given moment in time. Using the Button class we have created, the .get() function will return True if the button is being pressed and False if it is not.

Replace the content of your main.py with the following to test a button:

import time
import easyaspi

BUTTON_PIN = 5                      # Change to whatever pin you connected to
button = easyaspi.Button(BUTTON_PIN)# Create our button vairable

end_at = time.time() + 30           # We'll run for 30 seconds
while time.time() < end_at:
    if button.get():
        print("You are pressing the button")
    time.sleep(0.3)                 # Wait part of a second and check again

Do you still have your LED wired up? We could use our button to turn it on and off! Press once to turn the LED on, press again to turn it off.

import time
import easyaspi

LED_PIN = 4
BUTTON_PIN = 5
led = easyaspi.LED(LED_PIN)
button = easyaspi.Button(BUTTON_PIN)

end_at = time.time() + 30           # We'll run for 30 seconds
while time.time() < end_at:
    if button.get():
        print("You are pressing the button")
        led_status = led.get()      # What is the status of the LED?
        led.set( not led_status )   # Flip the status of the LED
    time.sleep(0.3)                 # Wait part of a second and check again

Button summary

The key parts to using a Button are:

  • Create the Button variable
import easyaspi
button = easyaspi.Button( pin_number )
  • Retrieve if the button is being pressed
button_state = button.get()