gcode_button: Add support for analog buttons
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
13ee6032ae
commit
fc85675145
|
@ -1330,6 +1330,14 @@
|
||||||
#pin:
|
#pin:
|
||||||
# The pin on which the button is connected. This parameter must be
|
# The pin on which the button is connected. This parameter must be
|
||||||
# provided.
|
# provided.
|
||||||
|
#analog_range:
|
||||||
|
# Two comma separated resistances (in Ohms) specifying the minimum
|
||||||
|
# and maximum resistance range for the button. If analog_range is
|
||||||
|
# provided then the pin must be an analog capable pin. The default
|
||||||
|
# is to use digital gpio for the button.
|
||||||
|
#analog_pullup_resistor:
|
||||||
|
# The pullup resistance (in Ohms) when analog_range is specified.
|
||||||
|
# The default is 4700 ohms.
|
||||||
#press_gcode:
|
#press_gcode:
|
||||||
# A list of G-Code commands to execute when the button is pressed.
|
# A list of G-Code commands to execute when the button is pressed.
|
||||||
# G-Code templates are supported. This parameter must be provided.
|
# G-Code templates are supported. This parameter must be provided.
|
||||||
|
|
|
@ -12,7 +12,17 @@ class GCodeButton:
|
||||||
self.pin = config.get('pin')
|
self.pin = config.get('pin')
|
||||||
self.last_state = 0
|
self.last_state = 0
|
||||||
buttons = self.printer.load_object(config, "buttons")
|
buttons = self.printer.load_object(config, "buttons")
|
||||||
|
analog_range = config.get('analog_range', None)
|
||||||
|
if analog_range is None:
|
||||||
buttons.register_buttons([self.pin], self.button_callback)
|
buttons.register_buttons([self.pin], self.button_callback)
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
amin, amax = map(float, analog_range.split(','))
|
||||||
|
except:
|
||||||
|
raise config.error("Unable to parse analog_range")
|
||||||
|
pullup = config.getfloat('analog_pullup_resistor', 4700., above=0.)
|
||||||
|
buttons.register_adc_button(self.pin, amin, amax, pullup,
|
||||||
|
self.button_callback)
|
||||||
gcode_macro = self.printer.load_object(config, 'gcode_macro')
|
gcode_macro = self.printer.load_object(config, 'gcode_macro')
|
||||||
self.press_template = gcode_macro.load_template(config, 'press_gcode')
|
self.press_template = gcode_macro.load_template(config, 'press_gcode')
|
||||||
self.release_template = gcode_macro.load_template(config,
|
self.release_template = gcode_macro.load_template(config,
|
||||||
|
|
Loading…
Reference in New Issue