tinkerforge 2.0.7
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.
- data/lib/tinkerforge.rb +5 -0
- data/lib/tinkerforge/brick_dc.rb +359 -0
- data/lib/tinkerforge/brick_imu.rb +512 -0
- data/lib/tinkerforge/brick_master.rb +1120 -0
- data/lib/tinkerforge/brick_servo.rb +475 -0
- data/lib/tinkerforge/brick_stepper.rb +556 -0
- data/lib/tinkerforge/bricklet_ambient_light.rb +246 -0
- data/lib/tinkerforge/bricklet_analog_in.rb +273 -0
- data/lib/tinkerforge/bricklet_analog_out.rb +90 -0
- data/lib/tinkerforge/bricklet_barometer.rb +313 -0
- data/lib/tinkerforge/bricklet_current12.rb +274 -0
- data/lib/tinkerforge/bricklet_current25.rb +274 -0
- data/lib/tinkerforge/bricklet_distance_ir.rb +274 -0
- data/lib/tinkerforge/bricklet_dual_relay.rb +127 -0
- data/lib/tinkerforge/bricklet_gps.rb +301 -0
- data/lib/tinkerforge/bricklet_humidity.rb +245 -0
- data/lib/tinkerforge/bricklet_industrial_digital_in_4.rb +165 -0
- data/lib/tinkerforge/bricklet_industrial_digital_out_4.rb +177 -0
- data/lib/tinkerforge/bricklet_industrial_quad_relay.rb +177 -0
- data/lib/tinkerforge/bricklet_io16.rb +237 -0
- data/lib/tinkerforge/bricklet_io4.rb +236 -0
- data/lib/tinkerforge/bricklet_joystick.rb +274 -0
- data/lib/tinkerforge/bricklet_lcd_16x2.rb +175 -0
- data/lib/tinkerforge/bricklet_lcd_20x4.rb +231 -0
- data/lib/tinkerforge/bricklet_linear_poti.rb +241 -0
- data/lib/tinkerforge/bricklet_piezo_buzzer.rb +84 -0
- data/lib/tinkerforge/bricklet_ptc.rb +277 -0
- data/lib/tinkerforge/bricklet_rotary_poti.rb +241 -0
- data/lib/tinkerforge/bricklet_temperature.rb +188 -0
- data/lib/tinkerforge/bricklet_temperature_ir.rb +275 -0
- data/lib/tinkerforge/bricklet_voltage.rb +241 -0
- data/lib/tinkerforge/bricklet_voltage_current.rb +386 -0
- data/lib/tinkerforge/ip_connection.rb +1027 -0
- data/lib/tinkerforge/version.rb +4 -0
- metadata +98 -0
@@ -0,0 +1,274 @@
|
|
1
|
+
# -*- ruby encoding: utf-8 -*-
|
2
|
+
#############################################################
|
3
|
+
# This file was automatically generated on 2013-05-16. #
|
4
|
+
# #
|
5
|
+
# Bindings Version 2.0.7 #
|
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 generator git on tinkerforge.com #
|
10
|
+
#############################################################
|
11
|
+
|
12
|
+
module Tinkerforge
|
13
|
+
# Dual-Axis Joystick with Button
|
14
|
+
class BrickletJoystick < Device
|
15
|
+
DEVICE_IDENTIFIER = 210 # :nodoc:
|
16
|
+
|
17
|
+
# This callback is triggered periodically with the period that is set by
|
18
|
+
# BrickletJoystick#set_position_callback_period. The parameter is the position of the
|
19
|
+
# Joystick.
|
20
|
+
#
|
21
|
+
# CALLBACK_POSITION is only triggered if the position has changed since the
|
22
|
+
# last triggering.
|
23
|
+
CALLBACK_POSITION = 15
|
24
|
+
|
25
|
+
# This callback is triggered periodically with the period that is set by
|
26
|
+
# BrickletJoystick#set_analog_value_callback_period. The parameters are the analog values
|
27
|
+
# of the Joystick.
|
28
|
+
#
|
29
|
+
# CALLBACK_ANALOG_VALUE is only triggered if the values have changed since the
|
30
|
+
# last triggering.
|
31
|
+
CALLBACK_ANALOG_VALUE = 16
|
32
|
+
|
33
|
+
# This callback is triggered when the threshold as set by
|
34
|
+
# BrickletJoystick#set_position_callback_threshold is reached.
|
35
|
+
# The parameters are the position of the Joystick.
|
36
|
+
#
|
37
|
+
# If the threshold keeps being reached, the callback is triggered periodically
|
38
|
+
# with the period as set by BrickletJoystick#set_debounce_period.
|
39
|
+
CALLBACK_POSITION_REACHED = 17
|
40
|
+
|
41
|
+
# This callback is triggered when the threshold as set by
|
42
|
+
# BrickletJoystick#set_analog_value_callback_threshold is reached.
|
43
|
+
# The parameters are the analog values of the Joystick.
|
44
|
+
#
|
45
|
+
# If the threshold keeps being reached, the callback is triggered periodically
|
46
|
+
# with the period as set by BrickletJoystick#set_debounce_period.
|
47
|
+
CALLBACK_ANALOG_VALUE_REACHED = 18
|
48
|
+
|
49
|
+
# This callback is triggered when the button is pressed.
|
50
|
+
CALLBACK_PRESSED = 19
|
51
|
+
|
52
|
+
# This callback is triggered when the button is released.
|
53
|
+
CALLBACK_RELEASED = 20
|
54
|
+
|
55
|
+
FUNCTION_GET_POSITION = 1 # :nodoc:
|
56
|
+
FUNCTION_IS_PRESSED = 2 # :nodoc:
|
57
|
+
FUNCTION_GET_ANALOG_VALUE = 3 # :nodoc:
|
58
|
+
FUNCTION_CALIBRATE = 4 # :nodoc:
|
59
|
+
FUNCTION_SET_POSITION_CALLBACK_PERIOD = 5 # :nodoc:
|
60
|
+
FUNCTION_GET_POSITION_CALLBACK_PERIOD = 6 # :nodoc:
|
61
|
+
FUNCTION_SET_ANALOG_VALUE_CALLBACK_PERIOD = 7 # :nodoc:
|
62
|
+
FUNCTION_GET_ANALOG_VALUE_CALLBACK_PERIOD = 8 # :nodoc:
|
63
|
+
FUNCTION_SET_POSITION_CALLBACK_THRESHOLD = 9 # :nodoc:
|
64
|
+
FUNCTION_GET_POSITION_CALLBACK_THRESHOLD = 10 # :nodoc:
|
65
|
+
FUNCTION_SET_ANALOG_VALUE_CALLBACK_THRESHOLD = 11 # :nodoc:
|
66
|
+
FUNCTION_GET_ANALOG_VALUE_CALLBACK_THRESHOLD = 12 # :nodoc:
|
67
|
+
FUNCTION_SET_DEBOUNCE_PERIOD = 13 # :nodoc:
|
68
|
+
FUNCTION_GET_DEBOUNCE_PERIOD = 14 # :nodoc:
|
69
|
+
FUNCTION_GET_IDENTITY = 255 # :nodoc:
|
70
|
+
|
71
|
+
THRESHOLD_OPTION_OFF = 'x' # :nodoc:
|
72
|
+
THRESHOLD_OPTION_OUTSIDE = 'o' # :nodoc:
|
73
|
+
THRESHOLD_OPTION_INSIDE = 'i' # :nodoc:
|
74
|
+
THRESHOLD_OPTION_SMALLER = '<' # :nodoc:
|
75
|
+
THRESHOLD_OPTION_GREATER = '>' # :nodoc:
|
76
|
+
|
77
|
+
# Creates an object with the unique device ID <tt>uid</tt> and adds it to
|
78
|
+
# the IP Connection <tt>ipcon</tt>.
|
79
|
+
def initialize(uid, ipcon)
|
80
|
+
super uid, ipcon
|
81
|
+
|
82
|
+
@api_version = [2, 0, 0]
|
83
|
+
|
84
|
+
@response_expected[FUNCTION_GET_POSITION] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
85
|
+
@response_expected[FUNCTION_IS_PRESSED] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
86
|
+
@response_expected[FUNCTION_GET_ANALOG_VALUE] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
87
|
+
@response_expected[FUNCTION_CALIBRATE] = RESPONSE_EXPECTED_FALSE
|
88
|
+
@response_expected[FUNCTION_SET_POSITION_CALLBACK_PERIOD] = RESPONSE_EXPECTED_TRUE
|
89
|
+
@response_expected[FUNCTION_GET_POSITION_CALLBACK_PERIOD] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
90
|
+
@response_expected[FUNCTION_SET_ANALOG_VALUE_CALLBACK_PERIOD] = RESPONSE_EXPECTED_TRUE
|
91
|
+
@response_expected[FUNCTION_GET_ANALOG_VALUE_CALLBACK_PERIOD] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
92
|
+
@response_expected[FUNCTION_SET_POSITION_CALLBACK_THRESHOLD] = RESPONSE_EXPECTED_TRUE
|
93
|
+
@response_expected[FUNCTION_GET_POSITION_CALLBACK_THRESHOLD] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
94
|
+
@response_expected[FUNCTION_SET_ANALOG_VALUE_CALLBACK_THRESHOLD] = RESPONSE_EXPECTED_TRUE
|
95
|
+
@response_expected[FUNCTION_GET_ANALOG_VALUE_CALLBACK_THRESHOLD] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
96
|
+
@response_expected[FUNCTION_SET_DEBOUNCE_PERIOD] = RESPONSE_EXPECTED_TRUE
|
97
|
+
@response_expected[FUNCTION_GET_DEBOUNCE_PERIOD] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
98
|
+
@response_expected[CALLBACK_POSITION] = RESPONSE_EXPECTED_ALWAYS_FALSE
|
99
|
+
@response_expected[CALLBACK_ANALOG_VALUE] = RESPONSE_EXPECTED_ALWAYS_FALSE
|
100
|
+
@response_expected[CALLBACK_POSITION_REACHED] = RESPONSE_EXPECTED_ALWAYS_FALSE
|
101
|
+
@response_expected[CALLBACK_ANALOG_VALUE_REACHED] = RESPONSE_EXPECTED_ALWAYS_FALSE
|
102
|
+
@response_expected[CALLBACK_PRESSED] = RESPONSE_EXPECTED_ALWAYS_FALSE
|
103
|
+
@response_expected[CALLBACK_RELEASED] = RESPONSE_EXPECTED_ALWAYS_FALSE
|
104
|
+
@response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
105
|
+
|
106
|
+
@callback_formats[CALLBACK_POSITION] = 's s'
|
107
|
+
@callback_formats[CALLBACK_ANALOG_VALUE] = 'S S'
|
108
|
+
@callback_formats[CALLBACK_POSITION_REACHED] = 's s'
|
109
|
+
@callback_formats[CALLBACK_ANALOG_VALUE_REACHED] = 'S S'
|
110
|
+
@callback_formats[CALLBACK_PRESSED] = ''
|
111
|
+
@callback_formats[CALLBACK_RELEASED] = ''
|
112
|
+
end
|
113
|
+
|
114
|
+
# Returns the position of the Joystick. The value ranges between -100 and
|
115
|
+
# 100 for both axis. The middle position of the joystick is x=0, y=0. The
|
116
|
+
# returned values are averaged and calibrated (see BrickletJoystick#calibrate).
|
117
|
+
#
|
118
|
+
# If you want to get the position periodically, it is recommended to use the
|
119
|
+
# callback CALLBACK_POSITION and set the period with
|
120
|
+
# BrickletJoystick#set_position_callback_period.
|
121
|
+
def get_position
|
122
|
+
send_request(FUNCTION_GET_POSITION, [], '', 4, 's s')
|
123
|
+
end
|
124
|
+
|
125
|
+
# Returns *true* if the button is pressed and *false* otherwise.
|
126
|
+
#
|
127
|
+
# It is recommended to use the CALLBACK_PRESSED and CALLBACK_RELEASED callbacks
|
128
|
+
# to handle the button.
|
129
|
+
def is_pressed
|
130
|
+
send_request(FUNCTION_IS_PRESSED, [], '', 1, '?')
|
131
|
+
end
|
132
|
+
|
133
|
+
# Returns the values as read by a 12-bit analog-to-digital converter.
|
134
|
+
# The values are between 0 and 4095 for both axis.
|
135
|
+
#
|
136
|
+
# .. note::
|
137
|
+
# The values returned by BrickletJoystick#get_position are averaged over several samples
|
138
|
+
# to yield less noise, while BrickletJoystick#get_analog_value gives back raw
|
139
|
+
# unfiltered analog values. The only reason to use BrickletJoystick#get_analog_value is,
|
140
|
+
# if you need the full resolution of the analog-to-digital converter.
|
141
|
+
#
|
142
|
+
# If you want the analog values periodically, it is recommended to use the
|
143
|
+
# callback CALLBACK_ANALOG_VALUE and set the period with
|
144
|
+
# BrickletJoystick#set_analog_value_callback_period.
|
145
|
+
def get_analog_value
|
146
|
+
send_request(FUNCTION_GET_ANALOG_VALUE, [], '', 4, 'S S')
|
147
|
+
end
|
148
|
+
|
149
|
+
# Calibrates the middle position of the Joystick. If your Joystick Bricklet
|
150
|
+
# does not return x=0 and y=0 in the middle position, call this function
|
151
|
+
# while the Joystick is standing still in the middle position.
|
152
|
+
#
|
153
|
+
# The resulting calibration will be saved on the EEPROM of the Joystick
|
154
|
+
# Bricklet, thus you only have to calibrate it once.
|
155
|
+
def calibrate
|
156
|
+
send_request(FUNCTION_CALIBRATE, [], '', 0, '')
|
157
|
+
end
|
158
|
+
|
159
|
+
# Sets the period in ms with which the CALLBACK_POSITION callback is triggered
|
160
|
+
# periodically. A value of 0 turns the callback off.
|
161
|
+
#
|
162
|
+
# CALLBACK_POSITION is only triggered if the position has changed since the
|
163
|
+
# last triggering.
|
164
|
+
#
|
165
|
+
# The default value is 0.
|
166
|
+
def set_position_callback_period(period)
|
167
|
+
send_request(FUNCTION_SET_POSITION_CALLBACK_PERIOD, [period], 'L', 0, '')
|
168
|
+
end
|
169
|
+
|
170
|
+
# Returns the period as set by BrickletJoystick#set_position_callback_period.
|
171
|
+
def get_position_callback_period
|
172
|
+
send_request(FUNCTION_GET_POSITION_CALLBACK_PERIOD, [], '', 4, 'L')
|
173
|
+
end
|
174
|
+
|
175
|
+
# Sets the period in ms with which the CALLBACK_ANALOG_VALUE callback is triggered
|
176
|
+
# periodically. A value of 0 turns the callback off.
|
177
|
+
#
|
178
|
+
# CALLBACK_ANALOG_VALUE is only triggered if the analog values have changed since the
|
179
|
+
# last triggering.
|
180
|
+
#
|
181
|
+
# The default value is 0.
|
182
|
+
def set_analog_value_callback_period(period)
|
183
|
+
send_request(FUNCTION_SET_ANALOG_VALUE_CALLBACK_PERIOD, [period], 'L', 0, '')
|
184
|
+
end
|
185
|
+
|
186
|
+
# Returns the period as set by BrickletJoystick#set_analog_value_callback_period.
|
187
|
+
def get_analog_value_callback_period
|
188
|
+
send_request(FUNCTION_GET_ANALOG_VALUE_CALLBACK_PERIOD, [], '', 4, 'L')
|
189
|
+
end
|
190
|
+
|
191
|
+
# Sets the thresholds for the CALLBACK_POSITION_REACHED callback.
|
192
|
+
#
|
193
|
+
# The following options are possible:
|
194
|
+
#
|
195
|
+
# "Option", "Description"
|
196
|
+
#
|
197
|
+
# "'x'", "Callback is turned off"
|
198
|
+
# "'o'", "Callback is triggered when the position is *outside* the min and max values"
|
199
|
+
# "'i'", "Callback is triggered when the position is *inside* the min and max values"
|
200
|
+
# "'<'", "Callback is triggered when the position is smaller than the min values (max is ignored)"
|
201
|
+
# "'>'", "Callback is triggered when the position is greater than the min values (max is ignored)"
|
202
|
+
#
|
203
|
+
# The default value is ('x', 0, 0, 0, 0).
|
204
|
+
def set_position_callback_threshold(option, min_x, max_x, min_y, max_y)
|
205
|
+
send_request(FUNCTION_SET_POSITION_CALLBACK_THRESHOLD, [option, min_x, max_x, min_y, max_y], 'k s s s s', 0, '')
|
206
|
+
end
|
207
|
+
|
208
|
+
# Returns the threshold as set by BrickletJoystick#set_position_callback_threshold.
|
209
|
+
def get_position_callback_threshold
|
210
|
+
send_request(FUNCTION_GET_POSITION_CALLBACK_THRESHOLD, [], '', 9, 'k s s s s')
|
211
|
+
end
|
212
|
+
|
213
|
+
# Sets the thresholds for the CALLBACK_ANALOG_VALUE_REACHED callback.
|
214
|
+
#
|
215
|
+
# The following options are possible:
|
216
|
+
#
|
217
|
+
# "Option", "Description"
|
218
|
+
#
|
219
|
+
# "'x'", "Callback is turned off"
|
220
|
+
# "'o'", "Callback is triggered when the analog values are *outside* the min and max values"
|
221
|
+
# "'i'", "Callback is triggered when the analog values are *inside* the min and max values"
|
222
|
+
# "'<'", "Callback is triggered when the analog values are smaller than the min values (max is ignored)"
|
223
|
+
# "'>'", "Callback is triggered when the analog values are greater than the min values (max is ignored)"
|
224
|
+
#
|
225
|
+
# The default value is ('x', 0, 0, 0, 0).
|
226
|
+
def set_analog_value_callback_threshold(option, min_x, max_x, min_y, max_y)
|
227
|
+
send_request(FUNCTION_SET_ANALOG_VALUE_CALLBACK_THRESHOLD, [option, min_x, max_x, min_y, max_y], 'k S S S S', 0, '')
|
228
|
+
end
|
229
|
+
|
230
|
+
# Returns the threshold as set by BrickletJoystick#set_analog_value_callback_threshold.
|
231
|
+
def get_analog_value_callback_threshold
|
232
|
+
send_request(FUNCTION_GET_ANALOG_VALUE_CALLBACK_THRESHOLD, [], '', 9, 'k S S S S')
|
233
|
+
end
|
234
|
+
|
235
|
+
# Sets the period in ms with which the threshold callbacks
|
236
|
+
#
|
237
|
+
# CALLBACK_POSITION_REACHED, CALLBACK_ANALOG_VALUE_REACHED
|
238
|
+
#
|
239
|
+
# are triggered, if the thresholds
|
240
|
+
#
|
241
|
+
# BrickletJoystick#set_position_callback_threshold, BrickletJoystick#set_analog_value_callback_threshold
|
242
|
+
#
|
243
|
+
# keep being reached.
|
244
|
+
#
|
245
|
+
# The default value is 100.
|
246
|
+
def set_debounce_period(debounce)
|
247
|
+
send_request(FUNCTION_SET_DEBOUNCE_PERIOD, [debounce], 'L', 0, '')
|
248
|
+
end
|
249
|
+
|
250
|
+
# Returns the debounce period as set by BrickletJoystick#set_debounce_period.
|
251
|
+
def get_debounce_period
|
252
|
+
send_request(FUNCTION_GET_DEBOUNCE_PERIOD, [], '', 4, 'L')
|
253
|
+
end
|
254
|
+
|
255
|
+
# Returns the UID, the UID where the Bricklet is connected to,
|
256
|
+
# the position, the hardware and firmware version as well as the
|
257
|
+
# device identifier.
|
258
|
+
#
|
259
|
+
# The position can be 'a', 'b', 'c' or 'd'.
|
260
|
+
#
|
261
|
+
# The device identifiers can be found :ref:`here <device_identifier>`.
|
262
|
+
#
|
263
|
+
# .. versionadded:: 2.0.0~(Plugin)
|
264
|
+
def get_identity
|
265
|
+
send_request(FUNCTION_GET_IDENTITY, [], '', 25, 'Z8 Z8 k C3 C3 S')
|
266
|
+
end
|
267
|
+
|
268
|
+
# Registers a callback with ID <tt>id</tt> to the block <tt>block</tt>.
|
269
|
+
def register_callback(id, &block)
|
270
|
+
callback = block
|
271
|
+
@registered_callbacks[id] = callback
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|
@@ -0,0 +1,175 @@
|
|
1
|
+
# -*- ruby encoding: utf-8 -*-
|
2
|
+
#############################################################
|
3
|
+
# This file was automatically generated on 2013-05-16. #
|
4
|
+
# #
|
5
|
+
# Bindings Version 2.0.7 #
|
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 generator git on tinkerforge.com #
|
10
|
+
#############################################################
|
11
|
+
|
12
|
+
module Tinkerforge
|
13
|
+
# Device for controlling a LCD with 2 lines a 16 characters
|
14
|
+
class BrickletLCD16x2 < Device
|
15
|
+
DEVICE_IDENTIFIER = 211 # :nodoc:
|
16
|
+
|
17
|
+
# This callback is triggered when a button is pressed. The parameter is
|
18
|
+
# the number of the button (0 to 2).
|
19
|
+
CALLBACK_BUTTON_PRESSED = 9
|
20
|
+
|
21
|
+
# This callback is triggered when a button is released. The parameter is
|
22
|
+
# the number of the button (0 to 2).
|
23
|
+
CALLBACK_BUTTON_RELEASED = 10
|
24
|
+
|
25
|
+
FUNCTION_WRITE_LINE = 1 # :nodoc:
|
26
|
+
FUNCTION_CLEAR_DISPLAY = 2 # :nodoc:
|
27
|
+
FUNCTION_BACKLIGHT_ON = 3 # :nodoc:
|
28
|
+
FUNCTION_BACKLIGHT_OFF = 4 # :nodoc:
|
29
|
+
FUNCTION_IS_BACKLIGHT_ON = 5 # :nodoc:
|
30
|
+
FUNCTION_SET_CONFIG = 6 # :nodoc:
|
31
|
+
FUNCTION_GET_CONFIG = 7 # :nodoc:
|
32
|
+
FUNCTION_IS_BUTTON_PRESSED = 8 # :nodoc:
|
33
|
+
FUNCTION_SET_CUSTOM_CHARACTER = 11 # :nodoc:
|
34
|
+
FUNCTION_GET_CUSTOM_CHARACTER = 12 # :nodoc:
|
35
|
+
FUNCTION_GET_IDENTITY = 255 # :nodoc:
|
36
|
+
|
37
|
+
|
38
|
+
# Creates an object with the unique device ID <tt>uid</tt> and adds it to
|
39
|
+
# the IP Connection <tt>ipcon</tt>.
|
40
|
+
def initialize(uid, ipcon)
|
41
|
+
super uid, ipcon
|
42
|
+
|
43
|
+
@api_version = [2, 0, 0]
|
44
|
+
|
45
|
+
@response_expected[FUNCTION_WRITE_LINE] = RESPONSE_EXPECTED_FALSE
|
46
|
+
@response_expected[FUNCTION_CLEAR_DISPLAY] = RESPONSE_EXPECTED_FALSE
|
47
|
+
@response_expected[FUNCTION_BACKLIGHT_ON] = RESPONSE_EXPECTED_FALSE
|
48
|
+
@response_expected[FUNCTION_BACKLIGHT_OFF] = RESPONSE_EXPECTED_FALSE
|
49
|
+
@response_expected[FUNCTION_IS_BACKLIGHT_ON] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
50
|
+
@response_expected[FUNCTION_SET_CONFIG] = RESPONSE_EXPECTED_FALSE
|
51
|
+
@response_expected[FUNCTION_GET_CONFIG] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
52
|
+
@response_expected[FUNCTION_IS_BUTTON_PRESSED] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
53
|
+
@response_expected[CALLBACK_BUTTON_PRESSED] = RESPONSE_EXPECTED_ALWAYS_FALSE
|
54
|
+
@response_expected[CALLBACK_BUTTON_RELEASED] = RESPONSE_EXPECTED_ALWAYS_FALSE
|
55
|
+
@response_expected[FUNCTION_SET_CUSTOM_CHARACTER] = RESPONSE_EXPECTED_FALSE
|
56
|
+
@response_expected[FUNCTION_GET_CUSTOM_CHARACTER] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
57
|
+
@response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
58
|
+
|
59
|
+
@callback_formats[CALLBACK_BUTTON_PRESSED] = 'C'
|
60
|
+
@callback_formats[CALLBACK_BUTTON_RELEASED] = 'C'
|
61
|
+
end
|
62
|
+
|
63
|
+
# Writes text to a specific line (0 to 1) with a specific position
|
64
|
+
# (0 to 15). The text can have a maximum of 16 characters.
|
65
|
+
#
|
66
|
+
# For example: (0, 5, "Hello") will write *Hello* in the middle of the
|
67
|
+
# first line of the display.
|
68
|
+
#
|
69
|
+
# The display uses a special charset that includes all ASCII characters except
|
70
|
+
# backslash and tilde. The LCD charset also includes several other non-ASCII characters, see
|
71
|
+
# the `charset specification <https://github.com/Tinkerforge/lcd-16x2-bricklet/raw/master/datasheets/standard_charset.pdf>`__
|
72
|
+
# for details. The Unicode example above shows how to specify non-ASCII characters
|
73
|
+
# and how to translate from Unicode to the LCD charset.
|
74
|
+
def write_line(line, position, text)
|
75
|
+
send_request(FUNCTION_WRITE_LINE, [line, position, text], 'C C Z16', 0, '')
|
76
|
+
end
|
77
|
+
|
78
|
+
# Deletes all characters from the display.
|
79
|
+
def clear_display
|
80
|
+
send_request(FUNCTION_CLEAR_DISPLAY, [], '', 0, '')
|
81
|
+
end
|
82
|
+
|
83
|
+
# Turns the backlight on.
|
84
|
+
def backlight_on
|
85
|
+
send_request(FUNCTION_BACKLIGHT_ON, [], '', 0, '')
|
86
|
+
end
|
87
|
+
|
88
|
+
# Turns the backlight off.
|
89
|
+
def backlight_off
|
90
|
+
send_request(FUNCTION_BACKLIGHT_OFF, [], '', 0, '')
|
91
|
+
end
|
92
|
+
|
93
|
+
# Returns *true* if the backlight is on and *false* otherwise.
|
94
|
+
def is_backlight_on
|
95
|
+
send_request(FUNCTION_IS_BACKLIGHT_ON, [], '', 1, '?')
|
96
|
+
end
|
97
|
+
|
98
|
+
# Configures if the cursor (shown as "_") should be visible and if it
|
99
|
+
# should be blinking (shown as a blinking block). The cursor position
|
100
|
+
# is one character behind the the last text written with
|
101
|
+
# BrickletLCD16x2#write_line.
|
102
|
+
#
|
103
|
+
# The default is (false, false).
|
104
|
+
def set_config(cursor, blinking)
|
105
|
+
send_request(FUNCTION_SET_CONFIG, [cursor, blinking], '? ?', 0, '')
|
106
|
+
end
|
107
|
+
|
108
|
+
# Returns the configuration as set by BrickletLCD16x2#set_config.
|
109
|
+
def get_config
|
110
|
+
send_request(FUNCTION_GET_CONFIG, [], '', 2, '? ?')
|
111
|
+
end
|
112
|
+
|
113
|
+
# Returns *true* if the button (0 to 2) is pressed. If you want to react
|
114
|
+
# on button presses and releases it is recommended to use the
|
115
|
+
# CALLBACK_BUTTON_PRESSED and CALLBACK_BUTTON_RELEASED callbacks.
|
116
|
+
def is_button_pressed(button)
|
117
|
+
send_request(FUNCTION_IS_BUTTON_PRESSED, [button], 'C', 1, '?')
|
118
|
+
end
|
119
|
+
|
120
|
+
# The LCD 16x2 Bricklet can store up to 8 custom characters. The characters
|
121
|
+
# consist of 5x8 pixels and can be addressed with the index 0-7. To describe
|
122
|
+
# the pixels, the first 5 bits of 8 bytes are used. For example, to make
|
123
|
+
# a custom character "H", you should transfer the following:
|
124
|
+
#
|
125
|
+
# * character[0] = 0b00010001 (decimal value 17)
|
126
|
+
# * character[1] = 0b00010001 (decimal value 17)
|
127
|
+
# * character[2] = 0b00010001 (decimal value 17)
|
128
|
+
# * character[3] = 0b00011111 (decimal value 31)
|
129
|
+
# * character[4] = 0b00010001 (decimal value 17)
|
130
|
+
# * character[5] = 0b00010001 (decimal value 17)
|
131
|
+
# * character[6] = 0b00010001 (decimal value 17)
|
132
|
+
# * character[7] = 0b00000000 (decimal value 0)
|
133
|
+
#
|
134
|
+
# The characters can later be written with BrickletLCD16x2#write_line by using the
|
135
|
+
# characters with the byte representation 8 to 15.
|
136
|
+
#
|
137
|
+
# You can play around with the custom characters in Brick Viewer version
|
138
|
+
# >= 2.0.1.
|
139
|
+
#
|
140
|
+
# Custom characters are stored by the LCD in RAM, so they have to be set
|
141
|
+
# after each startup.
|
142
|
+
#
|
143
|
+
# .. versionadded:: 2.0.1~(Plugin)
|
144
|
+
def set_custom_character(index, character)
|
145
|
+
send_request(FUNCTION_SET_CUSTOM_CHARACTER, [index, character], 'C C8', 0, '')
|
146
|
+
end
|
147
|
+
|
148
|
+
# Returns the custom character for a given index, as set with
|
149
|
+
# BrickletLCD16x2#set_custom_character.
|
150
|
+
#
|
151
|
+
# .. versionadded:: 2.0.1~(Plugin)
|
152
|
+
def get_custom_character(index)
|
153
|
+
send_request(FUNCTION_GET_CUSTOM_CHARACTER, [index], 'C', 8, 'C8')
|
154
|
+
end
|
155
|
+
|
156
|
+
# Returns the UID, the UID where the Bricklet is connected to,
|
157
|
+
# the position, the hardware and firmware version as well as the
|
158
|
+
# device identifier.
|
159
|
+
#
|
160
|
+
# The position can be 'a', 'b', 'c' or 'd'.
|
161
|
+
#
|
162
|
+
# The device identifiers can be found :ref:`here <device_identifier>`.
|
163
|
+
#
|
164
|
+
# .. versionadded:: 2.0.0~(Plugin)
|
165
|
+
def get_identity
|
166
|
+
send_request(FUNCTION_GET_IDENTITY, [], '', 25, 'Z8 Z8 k C3 C3 S')
|
167
|
+
end
|
168
|
+
|
169
|
+
# Registers a callback with ID <tt>id</tt> to the block <tt>block</tt>.
|
170
|
+
def register_callback(id, &block)
|
171
|
+
callback = block
|
172
|
+
@registered_callbacks[id] = callback
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
@@ -0,0 +1,231 @@
|
|
1
|
+
# -*- ruby encoding: utf-8 -*-
|
2
|
+
#############################################################
|
3
|
+
# This file was automatically generated on 2013-05-16. #
|
4
|
+
# #
|
5
|
+
# Bindings Version 2.0.7 #
|
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 generator git on tinkerforge.com #
|
10
|
+
#############################################################
|
11
|
+
|
12
|
+
module Tinkerforge
|
13
|
+
# Device for controlling a LCD with 4 lines a 20 characters
|
14
|
+
class BrickletLCD20x4 < Device
|
15
|
+
DEVICE_IDENTIFIER = 212 # :nodoc:
|
16
|
+
|
17
|
+
# This callback is triggered when a button is pressed. The parameter is
|
18
|
+
# the number of the button (0 to 2 or 0 to 3 with hardware version >= 1.2).
|
19
|
+
CALLBACK_BUTTON_PRESSED = 9
|
20
|
+
|
21
|
+
# This callback is triggered when a button is released. The parameter is
|
22
|
+
# the number of the button (0 to 2 or 0 to 3 with hardware version >= 1.2).
|
23
|
+
CALLBACK_BUTTON_RELEASED = 10
|
24
|
+
|
25
|
+
FUNCTION_WRITE_LINE = 1 # :nodoc:
|
26
|
+
FUNCTION_CLEAR_DISPLAY = 2 # :nodoc:
|
27
|
+
FUNCTION_BACKLIGHT_ON = 3 # :nodoc:
|
28
|
+
FUNCTION_BACKLIGHT_OFF = 4 # :nodoc:
|
29
|
+
FUNCTION_IS_BACKLIGHT_ON = 5 # :nodoc:
|
30
|
+
FUNCTION_SET_CONFIG = 6 # :nodoc:
|
31
|
+
FUNCTION_GET_CONFIG = 7 # :nodoc:
|
32
|
+
FUNCTION_IS_BUTTON_PRESSED = 8 # :nodoc:
|
33
|
+
FUNCTION_SET_CUSTOM_CHARACTER = 11 # :nodoc:
|
34
|
+
FUNCTION_GET_CUSTOM_CHARACTER = 12 # :nodoc:
|
35
|
+
FUNCTION_SET_DEFAULT_TEXT = 13 # :nodoc:
|
36
|
+
FUNCTION_GET_DEFAULT_TEXT = 14 # :nodoc:
|
37
|
+
FUNCTION_SET_DEFAULT_TEXT_COUNTER = 15 # :nodoc:
|
38
|
+
FUNCTION_GET_DEFAULT_TEXT_COUNTER = 16 # :nodoc:
|
39
|
+
FUNCTION_GET_IDENTITY = 255 # :nodoc:
|
40
|
+
|
41
|
+
|
42
|
+
# Creates an object with the unique device ID <tt>uid</tt> and adds it to
|
43
|
+
# the IP Connection <tt>ipcon</tt>.
|
44
|
+
def initialize(uid, ipcon)
|
45
|
+
super uid, ipcon
|
46
|
+
|
47
|
+
@api_version = [2, 0, 0]
|
48
|
+
|
49
|
+
@response_expected[FUNCTION_WRITE_LINE] = RESPONSE_EXPECTED_FALSE
|
50
|
+
@response_expected[FUNCTION_CLEAR_DISPLAY] = RESPONSE_EXPECTED_FALSE
|
51
|
+
@response_expected[FUNCTION_BACKLIGHT_ON] = RESPONSE_EXPECTED_FALSE
|
52
|
+
@response_expected[FUNCTION_BACKLIGHT_OFF] = RESPONSE_EXPECTED_FALSE
|
53
|
+
@response_expected[FUNCTION_IS_BACKLIGHT_ON] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
54
|
+
@response_expected[FUNCTION_SET_CONFIG] = RESPONSE_EXPECTED_FALSE
|
55
|
+
@response_expected[FUNCTION_GET_CONFIG] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
56
|
+
@response_expected[FUNCTION_IS_BUTTON_PRESSED] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
57
|
+
@response_expected[CALLBACK_BUTTON_PRESSED] = RESPONSE_EXPECTED_ALWAYS_FALSE
|
58
|
+
@response_expected[CALLBACK_BUTTON_RELEASED] = RESPONSE_EXPECTED_ALWAYS_FALSE
|
59
|
+
@response_expected[FUNCTION_SET_CUSTOM_CHARACTER] = RESPONSE_EXPECTED_FALSE
|
60
|
+
@response_expected[FUNCTION_GET_CUSTOM_CHARACTER] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
61
|
+
@response_expected[FUNCTION_SET_DEFAULT_TEXT] = RESPONSE_EXPECTED_FALSE
|
62
|
+
@response_expected[FUNCTION_GET_DEFAULT_TEXT] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
63
|
+
@response_expected[FUNCTION_SET_DEFAULT_TEXT_COUNTER] = RESPONSE_EXPECTED_FALSE
|
64
|
+
@response_expected[FUNCTION_GET_DEFAULT_TEXT_COUNTER] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
65
|
+
@response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
|
66
|
+
|
67
|
+
@callback_formats[CALLBACK_BUTTON_PRESSED] = 'C'
|
68
|
+
@callback_formats[CALLBACK_BUTTON_RELEASED] = 'C'
|
69
|
+
end
|
70
|
+
|
71
|
+
# Writes text to a specific line (0 to 3) with a specific position
|
72
|
+
# (0 to 19). The text can have a maximum of 20 characters.
|
73
|
+
#
|
74
|
+
# For example: (0, 7, "Hello") will write *Hello* in the middle of the
|
75
|
+
# first line of the display.
|
76
|
+
#
|
77
|
+
# The display uses a special charset that includes all ASCII characters except
|
78
|
+
# backslash and tilde. The LCD charset also includes several other non-ASCII characters, see
|
79
|
+
# the `charset specification <https://github.com/Tinkerforge/lcd-20x4-bricklet/raw/master/datasheets/standard_charset.pdf>`__
|
80
|
+
# for details. The Unicode example above shows how to specify non-ASCII characters
|
81
|
+
# and how to translate from Unicode to the LCD charset.
|
82
|
+
def write_line(line, position, text)
|
83
|
+
send_request(FUNCTION_WRITE_LINE, [line, position, text], 'C C Z20', 0, '')
|
84
|
+
end
|
85
|
+
|
86
|
+
# Deletes all characters from the display.
|
87
|
+
def clear_display
|
88
|
+
send_request(FUNCTION_CLEAR_DISPLAY, [], '', 0, '')
|
89
|
+
end
|
90
|
+
|
91
|
+
# Turns the backlight on.
|
92
|
+
def backlight_on
|
93
|
+
send_request(FUNCTION_BACKLIGHT_ON, [], '', 0, '')
|
94
|
+
end
|
95
|
+
|
96
|
+
# Turns the backlight off.
|
97
|
+
def backlight_off
|
98
|
+
send_request(FUNCTION_BACKLIGHT_OFF, [], '', 0, '')
|
99
|
+
end
|
100
|
+
|
101
|
+
# Returns *true* if the backlight is on and *false* otherwise.
|
102
|
+
def is_backlight_on
|
103
|
+
send_request(FUNCTION_IS_BACKLIGHT_ON, [], '', 1, '?')
|
104
|
+
end
|
105
|
+
|
106
|
+
# Configures if the cursor (shown as "_") should be visible and if it
|
107
|
+
# should be blinking (shown as a blinking block). The cursor position
|
108
|
+
# is one character behind the the last text written with
|
109
|
+
# BrickletLCD20x4#write_line.
|
110
|
+
#
|
111
|
+
# The default is (false, false).
|
112
|
+
def set_config(cursor, blinking)
|
113
|
+
send_request(FUNCTION_SET_CONFIG, [cursor, blinking], '? ?', 0, '')
|
114
|
+
end
|
115
|
+
|
116
|
+
# Returns the configuration as set by BrickletLCD20x4#set_config.
|
117
|
+
def get_config
|
118
|
+
send_request(FUNCTION_GET_CONFIG, [], '', 2, '? ?')
|
119
|
+
end
|
120
|
+
|
121
|
+
# Returns *true* if the button (0 to 2 or 0 to 3 with hardware version >= 1.2)
|
122
|
+
# is pressed. If you want to react
|
123
|
+
# on button presses and releases it is recommended to use the
|
124
|
+
# CALLBACK_BUTTON_PRESSED and CALLBACK_BUTTON_RELEASED callbacks.
|
125
|
+
def is_button_pressed(button)
|
126
|
+
send_request(FUNCTION_IS_BUTTON_PRESSED, [button], 'C', 1, '?')
|
127
|
+
end
|
128
|
+
|
129
|
+
# The LCD 20x4 Bricklet can store up to 8 custom characters. The characters
|
130
|
+
# consist of 5x8 pixels and can be addressed with the index 0-7. To describe
|
131
|
+
# the pixels, the first 5 bits of 8 bytes are used. For example, to make
|
132
|
+
# a custom character "H", you should transfer the following:
|
133
|
+
#
|
134
|
+
# * character[0] = 0b00010001 (decimal value 17)
|
135
|
+
# * character[1] = 0b00010001 (decimal value 17)
|
136
|
+
# * character[2] = 0b00010001 (decimal value 17)
|
137
|
+
# * character[3] = 0b00011111 (decimal value 31)
|
138
|
+
# * character[4] = 0b00010001 (decimal value 17)
|
139
|
+
# * character[5] = 0b00010001 (decimal value 17)
|
140
|
+
# * character[6] = 0b00010001 (decimal value 17)
|
141
|
+
# * character[7] = 0b00000000 (decimal value 0)
|
142
|
+
#
|
143
|
+
# The characters can later be written with BrickletLCD20x4#write_line by using the
|
144
|
+
# characters with the byte representation 8 to 15.
|
145
|
+
#
|
146
|
+
# You can play around with the custom characters in Brick Viewer version
|
147
|
+
# >= 2.0.1.
|
148
|
+
#
|
149
|
+
# Custom characters are stored by the LCD in RAM, so they have to be set
|
150
|
+
# after each startup.
|
151
|
+
#
|
152
|
+
# .. versionadded:: 2.0.1~(Plugin)
|
153
|
+
def set_custom_character(index, character)
|
154
|
+
send_request(FUNCTION_SET_CUSTOM_CHARACTER, [index, character], 'C C8', 0, '')
|
155
|
+
end
|
156
|
+
|
157
|
+
# Returns the custom character for a given index, as set with
|
158
|
+
# BrickletLCD20x4#set_custom_character.
|
159
|
+
#
|
160
|
+
# .. versionadded:: 2.0.1~(Plugin)
|
161
|
+
def get_custom_character(index)
|
162
|
+
send_request(FUNCTION_GET_CUSTOM_CHARACTER, [index], 'C', 8, 'C8')
|
163
|
+
end
|
164
|
+
|
165
|
+
# Sets the default text for lines 0-3. The max number of characters
|
166
|
+
# per line is 20.
|
167
|
+
#
|
168
|
+
# The default text is shown on the LCD, if the default text counter
|
169
|
+
# expires, see BrickletLCD20x4#set_default_text_counter.
|
170
|
+
#
|
171
|
+
# .. versionadded:: 2.0.2~(Plugin)
|
172
|
+
def set_default_text(line, text)
|
173
|
+
send_request(FUNCTION_SET_DEFAULT_TEXT, [line, text], 'C Z20', 0, '')
|
174
|
+
end
|
175
|
+
|
176
|
+
# Returns the default text for a given line (0-3) as set by
|
177
|
+
# BrickletLCD20x4#set_default_text.
|
178
|
+
#
|
179
|
+
# .. versionadded:: 2.0.2~(Plugin)
|
180
|
+
def get_default_text(line)
|
181
|
+
send_request(FUNCTION_GET_DEFAULT_TEXT, [line], 'C', 20, 'Z20')
|
182
|
+
end
|
183
|
+
|
184
|
+
# Sets the default text counter in ms. This counter is decremented each
|
185
|
+
# ms by the LCD firmware. If the counter reaches 0, the default text
|
186
|
+
# (see BrickletLCD20x4#set_default_text) is shown on the LCD.
|
187
|
+
#
|
188
|
+
# This functionality can be used to show a default text if the controlling
|
189
|
+
# program crashes or the connection is interrupted.
|
190
|
+
#
|
191
|
+
# A possible approach is to call BrickletLCD20x4#set_default_text_counter every
|
192
|
+
# minute with the parameter 1000*60*2 (2 minutes). In this case the
|
193
|
+
# default text will be shown no later than 2 minutes after the
|
194
|
+
# controlling program crashes.
|
195
|
+
#
|
196
|
+
# A negative counter turns the default text functionality off.
|
197
|
+
#
|
198
|
+
# The default is -1.
|
199
|
+
#
|
200
|
+
# .. versionadded:: 2.0.2~(Plugin)
|
201
|
+
def set_default_text_counter(counter)
|
202
|
+
send_request(FUNCTION_SET_DEFAULT_TEXT_COUNTER, [counter], 'l', 0, '')
|
203
|
+
end
|
204
|
+
|
205
|
+
# Returns the current value of the default text counter.
|
206
|
+
#
|
207
|
+
# .. versionadded:: 2.0.2~(Plugin)
|
208
|
+
def get_default_text_counter
|
209
|
+
send_request(FUNCTION_GET_DEFAULT_TEXT_COUNTER, [], '', 4, 'l')
|
210
|
+
end
|
211
|
+
|
212
|
+
# Returns the UID, the UID where the Bricklet is connected to,
|
213
|
+
# the position, the hardware and firmware version as well as the
|
214
|
+
# device identifier.
|
215
|
+
#
|
216
|
+
# The position can be 'a', 'b', 'c' or 'd'.
|
217
|
+
#
|
218
|
+
# The device identifiers can be found :ref:`here <device_identifier>`.
|
219
|
+
#
|
220
|
+
# .. versionadded:: 2.0.0~(Plugin)
|
221
|
+
def get_identity
|
222
|
+
send_request(FUNCTION_GET_IDENTITY, [], '', 25, 'Z8 Z8 k C3 C3 S')
|
223
|
+
end
|
224
|
+
|
225
|
+
# Registers a callback with ID <tt>id</tt> to the block <tt>block</tt>.
|
226
|
+
def register_callback(id, &block)
|
227
|
+
callback = block
|
228
|
+
@registered_callbacks[id] = callback
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|