Skip to content

Instantly share code, notes, and snippets.

@dattas
Created March 8, 2021 19:54
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dattas/906ee49931e3d6868de1f774cd1832d3 to your computer and use it in GitHub Desktop.
Save dattas/906ee49931e3d6868de1f774cd1832d3 to your computer and use it in GitHub Desktop.
Macros to change neopixels color based on temperature
[temperature_sensor rpi_sensor]
sensor_type: rpi_temperature
min_temp: -40
max_temp: 85
[pause_resume]
[neopixel my_neopixel]
pin: PA8
[delayed_gcode pre_heat_leds]
gcode:
heating_led_indicator
{% if (printer.heater_bed.temperature|int) < (printer.heater_bed.target|int) or (printer.extruder.temperature|int) < (printer.extruder.target|int) %}
UPDATE_DELAYED_GCODE ID=pre_heat_leds DURATION=2
UPDATE_DELAYED_GCODE ID=cooling_leds DURATION=0
{% else %}
SET_LED LED=my_neopixel RED=1.0 GREEN=1.0 BLUE=1.0
{% endif %}
[delayed_gcode cooling_leds]
gcode:
cooling_led_indicator
{% set min_temp = printer["temperature_sensor rpi_sensor"].temperature %}
{% if (printer.heater_bed.temperature|int) > min_temp or (printer.extruder.temperature|int) > min_temp %}
UPDATE_DELAYED_GCODE ID=cooling_leds DURATION=2
UPDATE_DELAYED_GCODE ID=pre_heat_leds DURATION=0
{% else %}
SET_LED LED=my_neopixel RED=0 GREEN=0 BLUE=0
{% endif %}
[gcode_macro heating_led_indicator]
gcode:
{% if printer.extruder.target > 0 %}
{% set hotend = [printer.extruder.temperature / printer.extruder.target,1]|min %}
SET_LED LED=my_neopixel RED={hotend} GREEN={1-hotend} BLUE=0
{% endif %}
[gcode_macro cooling_led_indicator]
gcode:
{% set min_temp = printer["temperature_sensor rpi_sensor"].temperature %}
{% set hotend = [min_temp / printer.extruder.temperature, 1]|min %}
SET_LED LED=my_neopixel RED={1-hotend} GREEN={hotend} BLUE=0
[gcode_macro hot_end_and_bed_wait]
gcode:
{% if (printer.extruder.temperature|int) < (printer.extruder.target|int) or (printer.heater_bed.temperature|int) < (printer.heater_bed.target|int) %}
{% if not printer.pause_resume.is_paused %}
PAUSE
{% endif %}
UPDATE_DELAYED_GCODE ID=hot_end_and_bed_wait-delayed DURATION=5
{% else %}
UPDATE_DELAYED_GCODE ID=hot_end_and_bed_wait-delayed DURATION=0
{% if printer.pause_resume.is_paused %}
RESUME
{% endif %}
{% endif %}
[delayed_gcode hot_end_and_bed_wait-delayed]
gcode:
{% if (printer.extruder.temperature|int) >= (printer.extruder.target|int) and (printer.heater_bed.temperature|int) >= (printer.heater_bed.target|int) %}
{% if printer.pause_resume.is_paused %}
RESUME
{% endif %}
{% else %}
M105 ; update host software with temperature information
UPDATE_DELAYED_GCODE ID=hot_end_and_bed_wait-delayed DURATION=5
{% endif %}
[gcode_macro PRINT_START]
default_parameter_BED_TEMP: 60
default_parameter_EXTRUDER_TEMP: 210
gcode:
# Start bed heating
M140 S{BED_TEMP}
# Start nozzle heating
M104 S{EXTRUDER_TEMP}
# Start LEDs
heating_led_indicator
UPDATE_DELAYED_GCODE ID=pre_heat_leds DURATION=2
#Home
G28
#wait for hot end and bed temp, don't block delayed_gcode
HOT_END_AND_BED_WAIT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment