fan_generic: Add support for named fans and gcode to control them (#3054)

Signed-off-by: Pontus Borg <liquidpontus@yahoo.se>
This commit is contained in:
bondus 2020-08-07 17:39:44 +02:00 committed by GitHub
parent 3eefc037c5
commit c9e7119a93
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 0 deletions

View File

@ -1224,6 +1224,12 @@
# given id. The default is to not report the temperature via M105. # given id. The default is to not report the temperature via M105.
# Manually controlled fan (one may define any number of sections with a
# "fan_generic" prefix). The speed of a manually controlled fan is set with the
# SET_FAN_SPEED gcode command.
#[fan_generic extruder_partfan]
# Options are the same as for the [fan] section
###################################################################### ######################################################################
# Additional servos, LEDs, buttons, and other pins # Additional servos, LEDs, buttons, and other pins
###################################################################### ######################################################################

View File

@ -244,6 +244,13 @@ The following command is available when an "output_pin" config section
is enabled: is enabled:
- `SET_PIN PIN=config_name VALUE=<value>` - `SET_PIN PIN=config_name VALUE=<value>`
## Manually Controlled Fans Commands
The following command is available when a "fan_generic" config section
is enabled:
- `SET_FAN_SPEED FAN=config_name SPEED=<speed>` This command sets
the speed of a fan. <speed> must be between 0.0 and 1.0.
## Neopixel and Dotstar Commands ## Neopixel and Dotstar Commands
The following command is available when "neopixel" or "dotstar" config The following command is available when "neopixel" or "dotstar" config

View File

@ -0,0 +1,28 @@
# Support fans that are controlled by gcode
#
# Copyright (C) 2016-2020 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
from . import fan
class PrinterFanGeneric:
cmd_SET_FAN_SPEED_help = "Sets the speed of a fan"
def __init__(self, config):
self.printer = config.get_printer()
self.fan = fan.Fan(config, default_shutdown_speed=0.)
self.fan_name = config.get_name().split()[-1]
gcode = self.printer.lookup_object("gcode")
gcode.register_mux_command("SET_FAN_SPEED", "FAN",
self.fan_name,
self.cmd_SET_FAN_SPEED,
desc=self.cmd_SET_FAN_SPEED_help)
def get_status(self, eventtime):
return self.fan.get_status(eventtime)
def cmd_SET_FAN_SPEED(self, gcmd):
speed = gcmd.get_float('SPEED', 0.)
self.fan.set_speed_from_command(speed)
def load_config_prefix(config):
return PrinterFanGeneric(config)