tinkerforge 2.1.4 → 2.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. data/lib/tinkerforge/brick_dc.rb +42 -4
  2. data/lib/tinkerforge/brick_imu.rb +49 -11
  3. data/lib/tinkerforge/brick_imu_v2.rb +506 -0
  4. data/lib/tinkerforge/brick_master.rb +86 -46
  5. data/lib/tinkerforge/brick_red.rb +36 -5
  6. data/lib/tinkerforge/brick_servo.rb +53 -15
  7. data/lib/tinkerforge/brick_stepper.rb +43 -14
  8. data/lib/tinkerforge/bricklet_accelerometer.rb +229 -0
  9. data/lib/tinkerforge/bricklet_ambient_light.rb +10 -9
  10. data/lib/tinkerforge/bricklet_ambient_light_v2.rb +216 -0
  11. data/lib/tinkerforge/bricklet_analog_in.rb +13 -12
  12. data/lib/tinkerforge/bricklet_analog_in_v2.rb +259 -0
  13. data/lib/tinkerforge/bricklet_analog_out.rb +5 -4
  14. data/lib/tinkerforge/bricklet_analog_out_v2.rb +66 -0
  15. data/lib/tinkerforge/bricklet_barometer.rb +11 -9
  16. data/lib/tinkerforge/bricklet_color.rb +11 -9
  17. data/lib/tinkerforge/bricklet_current12.rb +5 -4
  18. data/lib/tinkerforge/bricklet_current25.rb +5 -4
  19. data/lib/tinkerforge/bricklet_distance_ir.rb +8 -7
  20. data/lib/tinkerforge/bricklet_distance_us.rb +9 -8
  21. data/lib/tinkerforge/bricklet_dual_button.rb +5 -4
  22. data/lib/tinkerforge/bricklet_dual_relay.rb +5 -4
  23. data/lib/tinkerforge/bricklet_dust_detector.rb +178 -0
  24. data/lib/tinkerforge/bricklet_gps.rb +6 -5
  25. data/lib/tinkerforge/bricklet_hall_effect.rb +5 -4
  26. data/lib/tinkerforge/bricklet_humidity.rb +8 -7
  27. data/lib/tinkerforge/bricklet_industrial_analog_out.rb +137 -0
  28. data/lib/tinkerforge/bricklet_industrial_digital_in_4.rb +8 -7
  29. data/lib/tinkerforge/bricklet_industrial_digital_out_4.rb +5 -4
  30. data/lib/tinkerforge/bricklet_industrial_dual_0_20ma.rb +6 -5
  31. data/lib/tinkerforge/bricklet_industrial_dual_analog_in.rb +209 -0
  32. data/lib/tinkerforge/bricklet_industrial_quad_relay.rb +5 -4
  33. data/lib/tinkerforge/bricklet_io16.rb +8 -7
  34. data/lib/tinkerforge/bricklet_io4.rb +8 -7
  35. data/lib/tinkerforge/bricklet_joystick.rb +5 -4
  36. data/lib/tinkerforge/bricklet_laser_range_finder.rb +324 -0
  37. data/lib/tinkerforge/bricklet_lcd_16x2.rb +7 -6
  38. data/lib/tinkerforge/bricklet_lcd_20x4.rb +11 -10
  39. data/lib/tinkerforge/bricklet_led_strip.rb +12 -10
  40. data/lib/tinkerforge/bricklet_line.rb +5 -4
  41. data/lib/tinkerforge/bricklet_linear_poti.rb +8 -7
  42. data/lib/tinkerforge/bricklet_load_cell.rb +261 -0
  43. data/lib/tinkerforge/bricklet_moisture.rb +6 -5
  44. data/lib/tinkerforge/bricklet_motion_detector.rb +5 -4
  45. data/lib/tinkerforge/bricklet_multi_touch.rb +5 -4
  46. data/lib/tinkerforge/bricklet_nfc_rfid.rb +38 -46
  47. data/lib/tinkerforge/bricklet_piezo_buzzer.rb +5 -4
  48. data/lib/tinkerforge/bricklet_piezo_speaker.rb +6 -5
  49. data/lib/tinkerforge/bricklet_ptc.rb +5 -4
  50. data/lib/tinkerforge/bricklet_remote_switch.rb +9 -8
  51. data/lib/tinkerforge/bricklet_rotary_encoder.rb +5 -4
  52. data/lib/tinkerforge/bricklet_rotary_poti.rb +5 -4
  53. data/lib/tinkerforge/bricklet_rs232.rb +183 -0
  54. data/lib/tinkerforge/bricklet_segment_display_4x7.rb +8 -5
  55. data/lib/tinkerforge/bricklet_solid_state_relay.rb +5 -4
  56. data/lib/tinkerforge/bricklet_sound_intensity.rb +6 -5
  57. data/lib/tinkerforge/bricklet_temperature.rb +7 -6
  58. data/lib/tinkerforge/bricklet_temperature_ir.rb +7 -6
  59. data/lib/tinkerforge/bricklet_tilt.rb +5 -4
  60. data/lib/tinkerforge/bricklet_voltage.rb +8 -7
  61. data/lib/tinkerforge/bricklet_voltage_current.rb +5 -4
  62. data/lib/tinkerforge/version.rb +1 -1
  63. metadata +13 -2
@@ -1,18 +1,19 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2014-12-10. #
3
+ # This file was automatically generated on 2015-11-17. #
4
4
  # #
5
- # Bindings Version 2.1.4 #
5
+ # Bindings Version 2.1.6 #
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 #
9
- # to the generator git on tinkerforge.com #
9
+ # to the generators git repository on tinkerforge.com #
10
10
  #############################################################
11
11
 
12
12
  module Tinkerforge
13
- # Device for receiving GPS position
13
+ # Determine position, velocity and altitude using GPS
14
14
  class BrickletGPS < Device
15
15
  DEVICE_IDENTIFIER = 222 # :nodoc:
16
+ DEVICE_DISPLAY_NAME = 'GPS Bricklet' # :nodoc:
16
17
 
17
18
  # This callback is triggered periodically with the period that is set by
18
19
  # BrickletGPS#set_coordinates_callback_period. The parameters are the same
@@ -129,7 +130,7 @@ module Tinkerforge
129
130
  # PDOP, HDOP and VDOP are the dilution of precision (DOP) values. They specify
130
131
  # the additional multiplicative effect of GPS satellite geometry on GPS
131
132
  # precision. See
132
- # `here <http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)>`__
133
+ # `here <https://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)>`__
133
134
  # for more information. The values are give in hundredths.
134
135
  #
135
136
  # EPE is the "Estimated Position Error". The EPE is given in cm. This is not the
@@ -1,18 +1,19 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2014-12-10. #
3
+ # This file was automatically generated on 2015-11-17. #
4
4
  # #
5
- # Bindings Version 2.1.4 #
5
+ # Bindings Version 2.1.6 #
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 #
9
- # to the generator git on tinkerforge.com #
9
+ # to the generators git repository on tinkerforge.com #
10
10
  #############################################################
11
11
 
12
12
  module Tinkerforge
13
- # Device that detects presence of magnetic field via hall effect
13
+ # Detects presence of magnetic field
14
14
  class BrickletHallEffect < Device
15
15
  DEVICE_IDENTIFIER = 240 # :nodoc:
16
+ DEVICE_DISPLAY_NAME = 'Hall Effect Bricklet' # :nodoc:
16
17
 
17
18
  # This callback is triggered periodically with the period that is set by
18
19
  # BrickletHallEffect#set_edge_count_callback_period. The parameters are the
@@ -1,18 +1,19 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2014-12-10. #
3
+ # This file was automatically generated on 2015-11-17. #
4
4
  # #
5
- # Bindings Version 2.1.4 #
5
+ # Bindings Version 2.1.6 #
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 #
9
- # to the generator git on tinkerforge.com #
9
+ # to the generators git repository on tinkerforge.com #
10
10
  #############################################################
11
11
 
12
12
  module Tinkerforge
13
- # Device for sensing Humidity
13
+ # Measures relative humidity
14
14
  class BrickletHumidity < Device
15
15
  DEVICE_IDENTIFIER = 27 # :nodoc:
16
+ DEVICE_DISPLAY_NAME = 'Humidity Bricklet' # :nodoc:
16
17
 
17
18
  # This callback is triggered periodically with the period that is set by
18
19
  # BrickletHumidity#set_humidity_callback_period. The parameter is the humidity of the
@@ -71,7 +72,7 @@ module Tinkerforge
71
72
  def initialize(uid, ipcon)
72
73
  super uid, ipcon
73
74
 
74
- @api_version = [2, 0, 0]
75
+ @api_version = [2, 0, 1]
75
76
 
76
77
  @response_expected[FUNCTION_GET_HUMIDITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
77
78
  @response_expected[FUNCTION_GET_ANALOG_VALUE] = RESPONSE_EXPECTED_ALWAYS_TRUE
@@ -173,12 +174,12 @@ module Tinkerforge
173
174
  #
174
175
  # The default value is ('x', 0, 0).
175
176
  def set_humidity_callback_threshold(option, min, max)
176
- send_request(FUNCTION_SET_HUMIDITY_CALLBACK_THRESHOLD, [option, min, max], 'k s s', 0, '')
177
+ send_request(FUNCTION_SET_HUMIDITY_CALLBACK_THRESHOLD, [option, min, max], 'k S S', 0, '')
177
178
  end
178
179
 
179
180
  # Returns the threshold as set by BrickletHumidity#set_humidity_callback_threshold.
180
181
  def get_humidity_callback_threshold
181
- send_request(FUNCTION_GET_HUMIDITY_CALLBACK_THRESHOLD, [], '', 5, 'k s s')
182
+ send_request(FUNCTION_GET_HUMIDITY_CALLBACK_THRESHOLD, [], '', 5, 'k S S')
182
183
  end
183
184
 
184
185
  # Sets the thresholds for the CALLBACK_ANALOG_VALUE_REACHED callback.
@@ -0,0 +1,137 @@
1
+ # -*- ruby encoding: utf-8 -*-
2
+ #############################################################
3
+ # This file was automatically generated on 2015-11-17. #
4
+ # #
5
+ # Bindings Version 2.1.6 #
6
+ # #
7
+ # If you have a bugfix for this file and want to commit it, #
8
+ # please fix the bug in the generator. You can find a link #
9
+ # to the generators git repository on tinkerforge.com #
10
+ #############################################################
11
+
12
+ module Tinkerforge
13
+ # Generates configurable DC voltage and current, 0V to 10V and 4mA to 20mA
14
+ class BrickletIndustrialAnalogOut < Device
15
+ DEVICE_IDENTIFIER = 258 # :nodoc:
16
+ DEVICE_DISPLAY_NAME = 'Industrial Analog Out Bricklet' # :nodoc:
17
+
18
+ FUNCTION_ENABLE = 1 # :nodoc:
19
+ FUNCTION_DISABLE = 2 # :nodoc:
20
+ FUNCTION_IS_ENABLED = 3 # :nodoc:
21
+ FUNCTION_SET_VOLTAGE = 4 # :nodoc:
22
+ FUNCTION_GET_VOLTAGE = 5 # :nodoc:
23
+ FUNCTION_SET_CURRENT = 6 # :nodoc:
24
+ FUNCTION_GET_CURRENT = 7 # :nodoc:
25
+ FUNCTION_SET_CONFIGURATION = 8 # :nodoc:
26
+ FUNCTION_GET_CONFIGURATION = 9 # :nodoc:
27
+ FUNCTION_GET_IDENTITY = 255 # :nodoc:
28
+
29
+ VOLTAGE_RANGE_0_TO_5V = 0 # :nodoc:
30
+ VOLTAGE_RANGE_0_TO_10V = 1 # :nodoc:
31
+ CURRENT_RANGE_4_TO_20MA = 0 # :nodoc:
32
+ CURRENT_RANGE_0_TO_20MA = 1 # :nodoc:
33
+ CURRENT_RANGE_0_TO_24MA = 2 # :nodoc:
34
+
35
+ # Creates an object with the unique device ID <tt>uid</tt> and adds it to
36
+ # the IP Connection <tt>ipcon</tt>.
37
+ def initialize(uid, ipcon)
38
+ super uid, ipcon
39
+
40
+ @api_version = [2, 0, 0]
41
+
42
+ @response_expected[FUNCTION_ENABLE] = RESPONSE_EXPECTED_FALSE
43
+ @response_expected[FUNCTION_DISABLE] = RESPONSE_EXPECTED_FALSE
44
+ @response_expected[FUNCTION_IS_ENABLED] = RESPONSE_EXPECTED_ALWAYS_TRUE
45
+ @response_expected[FUNCTION_SET_VOLTAGE] = RESPONSE_EXPECTED_FALSE
46
+ @response_expected[FUNCTION_GET_VOLTAGE] = RESPONSE_EXPECTED_ALWAYS_TRUE
47
+ @response_expected[FUNCTION_SET_CURRENT] = RESPONSE_EXPECTED_FALSE
48
+ @response_expected[FUNCTION_GET_CURRENT] = RESPONSE_EXPECTED_ALWAYS_TRUE
49
+ @response_expected[FUNCTION_SET_CONFIGURATION] = RESPONSE_EXPECTED_FALSE
50
+ @response_expected[FUNCTION_GET_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
51
+ @response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
52
+
53
+ end
54
+
55
+ # Enables the output of voltage and current.
56
+ #
57
+ # The default is disabled.
58
+ def enable
59
+ send_request(FUNCTION_ENABLE, [], '', 0, '')
60
+ end
61
+
62
+ # Disables the output of voltage and current.
63
+ #
64
+ # The default is disabled.
65
+ def disable
66
+ send_request(FUNCTION_DISABLE, [], '', 0, '')
67
+ end
68
+
69
+ # Returns *true* if output of voltage and current is enabled, *false* otherwise.
70
+ def is_enabled
71
+ send_request(FUNCTION_IS_ENABLED, [], '', 1, '?')
72
+ end
73
+
74
+ # Sets the output voltage in mV.
75
+ #
76
+ # The output voltage and output current are linked. Changing the output voltage
77
+ # also changes the output current.
78
+ def set_voltage(voltage)
79
+ send_request(FUNCTION_SET_VOLTAGE, [voltage], 'S', 0, '')
80
+ end
81
+
82
+ # Returns the voltage as set by BrickletIndustrialAnalogOut#set_voltage.
83
+ def get_voltage
84
+ send_request(FUNCTION_GET_VOLTAGE, [], '', 2, 'S')
85
+ end
86
+
87
+ # Sets the output current in µA.
88
+ #
89
+ # The output current and output voltage are linked. Changing the output current
90
+ # also changes the output voltage.
91
+ def set_current(current)
92
+ send_request(FUNCTION_SET_CURRENT, [current], 'S', 0, '')
93
+ end
94
+
95
+ # Returns the current as set by BrickletIndustrialAnalogOut#set_current.
96
+ def get_current
97
+ send_request(FUNCTION_GET_CURRENT, [], '', 2, 'S')
98
+ end
99
+
100
+ # Configures the voltage and current range.
101
+ #
102
+ # Possible voltage ranges are:
103
+ #
104
+ # * 0V to 5V
105
+ # * 0V to 10V (default)
106
+ #
107
+ # Possible current ranges are:
108
+ #
109
+ # * 4mA to 20mA (default)
110
+ # * 0mA to 20mA
111
+ # * 0mA to 24mA
112
+ #
113
+ # The resolution will always be 12 bit. This means, that the
114
+ # precision is higher with a smaller range.
115
+ def set_configuration(voltage_range, current_range)
116
+ send_request(FUNCTION_SET_CONFIGURATION, [voltage_range, current_range], 'C C', 0, '')
117
+ end
118
+
119
+ # Returns the configuration as set by BrickletIndustrialAnalogOut#set_configuration.
120
+ def get_configuration
121
+ send_request(FUNCTION_GET_CONFIGURATION, [], '', 2, 'C C')
122
+ end
123
+
124
+ # Returns the UID, the UID where the Bricklet is connected to,
125
+ # the position, the hardware and firmware version as well as the
126
+ # device identifier.
127
+ #
128
+ # The position can be 'a', 'b', 'c' or 'd'.
129
+ #
130
+ # The device identifier numbers can be found :ref:`here <device_identifier>`.
131
+ # |device_identifier_constant|
132
+ def get_identity
133
+ send_request(FUNCTION_GET_IDENTITY, [], '', 25, 'Z8 Z8 k C3 C3 S')
134
+ end
135
+
136
+ end
137
+ end
@@ -1,18 +1,19 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2014-12-10. #
3
+ # This file was automatically generated on 2015-11-17. #
4
4
  # #
5
- # Bindings Version 2.1.4 #
5
+ # Bindings Version 2.1.6 #
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 #
9
- # to the generator git on tinkerforge.com #
9
+ # to the generators git repository on tinkerforge.com #
10
10
  #############################################################
11
11
 
12
12
  module Tinkerforge
13
- # Device for controlling up to 4 optically coupled digital inputs
13
+ # 4 galvanically isolated digital inputs
14
14
  class BrickletIndustrialDigitalIn4 < Device
15
15
  DEVICE_IDENTIFIER = 223 # :nodoc:
16
+ DEVICE_DISPLAY_NAME = 'Industrial Digital In 4 Bricklet' # :nodoc:
16
17
 
17
18
  # This callback is triggered whenever a change of the voltage level is detected
18
19
  # on pins where the interrupt was activated with BrickletIndustrialDigitalIn4#set_interrupt.
@@ -160,7 +161,7 @@ module Tinkerforge
160
161
  # If you set the reset counter to *true*, the count is set back to 0
161
162
  # directly after it is read.
162
163
  #
163
- # .. versionadded:: 2.0.1~(Plugin)
164
+ # .. versionadded:: 2.0.1$nbsp;(Plugin)
164
165
  def get_edge_count(pin, reset_counter)
165
166
  send_request(FUNCTION_GET_EDGE_COUNT, [pin, reset_counter], 'C ?', 4, 'L')
166
167
  end
@@ -184,7 +185,7 @@ module Tinkerforge
184
185
  #
185
186
  # Default values: 0 (edge type) and 100ms (debounce time)
186
187
  #
187
- # .. versionadded:: 2.0.1~(Plugin)
188
+ # .. versionadded:: 2.0.1$nbsp;(Plugin)
188
189
  def set_edge_count_config(selection_mask, edge_type, debounce)
189
190
  send_request(FUNCTION_SET_EDGE_COUNT_CONFIG, [selection_mask, edge_type, debounce], 'S C C', 0, '')
190
191
  end
@@ -192,7 +193,7 @@ module Tinkerforge
192
193
  # Returns the edge type and debounce time for the selected pin as set by
193
194
  # BrickletIndustrialDigitalIn4#set_edge_count_config.
194
195
  #
195
- # .. versionadded:: 2.0.1~(Plugin)
196
+ # .. versionadded:: 2.0.1$nbsp;(Plugin)
196
197
  def get_edge_count_config(pin)
197
198
  send_request(FUNCTION_GET_EDGE_COUNT_CONFIG, [pin], 'C', 2, 'C C')
198
199
  end
@@ -1,18 +1,19 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2014-12-10. #
3
+ # This file was automatically generated on 2015-11-17. #
4
4
  # #
5
- # Bindings Version 2.1.4 #
5
+ # Bindings Version 2.1.6 #
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 #
9
- # to the generator git on tinkerforge.com #
9
+ # to the generators git repository on tinkerforge.com #
10
10
  #############################################################
11
11
 
12
12
  module Tinkerforge
13
- # Device for controlling up to 4 optically coupled digital outputs
13
+ # 4 galvanically isolated digital outputs
14
14
  class BrickletIndustrialDigitalOut4 < Device
15
15
  DEVICE_IDENTIFIER = 224 # :nodoc:
16
+ DEVICE_DISPLAY_NAME = 'Industrial Digital Out 4 Bricklet' # :nodoc:
16
17
 
17
18
  # This callback is triggered whenever a monoflop timer reaches 0. The
18
19
  # parameters contain the involved pins and the current value of the pins
@@ -1,18 +1,19 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2014-12-10. #
3
+ # This file was automatically generated on 2015-11-17. #
4
4
  # #
5
- # Bindings Version 2.1.4 #
5
+ # Bindings Version 2.1.6 #
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 #
9
- # to the generator git on tinkerforge.com #
9
+ # to the generators git repository on tinkerforge.com #
10
10
  #############################################################
11
11
 
12
12
  module Tinkerforge
13
- # Device for sensing two currents between 0 and 20mA (IEC 60381-1)
13
+ # Measures two DC currents between 0mA and 20mA (IEC 60381-1)
14
14
  class BrickletIndustrialDual020mA < Device
15
15
  DEVICE_IDENTIFIER = 228 # :nodoc:
16
+ DEVICE_DISPLAY_NAME = 'Industrial Dual 0-20mA Bricklet' # :nodoc:
16
17
 
17
18
  # This callback is triggered periodically with the period that is set by
18
19
  # BrickletIndustrialDual020mA#set_current_callback_period. The parameter is the current of the
@@ -161,7 +162,7 @@ module Tinkerforge
161
162
  # "2", "15 samples per second, 16 bit resolution"
162
163
  # "3", "4 samples per second, 18 bit resolution"
163
164
  #
164
- # The default value is 3: 4 samples per second with 18 bit resolution.
165
+ # The default value is 3 (4 samples per second with 18 bit resolution).
165
166
  def set_sample_rate(rate)
166
167
  send_request(FUNCTION_SET_SAMPLE_RATE, [rate], 'C', 0, '')
167
168
  end
@@ -0,0 +1,209 @@
1
+ # -*- ruby encoding: utf-8 -*-
2
+ #############################################################
3
+ # This file was automatically generated on 2015-11-17. #
4
+ # #
5
+ # Bindings Version 2.1.6 #
6
+ # #
7
+ # If you have a bugfix for this file and want to commit it, #
8
+ # please fix the bug in the generator. You can find a link #
9
+ # to the generators git repository on tinkerforge.com #
10
+ #############################################################
11
+
12
+ module Tinkerforge
13
+ # Measures two DC voltages between -35V and +35V with 24bit resolution each
14
+ class BrickletIndustrialDualAnalogIn < Device
15
+ DEVICE_IDENTIFIER = 249 # :nodoc:
16
+ DEVICE_DISPLAY_NAME = 'Industrial Dual Analog In Bricklet' # :nodoc:
17
+
18
+ # This callback is triggered periodically with the period that is set by
19
+ # BrickletIndustrialDualAnalogIn#set_voltage_callback_period. The parameter is the voltage of the
20
+ # channel.
21
+ #
22
+ # CALLBACK_VOLTAGE is only triggered if the voltage has changed since the
23
+ # last triggering.
24
+ CALLBACK_VOLTAGE = 13
25
+
26
+ # This callback is triggered when the threshold as set by
27
+ # BrickletIndustrialDualAnalogIn#set_voltage_callback_threshold is reached.
28
+ # The parameter is the voltage of the channel.
29
+ #
30
+ # If the threshold keeps being reached, the callback is triggered periodically
31
+ # with the period as set by BrickletIndustrialDualAnalogIn#set_debounce_period.
32
+ CALLBACK_VOLTAGE_REACHED = 14
33
+
34
+ FUNCTION_GET_VOLTAGE = 1 # :nodoc:
35
+ FUNCTION_SET_VOLTAGE_CALLBACK_PERIOD = 2 # :nodoc:
36
+ FUNCTION_GET_VOLTAGE_CALLBACK_PERIOD = 3 # :nodoc:
37
+ FUNCTION_SET_VOLTAGE_CALLBACK_THRESHOLD = 4 # :nodoc:
38
+ FUNCTION_GET_VOLTAGE_CALLBACK_THRESHOLD = 5 # :nodoc:
39
+ FUNCTION_SET_DEBOUNCE_PERIOD = 6 # :nodoc:
40
+ FUNCTION_GET_DEBOUNCE_PERIOD = 7 # :nodoc:
41
+ FUNCTION_SET_SAMPLE_RATE = 8 # :nodoc:
42
+ FUNCTION_GET_SAMPLE_RATE = 9 # :nodoc:
43
+ FUNCTION_SET_CALIBRATION = 10 # :nodoc:
44
+ FUNCTION_GET_CALIBRATION = 11 # :nodoc:
45
+ FUNCTION_GET_ADC_VALUES = 12 # :nodoc:
46
+ FUNCTION_GET_IDENTITY = 255 # :nodoc:
47
+
48
+ THRESHOLD_OPTION_OFF = 'x' # :nodoc:
49
+ THRESHOLD_OPTION_OUTSIDE = 'o' # :nodoc:
50
+ THRESHOLD_OPTION_INSIDE = 'i' # :nodoc:
51
+ THRESHOLD_OPTION_SMALLER = '<' # :nodoc:
52
+ THRESHOLD_OPTION_GREATER = '>' # :nodoc:
53
+ SAMPLE_RATE_976_SPS = 0 # :nodoc:
54
+ SAMPLE_RATE_488_SPS = 1 # :nodoc:
55
+ SAMPLE_RATE_244_SPS = 2 # :nodoc:
56
+ SAMPLE_RATE_122_SPS = 3 # :nodoc:
57
+ SAMPLE_RATE_61_SPS = 4 # :nodoc:
58
+ SAMPLE_RATE_4_SPS = 5 # :nodoc:
59
+ SAMPLE_RATE_2_SPS = 6 # :nodoc:
60
+ SAMPLE_RATE_1_SPS = 7 # :nodoc:
61
+
62
+ # Creates an object with the unique device ID <tt>uid</tt> and adds it to
63
+ # the IP Connection <tt>ipcon</tt>.
64
+ def initialize(uid, ipcon)
65
+ super uid, ipcon
66
+
67
+ @api_version = [2, 0, 0]
68
+
69
+ @response_expected[FUNCTION_GET_VOLTAGE] = RESPONSE_EXPECTED_ALWAYS_TRUE
70
+ @response_expected[FUNCTION_SET_VOLTAGE_CALLBACK_PERIOD] = RESPONSE_EXPECTED_TRUE
71
+ @response_expected[FUNCTION_GET_VOLTAGE_CALLBACK_PERIOD] = RESPONSE_EXPECTED_ALWAYS_TRUE
72
+ @response_expected[FUNCTION_SET_VOLTAGE_CALLBACK_THRESHOLD] = RESPONSE_EXPECTED_TRUE
73
+ @response_expected[FUNCTION_GET_VOLTAGE_CALLBACK_THRESHOLD] = RESPONSE_EXPECTED_ALWAYS_TRUE
74
+ @response_expected[FUNCTION_SET_DEBOUNCE_PERIOD] = RESPONSE_EXPECTED_TRUE
75
+ @response_expected[FUNCTION_GET_DEBOUNCE_PERIOD] = RESPONSE_EXPECTED_ALWAYS_TRUE
76
+ @response_expected[FUNCTION_SET_SAMPLE_RATE] = RESPONSE_EXPECTED_FALSE
77
+ @response_expected[FUNCTION_GET_SAMPLE_RATE] = RESPONSE_EXPECTED_ALWAYS_TRUE
78
+ @response_expected[FUNCTION_SET_CALIBRATION] = RESPONSE_EXPECTED_FALSE
79
+ @response_expected[FUNCTION_GET_CALIBRATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
80
+ @response_expected[FUNCTION_GET_ADC_VALUES] = RESPONSE_EXPECTED_ALWAYS_TRUE
81
+ @response_expected[CALLBACK_VOLTAGE] = RESPONSE_EXPECTED_ALWAYS_FALSE
82
+ @response_expected[CALLBACK_VOLTAGE_REACHED] = RESPONSE_EXPECTED_ALWAYS_FALSE
83
+ @response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
84
+
85
+ @callback_formats[CALLBACK_VOLTAGE] = 'C l'
86
+ @callback_formats[CALLBACK_VOLTAGE_REACHED] = 'C l'
87
+ end
88
+
89
+ # Returns the voltage for the given channel in mV.
90
+ #
91
+ # If you want to get the voltage periodically, it is recommended to use the
92
+ # callback CALLBACK_VOLTAGE and set the period with
93
+ # BrickletIndustrialDualAnalogIn#set_voltage_callback_period.
94
+ def get_voltage(channel)
95
+ send_request(FUNCTION_GET_VOLTAGE, [channel], 'C', 4, 'l')
96
+ end
97
+
98
+ # Sets the period in ms with which the CALLBACK_VOLTAGE callback is triggered
99
+ # periodically for the given channel. A value of 0 turns the callback off.
100
+ #
101
+ # CALLBACK_VOLTAGE is only triggered if the voltage has changed since the
102
+ # last triggering.
103
+ #
104
+ # The default value is 0.
105
+ def set_voltage_callback_period(channel, period)
106
+ send_request(FUNCTION_SET_VOLTAGE_CALLBACK_PERIOD, [channel, period], 'C L', 0, '')
107
+ end
108
+
109
+ # Returns the period as set by BrickletIndustrialDualAnalogIn#set_voltage_callback_period.
110
+ def get_voltage_callback_period(channel)
111
+ send_request(FUNCTION_GET_VOLTAGE_CALLBACK_PERIOD, [channel], 'C', 4, 'L')
112
+ end
113
+
114
+ # Sets the thresholds for the CALLBACK_VOLTAGE_REACHED callback for the given
115
+ # channel.
116
+ #
117
+ # The following options are possible:
118
+ #
119
+ # "Option", "Description"
120
+ #
121
+ # "'x'", "Callback is turned off"
122
+ # "'o'", "Callback is triggered when the voltage is *outside* the min and max values"
123
+ # "'i'", "Callback is triggered when the voltage is *inside* the min and max values"
124
+ # "'<'", "Callback is triggered when the voltage is smaller than the min value (max is ignored)"
125
+ # "'>'", "Callback is triggered when the voltage is greater than the min value (max is ignored)"
126
+ #
127
+ # The default value is ('x', 0, 0).
128
+ def set_voltage_callback_threshold(channel, option, min, max)
129
+ send_request(FUNCTION_SET_VOLTAGE_CALLBACK_THRESHOLD, [channel, option, min, max], 'C k l l', 0, '')
130
+ end
131
+
132
+ # Returns the threshold as set by BrickletIndustrialDualAnalogIn#set_voltage_callback_threshold.
133
+ def get_voltage_callback_threshold(channel)
134
+ send_request(FUNCTION_GET_VOLTAGE_CALLBACK_THRESHOLD, [channel], 'C', 9, 'k l l')
135
+ end
136
+
137
+ # Sets the period in ms with which the threshold callback
138
+ #
139
+ # * CALLBACK_VOLTAGE_REACHED
140
+ #
141
+ # is triggered, if the threshold
142
+ #
143
+ # * BrickletIndustrialDualAnalogIn#set_voltage_callback_threshold
144
+ #
145
+ # keeps being reached.
146
+ #
147
+ # The default value is 100.
148
+ def set_debounce_period(debounce)
149
+ send_request(FUNCTION_SET_DEBOUNCE_PERIOD, [debounce], 'L', 0, '')
150
+ end
151
+
152
+ # Returns the debounce period as set by BrickletIndustrialDualAnalogIn#set_debounce_period.
153
+ def get_debounce_period
154
+ send_request(FUNCTION_GET_DEBOUNCE_PERIOD, [], '', 4, 'L')
155
+ end
156
+
157
+ # Sets the sample rate. The sample rate can be between 1 sample per second
158
+ # and 976 samples per second. Decreasing the sample rate will also decrease the
159
+ # noise on the data.
160
+ #
161
+ # The default value is 6 (2 samples per second).
162
+ def set_sample_rate(rate)
163
+ send_request(FUNCTION_SET_SAMPLE_RATE, [rate], 'C', 0, '')
164
+ end
165
+
166
+ # Returns the sample rate as set by BrickletIndustrialDualAnalogIn#set_sample_rate.
167
+ def get_sample_rate
168
+ send_request(FUNCTION_GET_SAMPLE_RATE, [], '', 1, 'C')
169
+ end
170
+
171
+ # Sets offset and gain of MCP3911 internal calibration registers.
172
+ #
173
+ # See MCP3911 datasheet 7.7 and 7.8. The Industrial Dual Analog In Bricklet
174
+ # is already factory calibrated by Tinkerforge. It should not be necessary
175
+ # for you to use this function
176
+ def set_calibration(offset, gain)
177
+ send_request(FUNCTION_SET_CALIBRATION, [offset, gain], 'l2 l2', 0, '')
178
+ end
179
+
180
+ # Returns the calibration as set by BrickletIndustrialDualAnalogIn#set_calibration.
181
+ def get_calibration
182
+ send_request(FUNCTION_GET_CALIBRATION, [], '', 16, 'l2 l2')
183
+ end
184
+
185
+ # Returns the ADC values as given by the MCP3911 IC. This function
186
+ # is needed for proper calibration, see BrickletIndustrialDualAnalogIn#set_calibration.
187
+ def get_adc_values
188
+ send_request(FUNCTION_GET_ADC_VALUES, [], '', 8, 'l2')
189
+ end
190
+
191
+ # Returns the UID, the UID where the Bricklet is connected to,
192
+ # the position, the hardware and firmware version as well as the
193
+ # device identifier.
194
+ #
195
+ # The position can be 'a', 'b', 'c' or 'd'.
196
+ #
197
+ # The device identifier numbers can be found :ref:`here <device_identifier>`.
198
+ # |device_identifier_constant|
199
+ def get_identity
200
+ send_request(FUNCTION_GET_IDENTITY, [], '', 25, 'Z8 Z8 k C3 C3 S')
201
+ end
202
+
203
+ # Registers a callback with ID <tt>id</tt> to the block <tt>block</tt>.
204
+ def register_callback(id, &block)
205
+ callback = block
206
+ @registered_callbacks[id] = callback
207
+ end
208
+ end
209
+ end