11 KiB
Jumperless MicroPython API Reference
This document provides a comprehensive reference for the jumperless
MicroPython module, which allows for direct control over the Jumperless hardware.
A Note on Usage
All functions and constants from the jumperless
module are automatically imported into the global namespace. This means you can call them directly (e.g., connect(1, 5)
) without needing the jumperless.
prefix.
There are three primary ways to specify nodes in functions:
- By Number: Use the integer corresponding to the breadboard row (1-60).
- By String Name: Use a case-insensitive string for any named node (e.g.,
"d13"
,"TOP_RAIL"
). - By Constant: Use the predefined, case-sensitive constant for a node (e.g.,
D13
,TOP_RAIL
).
Node Connections
These functions manage the connections between nodes on the breadboard and special function pins.
connect(node1, node2, [save=True])
Creates a bridge between two nodes.
node1
,node2
: The nodes to connect. Can be integers, strings, or constants.save
(optional): IfTrue
(default), the connection is saved to the current slot's node file. IfFalse
, it's a temporary connection for the current session.
Example:
# Connect breadboard row 1 to row 30
connect(1, 30)
# Connect Arduino D13 to the top power rail
connect(D13, TOP_RAIL)
# Connect GPIO 1 to ADC 0 using strings
connect("GPIO_1", "ADC0")
disconnect(node1, node2)
Removes a specific bridge between two nodes.
node1
,node2
: The two nodes to disconnect.- To remove all connections from a single node, set
node2
to-1
.
Example:
# Remove the bridge between rows 1 and 30
disconnect(1, 30)
# Remove all connections from GPIO_1
disconnect(GPIO_1, -1)
is_connected(node1, node2)
Checks if a direct or indirect connection exists between two nodes.
- Returns a custom
ConnectionState
object which evaluates toTrue
if connected (CONNECTED
) andFalse
if not (DISCONNECTED
).
Example:
if is_connected(D13, TOP_RAIL):
print("D13 is connected to the top rail.")
state = is_connected(1, 2)
print(state) # Prints "CONNECTED" or "DISCONNECTED"
nodes_clear()
Removes all connections from the board.
Example:
nodes_clear()
print("All connections cleared.")
node(name_or_id)
Creates a node object from a string name or integer ID. This is useful for storing a node reference in a variable.
Example:
my_pin = node("D7")
led_pin = node(15)
connect(my_pin, led_pin)
oled_print(my_pin) # Displays 'D7' on the OLED
DAC (Digital-to-Analog Converter)
Functions for controlling the analog voltage outputs.
dac_set(channel, voltage, [save=True])
Sets the output voltage for a specific DAC channel.
channel
: The DAC channel to set. Can be an integer (0-3) or a node constant (DAC0
,DAC1
,TOP_RAIL
,BOTTOM_RAIL
).voltage
: The desired voltage (from -8.0V to 8.0V).save
(optional): IfTrue
(default), the setting is saved to the config file.- Aliases:
set_dac()
Channels:
0
orDAC0
: The 5V tolerant DAC output.1
orDAC1
: The 8V tolerant DAC output.2
orTOP_RAIL
: The top power rail.3
orBOTTOM_RAIL
: The bottom power rail.
Example:
# Set the top rail to 5V
dac_set(TOP_RAIL, 5.0)
# Set DAC0 to 1.25V
set_dac(DAC0, 1.25)
dac_get(channel)
Reads the currently set voltage for a DAC channel.
channel
: The DAC channel to read.- Returns a float.
- Aliases:
get_dac()
Example:
voltage = dac_get(TOP_RAIL)
print("Top Rail voltage: " + str(voltage))
ADC (Analog-to-Digital Converter)
Functions for measuring analog voltages.
adc_get(channel)
Reads the voltage from a specific ADC channel.
channel
: The ADC channel to read (0-4).- Returns a float.
- Aliases:
get_adc()
Channels:
0-3
: 8V tolerant ADC inputs.4
: 5V tolerant ADC input.
Example:
voltage = adc_get(0)
print("ADC0 voltage: " + str(voltage))
GPIO (General Purpose Input/Output)
Functions for controlling the digital I/O pins.
gpio_set(pin, value)
Sets the output state of a GPIO pin.
pin
: The GPIO pin number (1-10).value
:True
for HIGH,False
for LOW.- Aliases:
set_gpio()
gpio_get(pin)
Reads the state of a GPIO pin.
pin
: The GPIO pin number (1-10).- Returns a
GPIOState
object (HIGH
,LOW
, orFLOATING
). - Aliases:
get_gpio()
gpio_set_dir(pin, direction)
Sets the direction of a GPIO pin.
pin
: The GPIO pin number (1-10).direction
:True
for OUTPUT,False
for INPUT.- Aliases:
set_gpio_dir()
gpio_get_dir(pin)
Reads the direction of a GPIO pin.
pin
: The GPIO pin number (1-10).- Returns a
GPIODirection
object (INPUT
orOUTPUT
). - Aliases:
get_gpio_dir()
gpio_set_pull(pin, pull)
Configures the internal pull resistor for a GPIO pin.
pin
: The GPIO pin number (1-10).pull
:1
for PULLUP,-1
for PULLDOWN,0
for NONE.- Aliases:
set_gpio_pull()
gpio_get_pull(pin)
Reads the pull resistor configuration of a GPIO pin.
pin
: The GPIO pin number (1-10).- Returns a
GPIOPull
object (PULLUP
,PULLDOWN
, orNONE
). - Aliases:
get_gpio_pull()
Pinout:
1-8
: Routable GPIO pinsGPIO_1
toGPIO_8
.9
:UART_TX
.10
:UART_RX
.
Example:
# Set GPIO 1 as an output and turn it on
gpio_set_dir(1, True)
gpio_set(1, True)
# Set GPIO 2 as an input with a pull-up
gpio_set_dir(2, False)
gpio_set_pull(2, 1)
# Read the state of GPIO 2
state = gpio_get(2)
if state == HIGH:
print("GPIO 2 is HIGH")
PWM (Pulse-Width Modulation)
Functions for generating PWM signals on GPIO pins.
pwm(pin, [frequency], [duty_cycle])
Sets up and starts a PWM signal on a GPIO pin.
pin
: The GPIO pin to use (1-8).frequency
(optional): The PWM frequency in Hz (10.0 to 62,500,000.0). Defaults to 1000.duty_cycle
(optional): The duty cycle from 0.0 to 1.0. Defaults to 0.5.- Aliases:
set_pwm()
pwm_set_duty_cycle(pin, duty_cycle)
Changes the duty cycle of an existing PWM signal.
pin
: The GPIO pin number (1-8).duty_cycle
: The new duty cycle (0.0 to 1.0).- Aliases:
set_pwm_duty_cycle()
pwm_set_frequency(pin, frequency)
Changes the frequency of an existing PWM signal.
pin
: The GPIO pin number (1-8).frequency
: The new frequency in Hz.- Aliases:
set_pwm_frequency()
pwm_stop(pin)
Stops the PWM signal on a GPIO pin.
pin
: The GPIO pin number (1-8).- Aliases:
stop_pwm()
Example:
# Start a 1kHz, 25% duty cycle PWM on GPIO_1
pwm(GPIO_1, 1000, 0.25)
# Change the duty cycle to 75%
pwm_set_duty_cycle(GPIO_1, 0.75)
# Stop the PWM signal
pwm_stop(GPIO_1)
INA (Current/Power Monitor)
Functions for reading data from the INA219 current sensors.
ina_get_current(sensor)
Reads the current in Amps.
sensor
: The sensor to read (0 or 1).- Aliases:
get_current()
ina_get_voltage(sensor)
Reads the shunt voltage in Volts.
sensor
: The sensor to read (0 or 1).- Aliases:
get_voltage()
ina_get_bus_voltage(sensor)
Reads the bus voltage in Volts.
sensor
: The sensor to read (0 or 1).- Aliases:
get_bus_voltage()
ina_get_power(sensor)
Reads the power in Watts.
sensor
: The sensor to read (0 or 1).- Aliases:
get_power()
Example:
current_mA = ina_get_current(0) * 1000
print("Current: " + str(current_mA) + " mA")
OLED Display
Functions for controlling the onboard OLED display.
oled_print(text, [size=2])
Displays text on the OLED screen. It can print strings, numbers, and custom Jumperless types.
text
: The content to display.size
(optional): The font size (1 or 2). Defaults to 2.
oled_clear()
Clears the OLED display.
oled_show()
Refreshes the OLED display to show the latest changes. (Note: Often not needed as oled_print
handles this).
oled_connect()
Connects the I2C lines to the OLED display.
oled_disconnect()
Disconnects the I2C lines from the OLED display.
Example:
oled_connect()
oled_print("Hello!")
time.sleep(2)
oled_clear()
oled_disconnect()
Probe
Functions for interacting with the physical probe.
probe_read([blocking=True])
Reads the pad currently being touched by the probe.
blocking
(optional): IfTrue
(default), the function will wait until a pad is touched. IfFalse
, it returns immediately.- Returns a
ProbePad
object (e.g.,25
,D13_PAD
,NO_PAD
). - Aliases:
read_probe()
,probe_read_blocking()
,probe_read_nonblocking()
,probe_wait()
,wait_probe()
,probe_touch()
,wait_touch()
probe_button([blocking=True])
Reads the state of the buttons on the probe.
blocking
(optional): IfTrue
(default), waits for a button press. IfFalse
, returns the current state immediately.- Returns a
ProbeButton
object (CONNECT_BUTTON
,REMOVE_BUTTON
, orBUTTON_NONE
). - Aliases:
get_button()
,button_read()
,read_button()
,probe_button_blocking()
,probe_button_nonblocking()
,check_button()
,button_check()
Example:
print("Touch a pad...")
pad = probe_read()
print("You touched: " + str(pad))
if pad == D13_PAD:
print("That's the Arduino LED pin!")
print("Press a probe button...")
button = get_button()
if button == CONNECT_BUTTON:
print("Connect button pressed.")
System Functions
arduino_reset()
Resets the connected Arduino Nano.
run_app(appName)
Launches a built-in Jumperless application.
appName
: The name of the app to run (e.g., "File Manager", "I2C Scan").
Status Functions
These functions print detailed status information to the serial console.
print_bridges()
: Prints all active bridges.print_paths()
: Prints all resolved paths between nodes.print_crossbars()
: Prints the raw state of the crossbar matrix.print_nets()
: Prints the current net list.print_chip_status()
: Prints the status of the CH446Q chips.
Help Functions
help()
Displays a comprehensive list of all available functions and constants in the jumperless
module.
nodes_help()
Displays a detailed reference for all available node names and their aliases.