ch.aplu.nxt
Class I2CSensor
java.lang.Object
ch.aplu.nxt.Part
ch.aplu.nxt.Sensor
ch.aplu.nxt.I2CSensor
- All Implemented Interfaces:
- SharedConstants
- Direct Known Subclasses:
- PrototypeSensor, UltrasonicSensor
public class I2CSensor
- extends Sensor
- implements SharedConstants
A sensor wrapper to allow easy access to I2C sensors, like the ultrasonic sensor.
Currently uses the default I2C address of 0x02, but some sensors can
be connected to same port lines and use different addresses using the
Auto Detecting Parallel Architecture (ADPA). Currently unsure if there are
commercial port expanders yet to use this function, or whether the
Lego UltrasonicSensor sensor is ADPA compatible.
Most of the code and the documentation
taken from the leJOS library (lejos.sourceforge.net, with thanks to the autor.
Fields inherited from class ch.aplu.nxt.Part |
robot |
Fields inherited from interface ch.aplu.nxt.SharedConstants |
ABOUT, ANGLE, ANGLESTEPSMODE, BOOLEANMODE, BOOT, BRAKE, CELSIUSMODE, CLOSE, CUSTOM, DEBUG_LEVEL_HIGH, DEBUG_LEVEL_LOW, DEBUG_LEVEL_MEDIUM, DEBUG_LEVEL_OFF, DELETE, DELETE_USER_FLASH, DIRECT_COMMAND_NOREPLY, DIRECT_COMMAND_REPLY, FAHRENHEITMODE, FIND_FIRST, FIND_NEXT, GET_BATTERY_LEVEL, GET_CURRENT_PROGRAM_NAME, GET_DEVICE_INFO, GET_FIRMWARE_VERSION, GET_INPUT_VALUES, GET_OUTPUT_STATE, HIGH_SPEED_BUFFER, KEEP_ALIVE, LIGHT_ACTIVE, LIGHT_INACTIVE, LOWSPEED, LOWSPEED_9V, LS_GET_STATUS, LS_READ, LS_WRITE, MESSAGE_READ, MESSAGE_WRITE, MODEMASK, MOTOR_RUN_STATE_IDLE, MOTOR_RUN_STATE_RAMPDOWN, MOTOR_RUN_STATE_RAMPUP, MOTOR_RUN_STATE_RUNNING, MOTORON, NO_OF_SENSOR_TYPES, NO_SENSOR, NXJ_FIND_FIRST, NXJ_FIND_NEXT, OPEN_APPEND_DATA, OPEN_READ, OPEN_READ_LINEAR, OPEN_WRITE, OPEN_WRITE_DATA, OPEN_WRITE_LINEAR, PCTFULLSCALEMODE, PERIODCOUNTERMODE, PLAY_SOUND_FILE, PLAY_TONE, POLL, POLL_BUFFER, POLL_LENGTH, RAWMODE, READ, REFLECTION, REGULATED, REGULATION_MODE_IDLE, REGULATION_MODE_MOTOR_SPEED, REGULATION_MODE_MOTOR_SYNC, REPLY_COMMAND, RESET_MOTOR_POSITION, RESET_SCALED_INPUT_VALUE, SET_BRICK_NAME, SET_INPUT_MODE, SET_OUTPUT_STATE, SLOPEMASK, SOUND_DB, SOUND_DBA, START_PROGRAM, STOP_PROGRAM, STOP_SOUND_PLAYBACK, SWITCH, SYSTEM_COMMAND_NOREPLY, SYSTEM_COMMAND_REPLY, TEMPERATURE, TITLE, TITLEMP, TRANSITIONCNTMODE, VERSION, WRITE |
Constructor Summary |
I2CSensor(SensorPort port,
byte sensorType)
Creates a sensor instance of given type connected to the given port. |
Method Summary |
protected void |
cleanup()
|
protected java.lang.String |
fetchString(byte constantEnumeration,
int rxLength)
|
byte[] |
getData(byte register,
int length)
Retrieves data from the sensor. |
protected void |
init()
|
void |
sendData(byte register,
byte value)
Sets a single byte in the I2C sensor. |
void |
sendData(byte register,
byte value1,
byte value2)
Sets two bytes in the I2C sensor. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
I2CSensor
public I2CSensor(SensorPort port,
byte sensorType)
- Creates a sensor instance of given type connected to the given port.
- Parameters:
port
- the port where the sensor is plugged-insensorType
- the type of the sensor
init
protected void init()
- Specified by:
init
in class Part
getData
public byte[] getData(byte register,
int length)
- Retrieves data from the sensor.
Data is read from registers in the sensor, usually starting at 0x00
and ending around 0x49.
Just supply the register to start reading at, and the length of
bytes to read (16 maximum).
NOTE: The NXT supplies an unsigned byte but Java converts them into signed bytes.
- Parameters:
register
- the register used, e.g. FACTORY_SCALE_DIVISOR, BYTE0, etc....length
- the length of data to read (minimum 1, maximum 16)
- Returns:
- the data from the sensor
sendData
public void sendData(byte register,
byte value)
- Sets a single byte in the I2C sensor.
- Parameters:
register
- the data register in the I2C sensor, e.g. ACTUAL_ZEROvalue
- the data sent to the sensor
sendData
public void sendData(byte register,
byte value1,
byte value2)
- Sets two bytes in the I2C sensor.
- Parameters:
register
- the data register in the I2C sensor, e.g. ACTUAL_ZEROvalue1
- the first data value sent to the sensorvalue2
- the second data value sent to the sensor
fetchString
protected java.lang.String fetchString(byte constantEnumeration,
int rxLength)
cleanup
protected void cleanup()
- Specified by:
cleanup
in class Part