tinkerforge 2.1.11 → 2.1.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/lib/tinkerforge/brick_dc.rb +31 -9
  2. data/lib/tinkerforge/brick_imu.rb +62 -40
  3. data/lib/tinkerforge/brick_imu_v2.rb +70 -42
  4. data/lib/tinkerforge/brick_master.rb +47 -23
  5. data/lib/tinkerforge/brick_red.rb +3 -3
  6. data/lib/tinkerforge/brick_servo.rb +40 -18
  7. data/lib/tinkerforge/brick_silent_stepper.rb +829 -0
  8. data/lib/tinkerforge/brick_stepper.rb +47 -25
  9. data/lib/tinkerforge/bricklet_accelerometer.rb +11 -11
  10. data/lib/tinkerforge/bricklet_ambient_light.rb +12 -12
  11. data/lib/tinkerforge/bricklet_ambient_light_v2.rb +8 -8
  12. data/lib/tinkerforge/bricklet_analog_in.rb +18 -18
  13. data/lib/tinkerforge/bricklet_analog_in_v2.rb +15 -15
  14. data/lib/tinkerforge/bricklet_analog_out.rb +3 -3
  15. data/lib/tinkerforge/bricklet_analog_out_v2.rb +3 -3
  16. data/lib/tinkerforge/bricklet_barometer.rb +19 -19
  17. data/lib/tinkerforge/bricklet_can.rb +20 -7
  18. data/lib/tinkerforge/bricklet_co2.rb +14 -14
  19. data/lib/tinkerforge/bricklet_color.rb +19 -19
  20. data/lib/tinkerforge/bricklet_current12.rb +16 -16
  21. data/lib/tinkerforge/bricklet_current25.rb +15 -15
  22. data/lib/tinkerforge/bricklet_distance_ir.rb +14 -14
  23. data/lib/tinkerforge/bricklet_distance_us.rb +9 -9
  24. data/lib/tinkerforge/bricklet_dual_button.rb +5 -5
  25. data/lib/tinkerforge/bricklet_dual_relay.rb +13 -13
  26. data/lib/tinkerforge/bricklet_dust_detector.rb +11 -11
  27. data/lib/tinkerforge/bricklet_gps.rb +21 -21
  28. data/lib/tinkerforge/bricklet_hall_effect.rb +12 -10
  29. data/lib/tinkerforge/bricklet_humidity.rb +21 -21
  30. data/lib/tinkerforge/bricklet_industrial_analog_out.rb +3 -3
  31. data/lib/tinkerforge/bricklet_industrial_digital_in_4.rb +4 -4
  32. data/lib/tinkerforge/bricklet_industrial_digital_out_4.rb +4 -4
  33. data/lib/tinkerforge/bricklet_industrial_dual_0_20ma.rb +6 -6
  34. data/lib/tinkerforge/bricklet_industrial_dual_analog_in.rb +6 -6
  35. data/lib/tinkerforge/bricklet_industrial_quad_relay.rb +5 -5
  36. data/lib/tinkerforge/bricklet_io16.rb +5 -5
  37. data/lib/tinkerforge/bricklet_io4.rb +5 -5
  38. data/lib/tinkerforge/bricklet_joystick.rb +16 -16
  39. data/lib/tinkerforge/bricklet_laser_range_finder.rb +99 -30
  40. data/lib/tinkerforge/bricklet_lcd_16x2.rb +5 -5
  41. data/lib/tinkerforge/bricklet_lcd_20x4.rb +5 -5
  42. data/lib/tinkerforge/bricklet_led_strip.rb +3 -3
  43. data/lib/tinkerforge/bricklet_line.rb +12 -12
  44. data/lib/tinkerforge/bricklet_linear_poti.rb +21 -21
  45. data/lib/tinkerforge/bricklet_load_cell.rb +10 -10
  46. data/lib/tinkerforge/bricklet_moisture.rb +12 -12
  47. data/lib/tinkerforge/bricklet_motion_detector.rb +5 -5
  48. data/lib/tinkerforge/bricklet_multi_touch.rb +3 -3
  49. data/lib/tinkerforge/bricklet_nfc_rfid.rb +20 -20
  50. data/lib/tinkerforge/bricklet_oled_128x64.rb +7 -7
  51. data/lib/tinkerforge/bricklet_oled_64x48.rb +6 -6
  52. data/lib/tinkerforge/bricklet_piezo_buzzer.rb +4 -4
  53. data/lib/tinkerforge/bricklet_piezo_speaker.rb +5 -5
  54. data/lib/tinkerforge/bricklet_ptc.rb +21 -21
  55. data/lib/tinkerforge/bricklet_real_time_clock.rb +7 -7
  56. data/lib/tinkerforge/bricklet_remote_switch.rb +3 -3
  57. data/lib/tinkerforge/bricklet_rgb_led.rb +3 -3
  58. data/lib/tinkerforge/bricklet_rotary_encoder.rb +6 -6
  59. data/lib/tinkerforge/bricklet_rotary_poti.rb +23 -23
  60. data/lib/tinkerforge/bricklet_rs232.rb +19 -16
  61. data/lib/tinkerforge/bricklet_segment_display_4x7.rb +5 -5
  62. data/lib/tinkerforge/bricklet_solid_state_relay.rb +12 -12
  63. data/lib/tinkerforge/bricklet_sound_intensity.rb +13 -12
  64. data/lib/tinkerforge/bricklet_temperature.rb +12 -12
  65. data/lib/tinkerforge/bricklet_temperature_ir.rb +30 -30
  66. data/lib/tinkerforge/bricklet_thermocouple.rb +13 -13
  67. data/lib/tinkerforge/bricklet_tilt.rb +3 -3
  68. data/lib/tinkerforge/bricklet_uv_light.rb +10 -10
  69. data/lib/tinkerforge/bricklet_voltage.rb +18 -18
  70. data/lib/tinkerforge/bricklet_voltage_current.rb +23 -23
  71. data/lib/tinkerforge/version.rb +1 -1
  72. metadata +3 -2
@@ -1,8 +1,8 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2017-01-25. #
3
+ # This file was automatically generated on 2017-04-21. #
4
4
  # #
5
- # Ruby Bindings Version 2.1.11 #
5
+ # Ruby Bindings Version 2.1.12 #
6
6
  # #
7
7
  # If you have a bugfix for this file and want to commit it, #
8
8
  # please fix the bug in the generator. You can find a link #
@@ -19,7 +19,7 @@ module Tinkerforge
19
19
  # BrickletIndustrialDualAnalogIn#set_voltage_callback_period. The parameter is the voltage of the
20
20
  # channel.
21
21
  #
22
- # CALLBACK_VOLTAGE is only triggered if the voltage has changed since the
22
+ # The CALLBACK_VOLTAGE callback is only triggered if the voltage has changed since the
23
23
  # last triggering.
24
24
  CALLBACK_VOLTAGE = 13
25
25
 
@@ -89,7 +89,7 @@ module Tinkerforge
89
89
  # Returns the voltage for the given channel in mV.
90
90
  #
91
91
  # If you want to get the voltage periodically, it is recommended to use the
92
- # callback CALLBACK_VOLTAGE and set the period with
92
+ # CALLBACK_VOLTAGE callback and set the period with
93
93
  # BrickletIndustrialDualAnalogIn#set_voltage_callback_period.
94
94
  def get_voltage(channel)
95
95
  send_request(FUNCTION_GET_VOLTAGE, [channel], 'C', 4, 'l')
@@ -98,7 +98,7 @@ module Tinkerforge
98
98
  # Sets the period in ms with which the CALLBACK_VOLTAGE callback is triggered
99
99
  # periodically for the given channel. A value of 0 turns the callback off.
100
100
  #
101
- # CALLBACK_VOLTAGE is only triggered if the voltage has changed since the
101
+ # The CALLBACK_VOLTAGE callback is only triggered if the voltage has changed since the
102
102
  # last triggering.
103
103
  #
104
104
  # The default value is 0.
@@ -188,7 +188,7 @@ module Tinkerforge
188
188
  send_request(FUNCTION_GET_ADC_VALUES, [], '', 8, 'l2')
189
189
  end
190
190
 
191
- # Returns the UID, the UID where the Bricklet is connected to,
191
+ # Returns the UID, the UID where the Bricklet is connected to,
192
192
  # the position, the hardware and firmware version as well as the
193
193
  # device identifier.
194
194
  #
@@ -1,8 +1,8 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2017-01-25. #
3
+ # This file was automatically generated on 2017-04-21. #
4
4
  # #
5
- # Ruby Bindings Version 2.1.11 #
5
+ # Ruby Bindings Version 2.1.12 #
6
6
  # #
7
7
  # If you have a bugfix for this file and want to commit it, #
8
8
  # please fix the bug in the generator. You can find a link #
@@ -135,8 +135,8 @@ module Tinkerforge
135
135
  send_request(FUNCTION_GET_AVAILABLE_FOR_GROUP, [], '', 1, 'C')
136
136
  end
137
137
 
138
- # Sets the output value with a bitmask, according to the selection mask.
139
- # The bitmask is 16 bit long, *true* refers to a closed relay and
138
+ # Sets the output value with a bitmask, according to the selection mask.
139
+ # The bitmask is 16 bit long, *true* refers to a closed relay and
140
140
  # *false* refers to an open relay.
141
141
  #
142
142
  # For example: The values (3, 1) or (0b0011, 0b0001) will close the relay of
@@ -152,7 +152,7 @@ module Tinkerforge
152
152
  send_request(FUNCTION_SET_SELECTED_VALUES, [selection_mask, value_mask], 'S S', 0, '')
153
153
  end
154
154
 
155
- # Returns the UID, the UID where the Bricklet is connected to,
155
+ # Returns the UID, the UID where the Bricklet is connected to,
156
156
  # the position, the hardware and firmware version as well as the
157
157
  # device identifier.
158
158
  #
@@ -1,8 +1,8 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2017-01-25. #
3
+ # This file was automatically generated on 2017-04-21. #
4
4
  # #
5
- # Ruby Bindings Version 2.1.11 #
5
+ # Ruby Bindings Version 2.1.12 #
6
6
  # #
7
7
  # If you have a bugfix for this file and want to commit it, #
8
8
  # please fix the bug in the generator. You can find a link #
@@ -164,7 +164,7 @@ module Tinkerforge
164
164
  # For example: ('a', 129) or ('a', 0b10000001) will enable the interrupt for
165
165
  # pins 0 and 7 of port a.
166
166
  #
167
- # The interrupt is delivered with the callback CALLBACK_INTERRUPT.
167
+ # The interrupt is delivered with the CALLBACK_INTERRUPT callback.
168
168
  def set_port_interrupt(port, interrupt_mask)
169
169
  send_request(FUNCTION_SET_PORT_INTERRUPT, [port, interrupt_mask], 'k C', 0, '')
170
170
  end
@@ -207,7 +207,7 @@ module Tinkerforge
207
207
  send_request(FUNCTION_GET_PORT_MONOFLOP, [port, pin], 'k C', 9, 'C L L')
208
208
  end
209
209
 
210
- # Sets the output value (high or low) for a port ("a" or "b" with a bitmask,
210
+ # Sets the output value (high or low) for a port ("a" or "b" with a bitmask,
211
211
  # according to the selection mask. The bitmask is 8 bit long and a 1 in the
212
212
  # bitmask means high and a 0 in the bitmask means low.
213
213
  #
@@ -264,7 +264,7 @@ module Tinkerforge
264
264
  send_request(FUNCTION_GET_EDGE_COUNT_CONFIG, [pin], 'C', 2, 'C C')
265
265
  end
266
266
 
267
- # Returns the UID, the UID where the Bricklet is connected to,
267
+ # Returns the UID, the UID where the Bricklet is connected to,
268
268
  # the position, the hardware and firmware version as well as the
269
269
  # device identifier.
270
270
  #
@@ -1,8 +1,8 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2017-01-25. #
3
+ # This file was automatically generated on 2017-04-21. #
4
4
  # #
5
- # Ruby Bindings Version 2.1.11 #
5
+ # Ruby Bindings Version 2.1.12 #
6
6
  # #
7
7
  # If you have a bugfix for this file and want to commit it, #
8
8
  # please fix the bug in the generator. You can find a link #
@@ -163,7 +163,7 @@ module Tinkerforge
163
163
  # For example: An interrupt bitmask of 10 or 0b1010 will enable the interrupt for
164
164
  # pins 1 and 3.
165
165
  #
166
- # The interrupt is delivered with the callback CALLBACK_INTERRUPT.
166
+ # The interrupt is delivered with the CALLBACK_INTERRUPT callback.
167
167
  def set_interrupt(interrupt_mask)
168
168
  send_request(FUNCTION_SET_INTERRUPT, [interrupt_mask], 'C', 0, '')
169
169
  end
@@ -206,7 +206,7 @@ module Tinkerforge
206
206
  end
207
207
 
208
208
  # Sets the output value (high or low) with a bitmask, according to
209
- # the selection mask. The bitmask is 4 bit long, *true* refers to high
209
+ # the selection mask. The bitmask is 4 bit long, *true* refers to high
210
210
  # and *false* refers to low.
211
211
  #
212
212
  # For example: The parameters (9, 4) or (0b0110, 0b0100) will turn
@@ -261,7 +261,7 @@ module Tinkerforge
261
261
  send_request(FUNCTION_GET_EDGE_COUNT_CONFIG, [pin], 'C', 2, 'C C')
262
262
  end
263
263
 
264
- # Returns the UID, the UID where the Bricklet is connected to,
264
+ # Returns the UID, the UID where the Bricklet is connected to,
265
265
  # the position, the hardware and firmware version as well as the
266
266
  # device identifier.
267
267
  #
@@ -1,8 +1,8 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2017-01-25. #
3
+ # This file was automatically generated on 2017-04-21. #
4
4
  # #
5
- # Ruby Bindings Version 2.1.11 #
5
+ # Ruby Bindings Version 2.1.12 #
6
6
  # #
7
7
  # If you have a bugfix for this file and want to commit it, #
8
8
  # please fix the bug in the generator. You can find a link #
@@ -19,16 +19,16 @@ module Tinkerforge
19
19
  # BrickletJoystick#set_position_callback_period. The parameter is the position of the
20
20
  # Joystick.
21
21
  #
22
- # CALLBACK_POSITION is only triggered if the position has changed since the
22
+ # The CALLBACK_POSITION callback is only triggered if the position has changed since the
23
23
  # last triggering.
24
24
  CALLBACK_POSITION = 15
25
25
 
26
26
  # This callback is triggered periodically with the period that is set by
27
- # BrickletJoystick#set_analog_value_callback_period. The parameters are the analog values
28
- # of the Joystick.
27
+ # BrickletJoystick#set_analog_value_callback_period. The parameters are the
28
+ # analog values of the Joystick.
29
29
  #
30
- # CALLBACK_ANALOG_VALUE is only triggered if the values have changed since the
31
- # last triggering.
30
+ # The CALLBACK_ANALOG_VALUE callback is only triggered if the values have changed
31
+ # since the last triggering.
32
32
  CALLBACK_ANALOG_VALUE = 16
33
33
 
34
34
  # This callback is triggered when the threshold as set by
@@ -117,7 +117,7 @@ module Tinkerforge
117
117
  # returned values are averaged and calibrated (see BrickletJoystick#calibrate).
118
118
  #
119
119
  # If you want to get the position periodically, it is recommended to use the
120
- # callback CALLBACK_POSITION and set the period with
120
+ # CALLBACK_POSITION callback and set the period with
121
121
  # BrickletJoystick#set_position_callback_period.
122
122
  def get_position
123
123
  send_request(FUNCTION_GET_POSITION, [], '', 4, 's s')
@@ -140,8 +140,8 @@ module Tinkerforge
140
140
  # unfiltered analog values. The only reason to use BrickletJoystick#get_analog_value is,
141
141
  # if you need the full resolution of the analog-to-digital converter.
142
142
  #
143
- # If you want the analog values periodically, it is recommended to use the
144
- # callback CALLBACK_ANALOG_VALUE and set the period with
143
+ # If you want the analog values periodically, it is recommended to use the
144
+ # CALLBACK_ANALOG_VALUE callback and set the period with
145
145
  # BrickletJoystick#set_analog_value_callback_period.
146
146
  def get_analog_value
147
147
  send_request(FUNCTION_GET_ANALOG_VALUE, [], '', 4, 'S S')
@@ -160,7 +160,7 @@ module Tinkerforge
160
160
  # Sets the period in ms with which the CALLBACK_POSITION callback is triggered
161
161
  # periodically. A value of 0 turns the callback off.
162
162
  #
163
- # CALLBACK_POSITION is only triggered if the position has changed since the
163
+ # The CALLBACK_POSITION callback is only triggered if the position has changed since the
164
164
  # last triggering.
165
165
  #
166
166
  # The default value is 0.
@@ -176,8 +176,8 @@ module Tinkerforge
176
176
  # Sets the period in ms with which the CALLBACK_ANALOG_VALUE callback is triggered
177
177
  # periodically. A value of 0 turns the callback off.
178
178
  #
179
- # CALLBACK_ANALOG_VALUE is only triggered if the analog values have changed since the
180
- # last triggering.
179
+ # The CALLBACK_ANALOG_VALUE callback is only triggered if the analog values have
180
+ # changed since the last triggering.
181
181
  #
182
182
  # The default value is 0.
183
183
  def set_analog_value_callback_period(period)
@@ -189,7 +189,7 @@ module Tinkerforge
189
189
  send_request(FUNCTION_GET_ANALOG_VALUE_CALLBACK_PERIOD, [], '', 4, 'L')
190
190
  end
191
191
 
192
- # Sets the thresholds for the CALLBACK_POSITION_REACHED callback.
192
+ # Sets the thresholds for the CALLBACK_POSITION_REACHED callback.
193
193
  #
194
194
  # The following options are possible:
195
195
  #
@@ -211,7 +211,7 @@ module Tinkerforge
211
211
  send_request(FUNCTION_GET_POSITION_CALLBACK_THRESHOLD, [], '', 9, 'k s s s s')
212
212
  end
213
213
 
214
- # Sets the thresholds for the CALLBACK_ANALOG_VALUE_REACHED callback.
214
+ # Sets the thresholds for the CALLBACK_ANALOG_VALUE_REACHED callback.
215
215
  #
216
216
  # The following options are possible:
217
217
  #
@@ -255,7 +255,7 @@ module Tinkerforge
255
255
  send_request(FUNCTION_GET_DEBOUNCE_PERIOD, [], '', 4, 'L')
256
256
  end
257
257
 
258
- # Returns the UID, the UID where the Bricklet is connected to,
258
+ # Returns the UID, the UID where the Bricklet is connected to,
259
259
  # the position, the hardware and firmware version as well as the
260
260
  # device identifier.
261
261
  #
@@ -1,8 +1,8 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2017-01-25. #
3
+ # This file was automatically generated on 2017-04-21. #
4
4
  # #
5
- # Ruby Bindings Version 2.1.11 #
5
+ # Ruby Bindings Version 2.1.12 #
6
6
  # #
7
7
  # If you have a bugfix for this file and want to commit it, #
8
8
  # please fix the bug in the generator. You can find a link #
@@ -16,19 +16,19 @@ module Tinkerforge
16
16
  DEVICE_DISPLAY_NAME = 'Laser Range Finder Bricklet' # :nodoc:
17
17
 
18
18
  # This callback is triggered periodically with the period that is set by
19
- # BrickletLaserRangeFinder#set_distance_callback_period. The parameter is the distance value
20
- # of the sensor.
19
+ # BrickletLaserRangeFinder#set_distance_callback_period. The parameter is the distance
20
+ # value of the sensor.
21
21
  #
22
- # CALLBACK_DISTANCE is only triggered if the distance value has changed since the
23
- # last triggering.
22
+ # The CALLBACK_DISTANCE callback is only triggered if the distance value has changed
23
+ # since the last triggering.
24
24
  CALLBACK_DISTANCE = 20
25
25
 
26
26
  # This callback is triggered periodically with the period that is set by
27
- # BrickletLaserRangeFinder#set_velocity_callback_period. The parameter is the velocity value
28
- # of the sensor.
27
+ # BrickletLaserRangeFinder#set_velocity_callback_period. The parameter is the velocity
28
+ # value of the sensor.
29
29
  #
30
- # CALLBACK_VELOCITY is only triggered if the velocity has changed since the
31
- # last triggering.
30
+ # The CALLBACK_VELOCITY callback is only triggered if the velocity has changed since
31
+ # the last triggering.
32
32
  CALLBACK_VELOCITY = 21
33
33
 
34
34
  # This callback is triggered when the threshold as set by
@@ -66,6 +66,9 @@ module Tinkerforge
66
66
  FUNCTION_ENABLE_LASER = 17 # :nodoc:
67
67
  FUNCTION_DISABLE_LASER = 18 # :nodoc:
68
68
  FUNCTION_IS_LASER_ENABLED = 19 # :nodoc:
69
+ FUNCTION_GET_SENSOR_HARDWARE_VERSION = 24 # :nodoc:
70
+ FUNCTION_SET_CONFIGURATION = 25 # :nodoc:
71
+ FUNCTION_GET_CONFIGURATION = 26 # :nodoc:
69
72
  FUNCTION_GET_IDENTITY = 255 # :nodoc:
70
73
 
71
74
  THRESHOLD_OPTION_OFF = 'x' # :nodoc:
@@ -78,13 +81,15 @@ module Tinkerforge
78
81
  MODE_VELOCITY_MAX_32MS = 2 # :nodoc:
79
82
  MODE_VELOCITY_MAX_64MS = 3 # :nodoc:
80
83
  MODE_VELOCITY_MAX_127MS = 4 # :nodoc:
84
+ VERSION_1 = 1 # :nodoc:
85
+ VERSION_3 = 3 # :nodoc:
81
86
 
82
87
  # Creates an object with the unique device ID <tt>uid</tt> and adds it to
83
88
  # the IP Connection <tt>ipcon</tt>.
84
89
  def initialize(uid, ipcon)
85
90
  super uid, ipcon
86
91
 
87
- @api_version = [2, 0, 0]
92
+ @api_version = [2, 0, 1]
88
93
 
89
94
  @response_expected[FUNCTION_GET_DISTANCE] = RESPONSE_EXPECTED_ALWAYS_TRUE
90
95
  @response_expected[FUNCTION_GET_VELOCITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
@@ -109,6 +114,9 @@ module Tinkerforge
109
114
  @response_expected[CALLBACK_VELOCITY] = RESPONSE_EXPECTED_ALWAYS_FALSE
110
115
  @response_expected[CALLBACK_DISTANCE_REACHED] = RESPONSE_EXPECTED_ALWAYS_FALSE
111
116
  @response_expected[CALLBACK_VELOCITY_REACHED] = RESPONSE_EXPECTED_ALWAYS_FALSE
117
+ @response_expected[FUNCTION_GET_SENSOR_HARDWARE_VERSION] = RESPONSE_EXPECTED_ALWAYS_TRUE
118
+ @response_expected[FUNCTION_SET_CONFIGURATION] = RESPONSE_EXPECTED_FALSE
119
+ @response_expected[FUNCTION_GET_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
112
120
  @response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
113
121
 
114
122
  @callback_formats[CALLBACK_DISTANCE] = 'S'
@@ -120,13 +128,14 @@ module Tinkerforge
120
128
  # Returns the measured distance. The value has a range of 0 to 4000
121
129
  # and is given in cm.
122
130
  #
123
- # The Laser Range Finder Bricklet knows different modes. Distances
124
- # are only measured in the distance measurement mode,
125
- # see BrickletLaserRangeFinder#set_mode. Also the laser has to be enabled, see
126
- # BrickletLaserRangeFinder#enable_laser.
131
+ # Sensor hardware version 1 (see BrickletLaserRangeFinder#get_sensor_hardware_version) cannot
132
+ # measure distance and velocity at the same time. Therefore, the distance mode
133
+ # has to be enabled using BrickletLaserRangeFinder#set_mode.
134
+ # Sensor hardware version 3 can measure distance and velocity at the same
135
+ # time. Also the laser has to be enabled, see BrickletLaserRangeFinder#enable_laser.
127
136
  #
128
137
  # If you want to get the distance periodically, it is recommended to
129
- # use the callback CALLBACK_DISTANCE and set the period with
138
+ # use the CALLBACK_DISTANCE callback and set the period with
130
139
  # BrickletLaserRangeFinder#set_distance_callback_period.
131
140
  def get_distance
132
141
  send_request(FUNCTION_GET_DISTANCE, [], '', 2, 'S')
@@ -135,13 +144,16 @@ module Tinkerforge
135
144
  # Returns the measured velocity. The value has a range of -12800 to 12700
136
145
  # and is given in 1/100 m/s.
137
146
  #
138
- # The Laser Range Finder Bricklet knows different modes. Velocity
139
- # is only measured in the velocity measurement modes,
140
- # see BrickletLaserRangeFinder#set_mode. Also the laser has to be enabled, see
141
- # BrickletLaserRangeFinder#enable_laser.
147
+ # Sensor hardware version 1 (see BrickletLaserRangeFinder#get_sensor_hardware_version) cannot
148
+ # measure distance and velocity at the same time. Therefore, the velocity mode
149
+ # has to be enabled using BrickletLaserRangeFinder#set_mode.
150
+ # Sensor hardware version 3 can measure distance and velocity at the same
151
+ # time, but the velocity measurement only produces stables results if a fixed
152
+ # measurement rate (see BrickletLaserRangeFinder#set_configuration) is configured. Also the laser
153
+ # has to be enabled, see BrickletLaserRangeFinder#enable_laser.
142
154
  #
143
155
  # If you want to get the velocity periodically, it is recommended to
144
- # use the callback CALLBACK_VELOCITY and set the period with
156
+ # use the CALLBACK_VELOCITY callback and set the period with
145
157
  # BrickletLaserRangeFinder#set_velocity_callback_period.
146
158
  def get_velocity
147
159
  send_request(FUNCTION_GET_VELOCITY, [], '', 2, 's')
@@ -150,8 +162,8 @@ module Tinkerforge
150
162
  # Sets the period in ms with which the CALLBACK_DISTANCE callback is triggered
151
163
  # periodically. A value of 0 turns the callback off.
152
164
  #
153
- # CALLBACK_DISTANCE is only triggered if the distance value has changed since the
154
- # last triggering.
165
+ # The CALLBACK_DISTANCE callback is only triggered if the distance value has
166
+ # changed since the last triggering.
155
167
  #
156
168
  # The default value is 0.
157
169
  def set_distance_callback_period(period)
@@ -166,8 +178,8 @@ module Tinkerforge
166
178
  # Sets the period in ms with which the CALLBACK_VELOCITY callback is triggered
167
179
  # periodically. A value of 0 turns the callback off.
168
180
  #
169
- # CALLBACK_VELOCITY is only triggered if the velocity value has changed since the
170
- # last triggering.
181
+ # The CALLBACK_VELOCITY callback is only triggered if the velocity value has
182
+ # changed since the last triggering.
171
183
  #
172
184
  # The default value is 0.
173
185
  def set_velocity_callback_period(period)
@@ -179,7 +191,7 @@ module Tinkerforge
179
191
  send_request(FUNCTION_GET_VELOCITY_CALLBACK_PERIOD, [], '', 4, 'L')
180
192
  end
181
193
 
182
- # Sets the thresholds for the CALLBACK_DISTANCE_REACHED callback.
194
+ # Sets the thresholds for the CALLBACK_DISTANCE_REACHED callback.
183
195
  #
184
196
  # The following options are possible:
185
197
  #
@@ -201,7 +213,7 @@ module Tinkerforge
201
213
  send_request(FUNCTION_GET_DISTANCE_CALLBACK_THRESHOLD, [], '', 5, 'k S S')
202
214
  end
203
215
 
204
- # Sets the thresholds for the CALLBACK_VELOCITY_REACHED callback.
216
+ # Sets the thresholds for the CALLBACK_VELOCITY_REACHED callback.
205
217
  #
206
218
  # The following options are possible:
207
219
  #
@@ -263,8 +275,13 @@ module Tinkerforge
263
275
  send_request(FUNCTION_GET_MOVING_AVERAGE, [], '', 2, 'C C')
264
276
  end
265
277
 
266
- # The LIDAR has five different modes. One mode is for distance
267
- # measurements and four modes are for velocity measurements with
278
+ # .. note::
279
+ # This function is only available if you have a LIDAR-Lite sensor with hardware
280
+ # version 1. Use BrickletLaserRangeFinder#set_configuration for hardware version 3. You can check
281
+ # the sensor hardware version using BrickletLaserRangeFinder#get_sensor_hardware_version.
282
+ #
283
+ # The LIDAR-Lite sensor (hardware version 1) has five different modes. One mode is
284
+ # for distance measurements and four modes are for velocity measurements with
268
285
  # different ranges.
269
286
  #
270
287
  # The following modes are available:
@@ -303,7 +320,59 @@ module Tinkerforge
303
320
  send_request(FUNCTION_IS_LASER_ENABLED, [], '', 1, '?')
304
321
  end
305
322
 
306
- # Returns the UID, the UID where the Bricklet is connected to,
323
+ # Returns the LIDAR-Lite hardware version.
324
+ #
325
+ # .. versionadded:: 2.0.3$nbsp;(Plugin)
326
+ def get_sensor_hardware_version
327
+ send_request(FUNCTION_GET_SENSOR_HARDWARE_VERSION, [], '', 1, 'C')
328
+ end
329
+
330
+ # .. note::
331
+ # This function is only available if you have a LIDAR-Lite sensor with hardware
332
+ # version 3. Use BrickletLaserRangeFinder#set_mode for hardware version 1. You can check
333
+ # the sensor hardware version using BrickletLaserRangeFinder#get_sensor_hardware_version.
334
+ #
335
+ # The **Aquisition Count** defines the number of times the Laser Range Finder Bricklet
336
+ # will integrate acquisitions to find a correlation record peak. With a higher count,
337
+ # the Bricklet can measure longer distances. With a lower count, the rate increases. The
338
+ # allowed values are 1-255.
339
+ #
340
+ # If you set **Enable Quick Termination** to true, the distance measurement will be terminated
341
+ # early if a high peak was already detected. This means that a higher measurement rate can be achieved
342
+ # and long distances can be measured at the same time. However, the chance of false-positive
343
+ # distance measurements increases.
344
+ #
345
+ # Normally the distance is calculated with a detection algorithm that uses peak value,
346
+ # signal strength and noise. You can however also define a fixed **Threshold Value**.
347
+ # Set this to a low value if you want to measure the distance to something that has
348
+ # very little reflection (e.g. glass) and set it to a high value if you want to measure
349
+ # the distance to something with a very high reflection (e.g. mirror). Set this to 0 to
350
+ # use the default algorithm. The other allowed values are 1-255.
351
+ #
352
+ # Set the **Measurement Frequency** in Hz to force a fixed measurement rate. If set to 0,
353
+ # the Laser Range Finder Bricklet will use the optimal frequency according to the other
354
+ # configurations and the actual measured distance. Since the rate is not fixed in this case,
355
+ # the velocity measurement is not stable. For a stable velocity measurement you should
356
+ # set a fixed measurement frequency. The lower the frequency, the higher is the resolution
357
+ # of the calculated velocity. The allowed values are 10Hz-500Hz (and 0 to turn the fixed
358
+ # frequency off).
359
+ #
360
+ # The default values for Acquisition Count, Enable Quick Termination, Threshold Value and
361
+ # Measurement Frequency are 128, false, 0 and 0.
362
+ #
363
+ # .. versionadded:: 2.0.3$nbsp;(Plugin)
364
+ def set_configuration(acquisition_count, enable_quick_termination, threshold_value, measurement_frequency)
365
+ send_request(FUNCTION_SET_CONFIGURATION, [acquisition_count, enable_quick_termination, threshold_value, measurement_frequency], 'C ? C S', 0, '')
366
+ end
367
+
368
+ # Returns the configuration as set by BrickletLaserRangeFinder#set_configuration.
369
+ #
370
+ # .. versionadded:: 2.0.3$nbsp;(Plugin)
371
+ def get_configuration
372
+ send_request(FUNCTION_GET_CONFIGURATION, [], '', 5, 'C ? C S')
373
+ end
374
+
375
+ # Returns the UID, the UID where the Bricklet is connected to,
307
376
  # the position, the hardware and firmware version as well as the
308
377
  # device identifier.
309
378
  #