Safe Haskell | Safe-Infered |
---|
This module defines an interface to a digital ultrasonic sensor of the NXT kit.
I2C communication with ultrasonics sensor is described in Lego Mindstorms NXT Hardware Developer Kit, Appendix 7 - Ultrasonic sensor I2C communication protocol.
- usInit :: InputPort -> NXT ()
- usGetMeasurement :: InputPort -> MeasurementNumber -> NXT (Maybe Measurement)
- usGetAllMeasurements :: InputPort -> NXT [Measurement]
- usSetMode :: InputPort -> Mode -> NXT ()
- usGetMode :: InputPort -> NXT Mode
- data Mode
- = Off
- | SingleShot
- | ContinuousMeasurement
- | EventCapture
- | WarmReset
- usSetContinuousInterval :: InputPort -> ContinuousInterval -> NXT ()
- usGetContinuousInterval :: InputPort -> NXT ContinuousInterval
- usSetActualZero :: InputPort -> Zero -> NXT ()
- usGetActualZero :: InputPort -> NXT Zero
- usSetActualScaleFactor :: InputPort -> ScaleFactor -> NXT ()
- usGetActualScaleFactor :: InputPort -> NXT ScaleFactor
- usSetActualScaleDivisor :: InputPort -> ScaleDivisor -> NXT ()
- usGetActualScaleDivisor :: InputPort -> NXT ScaleDivisor
- usGetVersion :: InputPort -> NXT String
- usGetVendorID :: InputPort -> NXT String
- usGetDeviceID :: InputPort -> NXT String
- usGetFactoryZero :: InputPort -> NXT Zero
- usGetFactoryScaleFactor :: InputPort -> NXT ScaleFactor
- usGetFactoryScaleDivisor :: InputPort -> NXT ScaleDivisor
- usGetMeasurementUnits :: InputPort -> NXT String
- type Zero = Int
- type ScaleFactor = Int
- type ScaleDivisor = Int
- type ContinuousInterval = Int
- type MeasurementNumber = Int
Initialization
usInit :: InputPort -> NXT ()Source
Initializes sensor on the given input port. Default is ContinuousMeasurement
mode.
Measurement
usGetMeasurement :: InputPort -> MeasurementNumber -> NXT (Maybe Measurement)Source
Gets last measurement for a given measurement number based on the current mode. To retrieve new SingleShot
measurements first
use usSetMode
(with SingleShot
as an argument) to send new ultrasonic ping and after approximately 20ms read the results. (Change
of NXT Bluetooth communication direction takes around 30 ms.) In ContinuousMeasurement
mode new measurements are made automatically
based on the continuous measurement interval value.
usGetAllMeasurements :: InputPort -> NXT [Measurement]Source
Helper function which gets all measurements available in order (closer first).
Configuration
Off | Turns sensor off. |
SingleShot | In this mode ultrasonic sensor only makes a new measurement every time this mode is set.
The sensor measures distances for up to 8 objects (8 first echoes) which can be retrieved with |
ContinuousMeasurement | In this mode the sensor continuously makes new measurement with the specific interval. This is the default mode. |
EventCapture | Within this mode the sensor will measure whether any other ultrasonic sensors are within the vicinity. With this information a program can evaluate when it is best to make a new measurement which will not conflict with other ultrasonic sensors. |
WarmReset | Requests warm reset. |
usSetContinuousInterval :: InputPort -> ContinuousInterval -> NXT ()Source
Sets current continuous measurement interval value.
usGetContinuousInterval :: InputPort -> NXT ContinuousIntervalSource
Gets current continuous measurement interval value.
usSetActualZero :: InputPort -> Zero -> NXT ()Source
Sets current (actual) zero value. This is used to calibrate sensor.
usGetActualZero :: InputPort -> NXT ZeroSource
Gets current (actual) zero value.
usSetActualScaleFactor :: InputPort -> ScaleFactor -> NXT ()Source
Sets current (actual) scale factor value. This is used to calibrate sensor.
usGetActualScaleFactor :: InputPort -> NXT ScaleFactorSource
Gets current (actual) scale factor value.
usSetActualScaleDivisor :: InputPort -> ScaleDivisor -> NXT ()Source
Sets current (actual) scale divisor value. This is used to calibrate sensor.
usGetActualScaleDivisor :: InputPort -> NXT ScaleDivisorSource
Gets current (actual) scale divisor value.
Constants
usGetVersion :: InputPort -> NXT StringSource
Reads software version string (V1.0
).
usGetVendorID :: InputPort -> NXT StringSource
Reads vendor ID string (LEGO
).
usGetDeviceID :: InputPort -> NXT StringSource
Reads device ID string (Sonar
).
usGetFactoryZero :: InputPort -> NXT ZeroSource
Reads factory zero value.
usGetFactoryScaleFactor :: InputPort -> NXT ScaleFactorSource
Reads factory scale factor value.
usGetFactoryScaleDivisor :: InputPort -> NXT ScaleDivisorSource
Reads factory scale divisor value.
usGetMeasurementUnits :: InputPort -> NXT StringSource
Reads measurement units string (10E-2m
, a centimeter).
Types
type ScaleFactor = IntSource
Type of a scale factor value.
type ScaleDivisor = IntSource
Type of a scale divisor value.
type ContinuousInterval = IntSource
Type of a continuous measurement interval value. This seems to be in the range 1-15.
type MeasurementNumber = IntSource
Type of a measurement number. Sensor stores measurements (distances) for the first 8 echoes (numbered 0-7) it receives
in SingleShot
mode. For ContinuousMeasurement
and EventCapture
modes use first (0) measurement (distance) number.