mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-07-13 09:48:00 -06:00
query_adc: Add a new module to help query and debug analog pins
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
124ba12485
commit
0bfb655f66
5 changed files with 50 additions and 0 deletions
36
klippy/extras/query_adc.py
Normal file
36
klippy/extras/query_adc.py
Normal file
|
@ -0,0 +1,36 @@
|
|||
# Utility for querying the current state of adc pins
|
||||
#
|
||||
# Copyright (C) 2019 Kevin O'Connor <kevin@koconnor.net>
|
||||
#
|
||||
# This file may be distributed under the terms of the GNU GPLv3 license.
|
||||
|
||||
class QueryADC:
|
||||
def __init__(self, config):
|
||||
self.printer = config.get_printer()
|
||||
self.adc = {}
|
||||
gcode = self.printer.lookup_object('gcode')
|
||||
gcode.register_command("QUERY_ADC", self.cmd_QUERY_ADC,
|
||||
desc=self.cmd_QUERY_ADC_help)
|
||||
def register_adc(self, name, mcu_adc):
|
||||
self.adc[name] = mcu_adc
|
||||
cmd_QUERY_ADC_help = "Report the last value of an analog pin"
|
||||
def cmd_QUERY_ADC(self, params):
|
||||
gcode = self.printer.lookup_object('gcode')
|
||||
name = gcode.get_str('NAME', params, None)
|
||||
if name not in self.adc:
|
||||
objs = ['"%s"' % (n,) for n in sorted(self.adc.keys())]
|
||||
msg = "Available ADC objects: %s" % (', '.join(objs),)
|
||||
gcode.respond_info(msg)
|
||||
return
|
||||
value, timestamp = self.adc[name].get_last_value()
|
||||
msg = 'ADC object "%s" has value %.6f (timestamp %.3f)' % (
|
||||
name, value, timestamp)
|
||||
pullup = gcode.get_float('PULLUP', params, None, above=0.)
|
||||
if pullup is not None:
|
||||
v = max(.00001, min(.99999, value))
|
||||
r = pullup * v / (1.0 - v)
|
||||
msg += "\n resistance %.3f (with %.0f pullup)" % (r, pullup)
|
||||
gcode.respond_info(msg)
|
||||
|
||||
def load_config(config):
|
||||
return QueryADC(config)
|
Loading…
Add table
Add a link
Reference in a new issue