Lookup here …
Pins setup
Basic Digital Input/Output
This is the most common and straightforward method:
import board
import digitalio
# Setup a pin as an output
led_pin = digitalio.DigitalInOut(board.D13) # Built-in LED on many boards
led_pin.direction = digitalio.Direction.OUTPUT
# Turn the LED on/off
led_pin.value = True # On
led_pin.value = False # Off
# Setup a pin as an input
button_pin = digitalio.DigitalInOut(board.D2)
button_pin.direction = digitalio.Direction.INPUT
button_pin.pull = digitalio.Pull.UP # Enable internal pull-up resistor
# Read the input
if not button_pin.value: # Button is pressed (pulled LOW)
print("Button pressed!"
A little more compact by just importing the modules you really need:
import board from digitalio import DigitalInOut, Direction, Pull led_pin = DigitalInOut(board.D13) led_pin.direction = Direction.OUTPUT button_pin = DigitalInOut(board.D2) button_pin.direction = Direction.INPUT button_pin.pull = Pull.UP
If more pins need to be setup, create a helper function:
import board
import digitalio
def setup_output(pin):
pin_out = digitalio.DigitalInOut(pin)
pin_out.direction = digitalio.Direction.OUTPUT
return pin_out
# Now use it like this:
led_pin = setup_output(board.D13)
led_pin.value = True
Input with External Pull-up/Pull-down
import board
import digitalio
# Input with pull-down resistor
button_pin = digitalio.DigitalInOut(board.D3)
button_pin.direction = digitalio.Direction.INPUT
button_pin.pull = digitalio.Pull.DOWN # Enable internal pull-down resistor
# With pull-down, button press reads HIGH
if button_pin.value:
print("Button pressed!")
Analog input
import board
import analogio
import time
# Setup an analog input
analog_in = analogio.AnalogIn(board.A0) # A0 is typically analog-capable
# Function to convert the analog reading to voltage
def get_voltage(pin, reference_voltage=3.3):
return (pin.value * reference_voltage) / 65536
# Read the analog pin
while True:
voltage = get_voltage(analog_in)
print(f"Analog voltage: {voltage:.2f}V")
time.sleep(0.1)
PWM Output (Dimming LEDs, Servo Control)
import board
import pwmio
import time
# Setup PWM output for LED dimming
pwm_led = pwmio.PWMOut(board.D5, frequency=5000, duty_cycle=0)
# Fade the LED
for i in range(100):
# PWM duty cycle goes from 0 to 65535, so scale 0-100 to 0-65535
pwm_led.duty_cycle = int(i * 655.35)
time.sleep(0.01)
# For servo control (typically 50Hz frequency with pulse width 1-2ms)
servo = pwmio.PWMOut(board.D6, frequency=50)
# 0 degrees position (duty cycle ~2.5% or 1638/65535)
servo.duty_cycle = 1638
time.sleep(1)
# 180 degrees position (duty cycle ~12.5% or 8192/65535)
servo.duty_cycle = 8192