The CircuitPython digitalio
module has many applications. The basic Blink program sets up the LED as a digital output. You can just as easily set up a digital input such as a button to control the LED. This example builds on the basic Blink example, but now includes setup for a button switch. Instead of using the time
module to blink the LED, it uses the status of the button switch to control whether the LED is turned on or off.
Controlling the LED with a Button
In the example below, click the Download Project Bundle button below to download the necessary libraries and the code.py file in a zip file. Extract the contents of the zip file, open the directory CircuitPython_Templates/digital_input_built_in_button_led/ and then click on the directory that matches the version of CircuitPython you're using.
# SPDX-FileCopyrightText: 2022 Kattni Rembor for Adafruit Industries # SPDX-License-Identifier: MIT """ CircuitPython Digital Input Example - Blinking an LED using the built-in button. """ import board import digitalio led = digitalio.DigitalInOut(board.LED) led.direction = digitalio.Direction.OUTPUT button = digitalio.DigitalInOut(board.BUTTON) button.switch_to_input(pull=digitalio.Pull.UP) while True: if not button.value: led.value = True else: led.value = False
In the editor window in your browser, click the Open button to view the file dialog. Then, click the Upload button and select Upload Files.
You'll be asked if you want to overwrite the previous code.py with the new code.py file from the Project Bundle. Click OK.
You'll see a new code.py file appear in the file browser. Select it and click Open to view it in the code editor.
You'll see the digital input code.py file contents. Click Restart above the Serial monitor to run the digital input code.
Now, press the button. The LED lights up! Let go of the button and the LED turns off.
Note that the code is a little less "Pythonic" than it could be. It could also be written as led.value = not button.value
. That way is more difficult to understand if you're new to programming, so the example is a bit longer than it needed to be to make it easier to read.
First you import
two modules: board
and digitalio
. This makes these modules available for use in your code. Both are built-in to CircuitPython, so you don't need to download anything to get started.
Next, you set up the LED. To interact with hardware in CircuitPython, your code must let the board know where to look for the hardware and what to do with it. So, you create a digitalio.DigitalInOut()
object, provide it the LED pin using the board
module, and save it to the variable led
. Then, you tell the pin to act as an OUTPUT
.
You include setup for the button as well. It is similar to the LED setup, except the button is an INPUT
, and requires a pull up.
Inside the loop, you check to see if the button is pressed, and if so, turn on the LED. Otherwise the LED is off.
That's all there is to controlling an LED with a button switch!
Text editor powered by tinymce.