The Button()
function returns a button object, and with that
object you have access to a wide array of button functions. To use the
Button()
function, as we have done throughout the guide, you
simply call:
Button(pin)
where pin
is the number of the GPIO pin that is
labeled on the Lid Connector Board. The simplest thing we can do with a
button, as we've done previously, is to see if the button is being
pressed:
The above checks (and prints out) if the button attached to GPIO14 is currently being pressed.
The is_pressed()
function is simple and easy to use, but has
a couple issues. One issue is that it only checks to see if the button is
being pressed at the time it is checked, so if our code isn't checking very
frequently for a button press, the press can be missed.
For example, say we write some code that checks once a second to see if the button is pressed. If a user pushes and releases the button quickly (for example, in a quarter of a second), it is likely the code will miss the button press — it might check for a press before the button is pressed and then check again after the button was pressed, but if it doesn't check during the press, the code will not know the press happened.
The Button
object can fix this problem with a couple new functions. The
function
presses()
returns the number of times the button has
been pressed since the last time the function was called.
Similarly, the function releases()
returns the number of
times the button has been released since the last time the function was
called. For example, if you run the following code, and push the button
several times while it is running (during the sleep()
, the output
will be the number of presses:
There are often times when you don't want to do anything in your code except wait until a certain button is pressed. A simple way to do this is highlighted with arrows below:
The above code will wait until the button is pressed (that is, the
while
loop keeps running while there are zero
presses()
, and then it outputs a message once a press
occurs.
While the code above will work, there's a simpler and more efficient way
to do this using the function wait()
, provided by the Button
object:
The Button
object also provides a function,
wait_many(buttons)
that will wait for any button in a list of
buttons
to be pressed. But, because wait_many()
works with a bunch of buttons together, and not a specific button, the way
you call it is a little different.
To call the wait_many()
function, you need to call
Button.wait_many(buttons)
. For example, say you had the same
four buttons hooked up as in the project.
Then, to wait for any one of them to be pressed, you would use the following
code: