This quick-start example shows how you can read the capacitive touch sensors built into on seven of the Circuit Playground Express pads (pad A0/Audio is not a capacitive touch pad).
In the example below, click the Download Project Bundle button below to download the necessary files in a zip file. Extract the contents of the zip file, open the directory Introducing_CircuitPlaygroundExpress/CircuitPlaygroundExpress_CapTouch/ and then click on the directory that matches the version of CircuitPython you're using and copy code.py to your CIRCUITPY drive.
Your CIRCUITPY drive should now look similar to the following image:

# SPDX-FileCopyrightText: 2017 John Edgar Park for Adafruit Industries # # SPDX-License-Identifier: MIT # Circuit Playground Capacitive Touch import time import board import touchio touch_A1 = touchio.TouchIn(board.A1) touch_A2 = touchio.TouchIn(board.A2) touch_A3 = touchio.TouchIn(board.A3) touch_A4 = touchio.TouchIn(board.A4) touch_A5 = touchio.TouchIn(board.A5) touch_A6 = touchio.TouchIn(board.A6) touch_TX = touchio.TouchIn(board.TX) while True: if touch_A1.value: print("A1 touched!") if touch_A2.value: print("A2 touched!") if touch_A3.value: print("A3 touched!") if touch_A4.value: print("A4 touched!") if touch_A5.value: print("A5 touched!") if touch_A6.value: print("A6 touched!") if touch_TX.value: print("TX touched!") time.sleep(0.01)
You can open up the serial console, then touch each touch pad to see the touches detected and printed out.
Creating an capacitive touch input
Pads A1 - A6 and TX can be used as capacitive TouchIn devices:
touch_A1 = touchio.TouchIn(board.A1)
touch_A2 = touchio.TouchIn(board.A2)
touch_A3 = touchio.TouchIn(board.A3)
touch_A4 = touchio.TouchIn(board.A4)
touch_A5 = touchio.TouchIn(board.A5)
touch_A6 = touchio.TouchIn(board.A6)
touch_TX = touchio.TouchIn(board.TX)
This code creates seven objects, one connected to each of the cap touch pads.
Main Loop
The main loop checks each sensor one after the other, to determine if it has been touched. If touch_A1.value
returns True, that means that that pad, A1
, detected a touch. For each pad, if it has been touched, a message will print.
A small sleep delay is added at the end so the loop doesn't run too fast. You may want to change the delay from 0.1 seconds to 0 seconds to slow it down or increase it to speed it up.
Note that no extra hardware is required, you can touch the pads directly, but you may want to attach alligator clips or foil tape to metallic or conductive objects. Try silverware, fruit or other food, liquid, aluminum foil, and items around your desk!
You may need to restart your code/board after changing the attached item because the capacitive touch code 'calibrates' based on what it sees when it first starts up. So if you get too many touch-signals or not enough, hit that reset button!



Capacitive Touch and the Audio Pin on Circuit Playground Bluefruit
On the Circuit Playground Bluefruit, if you touch any of the touch pads at the same time as touching the Audio pin, you may hear a clicking or buzzing coming from the speaker. This is due to how the capacitive touch on the Bluefruit works. If you run into this and wish to avoid it, you can turn the speaker off using code by including the following in your code.py:
import digitalio speaker = digitalio.DigitalInOut(board.SPEAKER_ENABLE) speaker.switch_to_output(value=False)
Page last edited January 22, 2025
Text editor powered by tinymce.