class NXT::Connector::Input::Ultrasonic

Implements the “ultrasonic” sensor for the NXT 2.0 module.

Constants

UNIT

Attributes

interface[RW]
port[RW]

Public Class Methods

new(port, interface) click to toggle source
# File lib/nxt/connector/input/ultrasonic.rb, line 24
def initialize(port, interface)
  @port = port
  @interface = interface
end

Public Instance Methods

distance() click to toggle source
# File lib/nxt/connector/input/ultrasonic.rb, line 29
def distance
  ls_write(NXT::Protocols::I2C.read_measurement_byte_0)

  while ls_get_status < 1
    sleep(0.1)
    # TODO: implement timeout so we don't get stuck if the expected data never comes
  end

  distance = ls_read[0]

  if @unit == :centimeters
    distance.to_i
  else
    (distance * 0.3937008).to_i
  end
end
distance!() click to toggle source
# File lib/nxt/connector/input/ultrasonic.rb, line 46
def distance!
  d = distance
  raise UnmeasurableDistance if d == 255

  d
end
start() click to toggle source
# File lib/nxt/connector/input/ultrasonic.rb, line 53
def start
  sensor_type(:lowspeed_9v)
  sensor_mode(:raw)

  update_input_mode
  ls_clear_buffer

  # set sensor to continuously send pings
  ls_write(NXT::Protocols::I2C.continuous_measurement_command)
end