ForceSensor

The LEGO® Education SPIKE™ Prime Force Sensor (also known as the LEGO® Technic Force Sensor) can measure pressure of up to 10 newtons (N), but it can also be used as a touch sensor or a simple button.
- class buildhat.ForceSensor(port, threshold_force=1)
Force sensor
- Parameters:
port – Port of device
- Raises:
DeviceError – Occurs if there is no force sensor attached to port
- callback(func)
Set callback function
- Parameters:
func – Callback function
- property connected
Whether device is connected or not
- Returns:
Connection status
- static desc_for_id(typeid)
Translate integer type id to something more descriptive than the device name
- Parameters:
typeid – Type of device
- Returns:
Description of device
- property description
Device on port info
- Returns:
Device description
- deselect()
Unselect data from mode
- get()
Extract information from device
- Returns:
Data from device
- Raises:
DeviceError – Occurs if device not in valid mode
- get_force()
Return the force in (N)
- Returns:
The force exerted on the button
- Return type:
int
- get_peak_force()
Get the maximum force registered since the sensor was reset
(The sensor gets reset when the firmware is reloaded)
- Returns:
0 - 100
- Return type:
int
- property interval
Interval between data points in milliseconds
- Getter:
Gets interval
- Setter:
Sets interval
- Returns:
Device interval
- Return type:
int
- is_pressed()
Get whether the button is pressed
- Returns:
If button is pressed
- Return type:
bool
- isconnected()
Whether it is connected or not
- Raises:
DeviceError – Occurs if device no longer the same
- mode(modev)
Set combimode or simple mode
- Parameters:
modev – List of tuples for a combimode, or integer for simple mode
- property name
Determine name of device on port
- Returns:
Device name
- static name_for_id(typeid)
Translate integer type id to device name (python class)
- Parameters:
typeid – Type of device
- Returns:
Name of device
- off()
Turn off sensor
- on()
Turn on sensor
- reverse()
Reverse polarity
- select()
Request data from mode
- Raises:
DeviceError – Occurs if device not in valid mode
- property threshold_force
Threshold force
- Getter:
Returns threshold force
- Setter:
Sets threshold force
- Returns:
Threshold force
- property typeid
Type ID of device
- Returns:
Type ID
- property typeidcur
Type ID currently present
- Returns:
Type ID
- wait_until_pressed(force=1)
Wait until the button is pressed
- Parameters:
force – Optional
- wait_until_released(force=0)
Wait until the button is released
- Parameters:
force – Optional
- property when_pressed
Handle force events
- Getter:
Returns function to be called when pressed
- Setter:
Sets function to be called when pressed
- Returns:
Callback function
- property when_released
Handle force events
- Getter:
Returns function to be called when released
- Setter:
Sets function to be called when released
- Returns:
Callback function
Example
"""Example using force sensor"""
from signal import pause
from buildhat import ForceSensor, Motor
motor = Motor('A')
button = ForceSensor('D', threshold_force=1)
print("Waiting for button to be pressed fully and released")
button.wait_until_pressed(100)
button.wait_until_released(0)
motor.run_for_rotations(1)
print("Wait for button to be pressed")
button.wait_until_pressed()
motor.run_for_rotations(2)
def handle_pressed(force):
"""Force sensor pressed
:param force: Force value
"""
print("pressed", force)
def handle_released(force):
"""Force sensor released
:param force: Force value
"""
print("released", force)
button.when_pressed = handle_pressed
button.when_released = handle_released
pause()