Board API
The board API allows you to give commands to your board components for setting GPIO pins to high or low, setting PWM, and working with analog and digital interrupts.
The board component supports the following methods:
| Method Name | Description | viam-micro-server Support |
|---|---|---|
SetGPIO | Set the digital signal output of this pin to low (0V) or high (active, >0V). | |
GetGPIO | Get if the digital signal output of this pin is high (active, >0V). | |
GetPWM | Get the pin’s pulse-width modulation (PWM) duty cycle: a float [0.0, 1.0] representing the percentage of time the digital signal output by this pin is in the high state (active, >0V) relative to the interval period of the PWM signal (interval period being the mathematical inverse of the PWM frequency). | |
SetPWM | Set the pin’s Pulse-width modulation (PWM) duty cycle: a float [0.0, 1.0] indicating the percentage of time the digital signal output of this pin is in the high state (active, >0V) relative to the interval period of the PWM signal (interval period being the mathematical inverse of the PWM frequency). | |
PWMFrequency | Get the PWM frequency of the GPIO pin. | |
SetPWMFrequency | Set the pin to the given PWM frequency (in Hz). When frequency is 0, it will use the board’s default PWM frequency. | |
GetDigitalInterruptValue | Get the current value of a configured digital interrupt. | |
ReadAnalogReader | Read the current integer value of the digital signal output by the ADC. | |
WriteAnalog | Write an analog value to a pin on the board. | |
StreamTicks | Start a stream of DigitalInterrupt ticks. | |
SetPowerMode | Set the board to the indicated PowerMode. | |
AnalogByName | Get a configured Analog by name. | |
DigitalInterruptByName | Get a DigitalInterrupt by name. | |
GPIOPinByName | Get a GPIOPin by pin number. | |
GetGeometries | Get all the geometries associated with the board in its current configuration, in the frame of the board. | |
Reconfigure | Reconfigure this resource. | |
DoCommand | Execute model-specific commands that are not otherwise defined by the component API. | |
GetResourceName | Get the ResourceName for this board. | |
Close | Safely shut down the resource and prevent further use. |
API
SetGPIO
Set the digital signal output of this pin to low (0V) or high (active, >0V).
Supported by viam-micro-server.
Parameters:
high(bool) (required): When true, sets the pin to high. When false, sets the pin to low.extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- None.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the GPIOPin with pin number 15.
pin = await my_board.gpio_pin_by_name(name="15")
# Set the pin to high.
await pin.set(high=True)
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.high(bool): Iftrue, set the state of the pin to high. Iffalse, set the state of the pin to low.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the GPIOPin with pin number 15.
pin, err := myBoard.GPIOPinByName("15")
// Set the pin to high.
err = pin.Set(context.Background(), true, nil)
For more information, see the Go SDK Docs.
Parameters:
pin(string) (required): The pin number.high(boolean) (required): When true, set the given pin to high. When false, set the given pin to low.extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise
)
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Set the pin to high.
await board.setGPIO('15', true);
For more information, see the TypeScript SDK Docs.
GetGPIO
Get if the digital signal output of this pin is high (active, >0V).
Supported by viam-micro-server.
Parameters:
extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- (bool): : Indicates if the state of the pin is high.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the GPIOPin with pin number 15.
pin = await my_board.gpio_pin_by_name(name="15")
# Get if it is true or false that the state of the pin is high.
high = await pin.get()
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
- (bool): If
true, the state of the pin is high. Iffalse, the state of the pin is low. - (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the GPIOPin with pin number 15.
pin, err := myBoard.GPIOPinByName("15")
// Get if it is true or false that the state of the pin is high.
high, err := pin.Get(context.Background(), nil)
For more information, see the Go SDK Docs.
Parameters:
pin(string) (required): The pin number.extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise
)
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Get if it is true or false that the state of the pin is high.
const high = await board.getGPIO('15');
For more information, see the TypeScript SDK Docs.
GetPWM
Info
Pulse-width modulation (PWM) is a method where of transmitting a digital signal in the form of pulses to control analog circuits. With PWM on a board, the continuous digital signal output by a GPIO pin is sampled at regular intervals and transmitted to any hardware components wired to the pin that read analog signals. This enables the board to communicate with these components.
Get the pin’s pulse-width modulation (PWM) duty cycle: a float [0.0, 1.0] representing the percentage of time the digital signal output by this pin is in the high state (active, >0V) relative to the interval period of the PWM signal (interval period being the mathematical inverse of the PWM frequency).
Supported by viam-micro-server.
Parameters:
extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- (float): : The duty cycle.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the GPIOPin with pin number 15.
pin = await my_board.gpio_pin_by_name(name="15")
# Get if it is true or false that the state of the pin is high.
duty_cycle = await pin.get_pwm()
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
- (float64): A float [
0.0,1.0] representing the percentage of time the digital signal output by this pin is in the high state relative to the interval period of the PWM signal. - (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the GPIOPin with pin number 15.
pin, err := myBoard.GPIOPinByName("15")
// Returns the duty cycle.
duty_cycle, err := pin.PWM(context.Background(), nil)
For more information, see the Go SDK Docs.
Parameters:
pin(string) (required): The pin number.extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise
): The duty cycle, which is a value from 0 to 1.
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Get the duty cycle of this pin.
const dutyCycle = await board.getPWM('15');
For more information, see the TypeScript SDK Docs.
SetPWM
Set the pin’s Pulse-width modulation (PWM) duty cycle: a float [0.0, 1.0] indicating the percentage of time the digital signal output of this pin is in the high state (active, >0V) relative to the interval period of the PWM signal (interval period being the mathematical inverse of the PWM frequency).
Supported by viam-micro-server.
Parameters:
duty_cycle(float) (required): The duty cycle.extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- None.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the GPIOPin with pin number 15.
pin = await my_board.gpio_pin_by_name(name="15")
# Set the duty cycle to .6, meaning that this pin will be in the high state for
# 60% of the duration of the PWM interval period.
await pin.set_pwm(duty_cycle=.6)
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.dutyCyclePct(float64): A float [0.0,1.0] representing the percentage of time the digital signal output by this pin is in the high state relative to the interval period of the PWM signal.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the GPIOPin with pin number 15.
pin, err := myBoard.GPIOPinByName("15")
// Set the duty cycle to .6, meaning that this pin will be in the high state for 60% of the duration of the PWM interval period.
err = pin.SetPWM(context.Background(), .6, nil)
For more information, see the Go SDK Docs.
Parameters:
pin(string) (required): The pin.dutyCyle(number) (required)extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise
)
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Set the duty cycle to 0.6, meaning that this pin will be in the high state for
// 60% of the duration of the PWM interval period.
await board.setPWM('15', 0.6);
For more information, see the TypeScript SDK Docs.
PWMFrequency
Get the PWM frequency of the GPIO pin.
Supported by viam-micro-server.
Parameters:
extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- (int): : The PWM frequency.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the GPIOPin with pin number 15.
pin = await my_board.gpio_pin_by_name(name="15")
# Get the PWM frequency of this pin.
freq = await pin.get_pwm_frequency()
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
- (uint): The PWM Frequency in Hertz (Hz) (the count of PWM interval periods per second) the digital signal output by this pin is set to.
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the GPIOPin with pin number 15.
pin, err := myBoard.GPIOPinByName("15")
// Get the PWM frequency of this pin.
freqHz, err := pin.PWMFreq(context.Background(), nil)
For more information, see the Go SDK Docs.
Parameters:
pin(string) (required): The pin.extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise
)
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Get the PWM frequency of this pin.
const freq = await board.getPWMFrequency('15');
For more information, see the TypeScript SDK Docs.
SetPWMFrequency
Set the pin to the given PWM frequency (in Hz). When frequency is 0, it will use the board’s default PWM frequency.
Note
If you attempt to set an unsupported PWM frequency on an esp32, the frequency will revert to the last valid frequency.
This may restart the PWM signal.
viam-micro-server.Parameters:
frequency(int) (required): The frequency, in Hz.extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- None.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the GPIOPin with pin number 15.
pin = await my_board.gpio_pin_by_name(name="15")
# Set the PWM frequency of this pin to 1600 Hz.
high = await pin.set_pwm_frequency(frequency=1600)
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.freqHz(uint): The PWM Frequency in Hertz (Hz), the count of PWM interval periods per second, to set the digital signal output by this pin to.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the GPIOPin with pin number 15.
pin, err := myBoard.GPIOPinByName("15")
// Set the PWM frequency of this pin to 1600 Hz.
err = pin.SetPWMFreq(context.Background(), 1600, nil)
For more information, see the Go SDK Docs.
Parameters:
pin(string) (required): The pin.frequencyHz(number) (required): The PWM frequency, in hertz. 0 will use the board’s default PWM frequency.extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise
)
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Set the PWM frequency of this pin to 1600 Hz.
await board.setPWMFrequency('15', 1600);
For more information, see the TypeScript SDK Docs.
GetDigitalInterruptValue
Get the current value of a configured digital interrupt. The value is the number of times the interrupt has been interrupted with a tick.
Parameters:
extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- (int): : The current value.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the DigitalInterrupt "my_example_digital_interrupt".
interrupt = await my_board.digital_interrupt_by_name(
name="my_example_digital_interrupt")
# Get the amount of times this DigitalInterrupt has been interrupted with a
# tick.
count = await interrupt.value()
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the DigitalInterrupt "my_example_digital_interrupt".
interrupt, err := myBoard.DigitalInterruptByName("my_example_digital_interrupt")
// Get the amount of times this DigitalInterrupt has ticked.
count, err := interrupt.Value(context.Background(), nil)
For more information, see the Go SDK Docs.
Parameters:
digitalInterruptName(string) (required): The name of the digital interrupt.extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise
)
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Get the number of times this DigitalInterrupt has been interrupted with a tick.
const count = await board.getDigitalInterruptValue(
'my_example_digital_interrupt'
);
For more information, see the TypeScript SDK Docs.
Parameters:
Returns:
Example:
// Get the current value of a digital interrupt named "my_example_digital_interrupt"
var interruptVal = await myBoard.digitalInterruptValue('my_example_digital_interrupt');
For more information, see the Flutter SDK Docs.
ReadAnalogReader
Read the current integer value of the digital signal output by the ADC.
Supported by viam-micro-server.
Parameters:
extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- (viam.components.board.board.Board.Analog.Value): : The current value, including the min, max, and step_size of the reader.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the Analog "my_example_analog_reader".
reader = await my_board.analog_by_name(
name="my_example_analog_reader")
# Get the value of the digital signal "my_example_analog_reader" has most
# recently measured.
reading = await reader.read()
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
- (AnalogValue): The current value, including the integer
Valueof the digital signal output by the analog pin and theMin,Max, andStepSizeof the reader. - (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the analog pin "my_example_analog".
analog, err := myBoard.AnalogByName("my_example_analog")
// Get the value of the analog signal "my_example_analog" has most recently measured.
reading, err := analog.Read(context.Background(), nil)
readingValue := reading.Value
stepSize := reading.StepSize
For more information, see the Go SDK Docs.
Parameters:
analogReader(string) (required): The name of the analog reader.extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise<ReadAnalogReaderResponse>)
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Get the value of the analog signal "my_example_analog_reader" has most
// recently measured.
const reading = await board.readAnalogReader(
'my_example_analog_reader'
);
For more information, see the TypeScript SDK Docs.
Parameters:
Returns:
Example:
// Get the current value of an analog reader named "my_example_analog"
var analogVal = await myBoard.analogReaderValue('my_example_analog');
For more information, see the Flutter SDK Docs.
WriteAnalog
Write an analog value to a pin on the board.
Supported by viam-micro-server.
Parameters:
value(int) (required): Value to write to the analog writer.extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- None.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the Analog "my_example_analog_writer".
writer = await my_board.analog_by_name(
name="my_example_analog_writer")
await writer.write(42)
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.value(int): Value to write to the pin.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the Analog pin "my_example_analog".
analog, err := myBoard.AnalogByName("my_example_analog")
// Set the pin to value 48.
err = analog.Write(context.Background(), 48, nil)
For more information, see the Go SDK Docs.
Parameters:
pin(string) (required): The pin name.value(number) (required): An integer value to write.extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise
)
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Write the value 42 to "my_example_analog_writer".
await board.writeAnalog('my_example_analog_writer', 42);
For more information, see the TypeScript SDK Docs.
StreamTicks
Start a stream of DigitalInterrupt ticks.
Parameters:
interrupts(List[viam.components.board.board.Board.DigitalInterrupt]) (required): list of digital interrupts to receive ticks from.extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.
Returns:
- (viam.components.board.board.TickStream): : stream of ticks.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
di8 = await my_board.digital_interrupt_by_name(name="8")
di11 = await my_board.digital_interrupt_by_name(name="11")
# Iterate over stream of ticks from pins 8 and 11.
async for tick in await my_board.stream_ticks([di8, di11]):
print(f"Pin {tick.pin_name} changed to {'high' if tick.high else 'low'} at {tick.time}")
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.interrupts([]DigitalInterrupt): Slice of digital interrupts to receive ticks from.ch chan(Tick): The channel to stream Ticks, structs containingName,High, andTimestampNanosecfields.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Make a channel to stream ticks
ticksChan := make(chan board.Tick)
interrupts := []*DigitalInterrupt{}
if di8, err := myBoard.DigitalInterruptByName("8"); err == nil {
interrupts = append(interrupts, di8)
}
if di11, err := myBoard.DigitalInterruptByName("11"); err == nil {
interrupts = append(interrupts, di11)
}
err = myBoard.StreamTicks(context.Background(), interrupts, ticksChan, nil)
For more information, see the Go SDK Docs.
Parameters:
interrupts(string) (required): Names of the interrupts to stream.queue(Tick) (required): Array to put the ticks in.extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise
)
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Stream ticks from pins 8 and 11.
const ticks = await board.streamTicks(['8', '11']);
for await (const tick of ticks) {
console.log(
`Pin ${tick.pinName} changed to ${tick.high ? 'high' : 'low'} at ${tick.time}`
);
}
For more information, see the TypeScript SDK Docs.
Parameters:
Returns:
Example:
// Stream ticks from digital interrupts on pins 8 and 11
var interrupts = ['8', '11'];
Stream<Tick> tickStream = await myBoard.streamTicks(interrupts);
For more information, see the Flutter SDK Docs.
SetPowerMode
Set the board to the indicated PowerMode.
Info
This method may not receive a successful response from gRPC when you set the board to the offline power mode PowerMode.POWER_MODE_OFFLINE_DEEP.
When this is the case for your board model, the call is returned with an error specifying that the remote procedure call timed out or that the endpoint is no longer available. This is expected: the board has been successfully powered down and can no longer respond to messages.
Parameters:
mode(viam.proto.component.board.PowerMode.ValueType) (required): The desired power mode.duration(datetime.timedelta) (optional): Requested duration to stay in power mode.extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- None.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Set the power mode of the board to OFFLINE_DEEP.
status = await my_board.set_power_mode(mode=PowerMode.POWER_MODE_OFFLINE_DEEP)
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.mode(pb.PowerMode): Options to specify power usage of the board:boardpb.PowerMode_POWER_MODE_UNSPECIFIED,boardpb.PowerMode_POWER_MODE_NORMAL, andboardpb.PowerMode_POWER_MODE_OFFLINE_DEEP.duration(*time.Duration): If provided, the board will exit the given power mode after the specified duration.extra(map[string]interface{}): Extra options to pass to the underlying RPC call.
Returns:
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
Set the power mode of the board to OFFLINE_DEEP.
myBoard.SetPowerMode(context.Background(), boardpb.PowerMode_POWER_MODE_OFFLINE_DEEP, nil)
For more information, see the Go SDK Docs.
Parameters:
powerMode(boardApi) (required): The requested power mode.duration(Duration) (optional): The requested duration to stay in power mode.extra(None) (optional)callOptions(CallOptions) (optional)
Returns:
- (Promise
)
Example:
const board = new VIAM.BoardClient(machine, 'my_board');
// Set the power mode of the board to OFFLINE_DEEP.
const duration = new VIAM.Duration({ seconds: 10n });
await board.setPowerMode(VIAM.PowerMode.OFFLINE_DEEP, duration);
For more information, see the TypeScript SDK Docs.
Parameters:
powerModePowerMode (required)secondsint (required)nanosint (required)extraMap<String, dynamic>? (optional)
Returns:
Example:
// Set the power mode of the board to offline deep for 60 seconds
// Requires importing 'package:viam_sdk/protos/component/board.dart'
const powerMode = PowerMode.POWER_MODE_OFFLINE_DEEP;
await myBoard.setPowerMode(powerMode, 60, 0);
For more information, see the Flutter SDK Docs.
AnalogByName
Get a configured Analog by name.
Parameters:
name(str) (required): Name of the analog reader to be retrieved.
Returns:
- (viam.components.board.board.Board.Analog): : The analog reader or writer.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the Analog "my_example_analog_reader".
reader = await my_board.analog_by_name(name="my_example_analog_reader")
For more information, see the Python SDK Docs.
Parameters:
name(string): Name of the analog pin you want to retrieve. Set as the"name"property in board configuration.
Returns:
- (Analog): An interface representing an analog pin configured and residing on the board.
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the Analog pin "my_example_analog".
analog, err := myBoard.AnalogByName("my_example_analog")
For more information, see the Go SDK Docs.
DigitalInterruptByName
Get a DigitalInterrupt by name.
Parameters:
name(str) (required): Name of the digital interrupt.
Returns:
- (viam.components.board.board.Board.DigitalInterrupt): : The digital interrupt.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the DigitalInterrupt "my_example_digital_interrupt".
interrupt = await my_board.digital_interrupt_by_name(
name="my_example_digital_interrupt")
For more information, see the Python SDK Docs.
Parameters:
name(string): Name of the digital interrupt you want to retrieve. Set as the"name"property in board configuration.
Returns:
- (DigitalInterrupt): An interface representing a configured interrupt on the board.
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the DigitalInterrupt "my_example_digital_interrupt".
interrupt, err := myBoard.DigitalInterruptByName("my_example_digital_interrupt")
For more information, see the Go SDK Docs.
GPIOPinByName
Get a GPIOPin by pin number.
Parameters:
name(str) (required): Name of the GPIO pin.
Returns:
- (viam.components.board.board.Board.GPIOPin): : The pin.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
# Get the GPIOPin with pin number 15.
pin = await my_board.gpio_pin_by_name(name="15")
For more information, see the Python SDK Docs.
Parameters:
name(string): Pin number of the GPIO pin you want to retrieve as aGPIOPininterface. Refer to the pinout diagram and data sheet of your board model for pin numbers.
Returns:
- (GPIOPin): An interface representing an individual GPIO pin on the board.
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(robot, "my_board")
// Get the GPIOPin with pin number 15.
pin, err := myBoard.GPIOPinByName("15")
For more information, see the Go SDK Docs.
GetGeometries
Get all the geometries associated with the board in its current configuration, in the frame of the board. The motion and navigation services use the relative position of inherent geometries to configured geometries representing obstacles for collision detection and obstacle avoidance while motion planning.
Parameters:
extra(Mapping[str, Any]) (optional): Extra options to pass to the underlying RPC call.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- (List[viam.proto.common.Geometry]): : The geometries associated with the Component.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
geometries = await my_board.get_geometries()
if geometries:
# Get the center of the first geometry
print(f"Pose of the first geometry's centerpoint: {geometries[0].center}")
For more information, see the Python SDK Docs.
Reconfigure
Reconfigure this resource. Reconfigure must reconfigure the resource atomically and in place.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.deps(Dependencies): The resource dependencies.conf(Config): The resource configuration.
Returns:
- (error): An error, if one occurred.
For more information, see the Go SDK Docs.
DoCommand
Execute model-specific commands that are not otherwise defined by the component API.
Most models do not implement DoCommand.
Any available model-specific commands should be covered in the model’s documentation.
If you are implementing your own board and want to add features that have no corresponding built-in API method, you can implement them with DoCommand.
Supported by viam-micro-server.
Parameters:
command(Mapping[str, ValueTypes]) (required): The command to execute.timeout(float) (optional): An option to set how long to wait (in seconds) before calling a time-out and closing the underlying RPC call.
Returns:
- (Mapping[str, viam.utils.ValueTypes]): : Result of the executed command.
Raises:
- (NotImplementedError): Raised if the Resource does not support arbitrary commands.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
command = {"cmd": "test", "data1": 500}
result = await my_board.do_command(command)
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.cmd(map[string]interface{}): The command to execute.
Returns:
- (map[string]interface{}): The command response.
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(machine, "my_board")
command := map[string]interface{}{"cmd": "test", "data1": 500}
result, err := myBoard.DoCommand(context.Background(), command)
For more information, see the Go SDK Docs.
Parameters:
command(Struct) (required): The command to execute. Accepts either a Struct or a plain object, which will be converted automatically.callOptions(CallOptions) (optional)
Returns:
- (Promise<JsonValue>)
Example:
// Plain object (recommended)
const result = await resource.doCommand({
myCommand: { key: 'value' },
});
// Struct (still supported)
import { Struct } from '@viamrobotics/sdk';
const result = await resource.doCommand(
Struct.fromJson({ myCommand: { key: 'value' } })
);
For more information, see the TypeScript SDK Docs.
GetResourceName
Get the ResourceName for this board.
Parameters:
name(str) (required): The name of the Resource.
Returns:
- (viam.proto.common.ResourceName): : The ResourceName of this Resource.
Example:
my_board_name = Board.get_resource_name("my_board")
For more information, see the Python SDK Docs.
Parameters:
- None.
Returns:
- (string): The name of the digital interrupt.
For more information, see the Go SDK Docs.
Parameters:
- None.
Returns:
- (string): The name of the resource.
Example:
board.name
For more information, see the TypeScript SDK Docs.
Parameters:
nameString (required)
Returns:
Example:
final myBoardResourceName = myBoard.getResourceName("my_board");
For more information, see the Flutter SDK Docs.
Close
Safely shut down the resource and prevent further use.
Parameters:
- None.
Returns:
- None.
Example:
my_board = Board.from_robot(robot=machine, name="my_board")
await my_board.close()
For more information, see the Python SDK Docs.
Parameters:
ctx(Context): A Context carries a deadline, a cancellation signal, and other values across API boundaries.
Returns:
- (error): An error, if one occurred.
Example:
myBoard, err := board.FromProvider(machine, "my_board")
err = myBoard.Close(context.Background())
For more information, see the Go SDK Docs.
Was this page helpful?
Glad to hear it! If you have any other feedback please let us know:
We're sorry about that. To help us improve, please tell us what we can do better:
Thank you!