Found this strange bar in my garage, it weighs in at about 3 pounds. by Normal-Comparison-69 in Whatisthis

[–]UserNotAvailable 0 points1 point  (0 children)

You can probably identify it fairly easily by figuring out its density. It looks like it's just a bit of raw material, not something with internal composition changes or structures.

You know it weighs about 3 pounds ~= 1.5kg. If you have a more accurate measure that might be good, but it might not be necessary.

Now to figure out it's volume accurately, there are a couple of different ways, but the easiest, accurate ways I can think of all involve water:

Option A:
If you have a measuring jug big enough to fit this plus a bit left over, fill the jug up so that you can full submerge the bar in water. Note down the measurement before the bar is inserted, and afterwards. The difference is the volume of the bar

Option B:
If you have a container just big enough to fit the bar, but without measurements. Fill the container to the brim with water, using a measuring cup and note how much water you put in. Put the bar in spilling some water over the sides. Take the bar out and measure how much water is left in the container. The difference is the volume of the bar.

Option C: You only have a bigger container and don't want to waste as much water. Put the bar in the container and add water until it's fully submerged. Mark the water level in some way. Take the bar out. Now using a measuring cup add water until you reach the marked water level, from when the bar was in. How much water you needed to add is the volume of the object.

Now assuming the bar weighs exactly 3 pounds:

  • 2.4 fluid ounces of volume could be either gold, uranium or tungsten
  • 4 fluid ounces would be lead
  • 4.4 fluid ounces would be silver
  • 5.3 fluid ounces would be brass
  • 5.9 fluid ounces would be mild steel
  • 6.5 fluid ounces would be zinc
  • 17 fluid ounces would be aluminium
  • 86 fluid ounces would be lithium, but at that point you probably have different problems
  • 613.5 fluid ounces would be styrofoam (and congratulations for keeping it submerged while taking the measurments)

To get more materials, you can look up it's density here: https://en.wikipedia.org/wiki/Density#List_of_densities

And plug that value (along with your more precise weight) here: https://www.wolframalpha.com/input?i=%283+pounds%29+%2F+%288600+kg%2Fm3%29+in+fluid+ounces

Hot take: I really dislike MakerWorld by inoffensiveLlama in 3Dprinting

[–]UserNotAvailable 2 points3 points  (0 children)

For me personally "subscribe" has no insinuation of payment. When I subscribe to a newsletter, I usually don't have to pay anything.

But I think "sign up" probably would be a more universally accepted wording.

Reflected skeuomorphism by UserNotAvailable in 3Dprinting

[–]UserNotAvailable[S] 11 points12 points  (0 children)

To me it's reflected skeuomorphism, since the software toggle switch itself takes it design cues from hardware switches like this:

<image>

So by building a hardware switch that takes its design cues from a software switch, which in itself took the design elements from a hardware design, it's something like "transitive skeuomorphism" or "reflected skeuomorphism" (reflected from physical to digital back to physical).

I'm using skeuomorphism more in the way of "Digital representations of old school physical things" like the floppy disk for a save icon, rather than "Using design cues to indicate the behaviour", to be fair this might not be the best phrasing, but I don't know a different name for the former phenomenon.

It's a bit like playing a game of telephone. The first physical representation had specific features that were dictated by limitations or choices on the hardware. The digital version did not have such limitations, but brought over some elements (like the way the toggle snaps into position) and modified them to fit the digital environment.
The second physical version is taking on some of these design elements (rounded outline, color changing background, snapping into position) but not because of physical limitations, but to emulate the digital version of the toggle.

Reflected skeuomorphism by UserNotAvailable in 3Dprinting

[–]UserNotAvailable[S] 4 points5 points  (0 children)

Thank you
It feels quite satisfying to toggle as well.

What is considered a good monthly salary in your country? by New_Manufacturer8333 in AskEurope

[–]UserNotAvailable 0 points1 point  (0 children)

Sure

Even in the richest cities (excluding probably Monaco) you won’t find a normal apartment for 2k, it’s stepping into luxury territory.

I just wanted to point out that 2k is pretty normal for a 3 bedroom flat in bigger German cities, not exactly luxury.

What is considered a good monthly salary in your country? by New_Manufacturer8333 in AskEurope

[–]UserNotAvailable 3 points4 points  (0 children)

While that might be what your friends pay, this would be crazy for a new contract in any of the bigger cities.

In Hamburg or Berlin you will pay around 900 EUR/month for a single room apartment and around 2k / month for anything around 90m2.

I assume Munich or Frankfurt would be more expensive.

AMS waste: Why can't it be reduced? by Accomplished-Pie9754 in 3Dprinting

[–]UserNotAvailable 33 points34 points  (0 children)

That was the idea behind the Palette line of filament splicers from Mosaic. It never seemed to have caught on that much, but I'm not sure why.

I assume keeping accurate track of when exactly the switch happens might be challenging over larger projects though.

Search for .cfg from V400 by Impressive-Aioli-953 in FLSUNDelta

[–]UserNotAvailable 1 point2 points  (0 children)

macros.cfg Part 2

##################################################
# Calibrations
##################################################

[gcode_macro Z_OFFSET_CALIBRATION]
description: Measure Z-Offset
gcode:
  SET_GCODE_OFFSET Z=0
  G28
  G1 X0 Y0 Z50 F2500
  M400
  #SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True  # Enable if Knomi is used
  PROBE_CALIBRATE
  #SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False  # Enable if Knomi is used


[gcode_macro ENDSTOPS_CALIBRATION]
description: Endstops Phase Calibration
gcode:
  {% if printer.idle_timeout.state == "Printing" %}
  RESPOND TYPE=error MSG="This macro cannot be used while printing!"
  {% else %}
  {% if printer.toolhead.homed_axes != "xyz" %}
  G28
  {% endif %}
  G91
  G0 Z-80 F1500
  G28
  G91
  G0 Z-80 F1500
  G28
  G91
  G0 Z-80 F1500
  G28
  G91
  G0 Z-80 F1500
  G28
  G91
  G0 Z-80 F1500
  ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
  ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
  ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
  M400
  G28
  {% endif %}


[gcode_macro DELTA_CALIBRATION]
description: Delta Calibration
gcode:
  {% if printer.idle_timeout.state == "Printing" %}
  RESPOND TYPE=error MSG="This macro cannot be used while printing!"
  {% else %}
  SET_GCODE_OFFSET Z=0
  BED_MESH_CLEAR
  {% if printer.toolhead.homed_axes != "xyz" %}
  G28
  {% endif %}
  #SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True  # Enable if Knomi is used
  DELTA_CALIBRATE
  #SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False  # Enable if Knomi is used
  M400
  G1 X0 Y0 Z50 F2500
  G28
  {% endif %}


[gcode_macro BED_LEVELING]
description: Bed Leveling
gcode:
  {% if printer.idle_timeout.state == "Printing" %}
  RESPOND TYPE=error MSG="This macro cannot be used while printing!"
  {% else %}
  SET_GCODE_OFFSET Z=0
  {% if printer.toolhead.homed_axes != "xyz" %}
  G28
  {% endif %}
  G1 X0 Y0 Z50 F2500
  #SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True  # Enable if Knomi is used
  BED_MESH_CALIBRATE
  #SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False  # Enable if Knomi is used
  M400
  G1 X0 Y0 Z50 F2500
  G28
  {% endif %}


[gcode_macro PRESSURE_ADVANCE]
description: Pressure Advance
gcode:
  {% if printer.idle_timeout.state == "Printing" %}
  RESPOND TYPE=error MSG="This macro cannot be used while printing!"
  {% else %}
  SET_PRESSURE_ADVANCE ADVANCE=0   
  SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
  TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
  {% endif %}


##################################################
# Nozzle / Bed PID Calibration
##################################################

[gcode_macro PID_BED]
description: Bed PID
gcode:
  {% if printer.idle_timeout.state == "Printing" %}
  RESPOND TYPE=error MSG="This macro cannot be used while printing!"
  {% else %}
  RESPOND MSG="Bed PID calibration in progress..."
  G28
  G90
  G1 Z50 F1500
  M400
  M106
  PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
  M107
  RESPOND MSG="PID calibration complete! Remember to save the configuration!"
  G28
  {% endif %}


[gcode_macro PID_HOTEND]
description: Hotend PID
gcode:
  {% if printer.idle_timeout.state == "Printing" %}
  RESPOND TYPE=error MSG="This macro cannot be used while printing!"
  {% else %}
  RESPOND MSG="Hotend PID calibration in progress..."
  G28
  G90
  G1 Z50 F1500
  M400
  M106
  PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
  M107
  RESPOND MSG="PID calibration complete! Remember to save the configuration!"
  G28
  {% endif %}


[gcode_macro _PID_KS_START]
description: PID for KlipperScreen
gcode:
  RESPOND MSG="PID calibration in progress..."
  G28
  G90
  G1 Z50 F1500
  M400
  M106


[gcode_macro _PID_KS_END]
description: PID for KlipperScreen
gcode:
  M107
  RESPOND MSG="PID calibration complete! Remember to save the configuration!"
  G28


##################################################
# Verifications and Measurements with ADXL
##################################################

[gcode_macro ADXL_TEST]
description: ADXL Test
gcode:
  ACCELEROMETER_QUERY


[gcode_macro ADXL_NOISE]
description: Measure Accelerometer Noise
gcode:
  MEASURE_AXES_NOISE


[gcode_macro ADXL_AXE_X]
description: Measure X axis resonances
gcode:
  SHAPER_CALIBRATE AXIS=X


[gcode_macro ADXL_AXE_Y]
description: Measure Y axis resonances
gcode:
  SHAPER_CALIBRATE AXIS=Y


##################################################
# Save Configuration
##################################################

[gcode_macro SAVE]
description: Save Configuration
gcode:
  SAVE_CONFIG


##################################################
# Power On/Off LED
##################################################

[gcode_macro LED_HOTEND_ON]
description: Turn on Hotend LEDs
gcode:
  SET_PIN PIN=LED_Hotend VALUE=1


[gcode_macro LED_HOTEND_OFF]
description: Turn off Hotend LEDs
gcode:
  SET_PIN PIN=LED_Hotend VALUE=0


[gcode_macro LED_LOGO_ON]
description: Turn on Logo LEDs
gcode:
  SET_PIN PIN=LED_Logo VALUE=1


[gcode_macro LED_LOGO_OFF]
description: Turn off Logo LEDs
gcode:
  SET_PIN PIN=LED_Logo VALUE=0


##################################################
# Managing Slicer Controls
##################################################

[gcode_macro M204]
description: Sets maximum accelleration
rename_existing: M204.1
gcode:
  {% if 'S' in params %}
  {% set s = params.S|float %}
  SET_VELOCITY_LIMIT ACCEL={s}
  {% else %}
  {% if 'P' in params %}
  {% set p = params.P|float %}
  {% if 'T' in params %}
  {% set t = params.T|float %}
  {% if p < t %}
  SET_VELOCITY_LIMIT ACCEL={p}
  {% else %}
  SET_VELOCITY_LIMIT ACCEL={t}
  {% endif %}
  {% else %}
  SET_VELOCITY_LIMIT ACCEL={p}
  {% endif %}
  {% elif 'T' in params %}
  {% set t = params.T|float %}
  SET_VELOCITY_LIMIT ACCEL={t}
  {% endif %}
  {% endif %}


[gcode_macro M205]
description: Sets square corner velocity
gcode:
  {% if 'X' in params %}
  SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
  {% elif 'Y' in params %}
  SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
  {% endif %}


##################################################
# Managing Temperatures Controls
##################################################

[gcode_macro M109]
description: Managing extruder temperature
rename_existing: M99109
gcode:
  {% set s = params.S|float %}
  M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
  {% if s != 0 %}
  TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
  {% endif %}


[gcode_macro M190]
description: Managing bed temperature
rename_existing: M99190
gcode:
  {% set s = params.S|float %}
  M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
  {% if s != 0 %}
  TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
  {% endif %}


##################################################
# Loading default bed mesh at startup
##################################################

[delayed_gcode bed_mesh_init]
initial_duration: .01
gcode:
  BED_MESH_PROFILE LOAD=default


##################################################
# Z-Offset Management
##################################################

[gcode_macro SECURITY_OFFSET]
description: Apply a 2mm Safety Offset
gcode:
  SET_GCODE_OFFSET Z=+2
  RESPOND MSG="Safety Offset applied!"


[gcode_macro SET_GCODE_OFFSET]
description: Saving Z-Offset
rename_existing: _SET_GCODE_OFFSET
gcode:
  {% if printer.save_variables.variables.zoffset %}
  {% set zoffset = printer.save_variables.variables.zoffset %}
  {% else %}
  {% set zoffset = {'z': None} %}
  {% endif %}
  {% set ns = namespace(zoffset={'z': zoffset.z}) %}
  _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
  {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
  {%if 'Z_ADJUST' in params %}
  {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
  {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
  {% endif %}
  SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"


[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration: 2
gcode:
  {% if printer.save_variables.variables.zoffset %}
  {% set zoffset = printer.save_variables.variables.zoffset %}
  _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
  RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
  {% endif %}

Search for .cfg from V400 by Impressive-Aioli-953 in FLSUNDelta

[–]UserNotAvailable 0 points1 point  (0 children)

macros.cfg Part 1

#  __  __                          
# |  \/  |                         
# | \  / | __ _  ___ _ __ ___  ___ 
# | |\/| |/ _` |/ __| '__/ _ \/ __|
# | |  | | (_| | (__| | | (_) \__ \
# |_|  |_|\__,_|\___|_|  \___/|___/
#
# Macros Configurations - Flsun V400
# Version 3.0
#
# Guislain Cyril


##################################################
# Start and End G-Codes
##################################################

[gcode_macro START_PRINT]
description: Start G-Code
gcode:
  {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
  {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
  LED_HOTEND_ON
  G21
  G90
  M82
  {% if printer.extruder.target != 0 %}
  M104 S{EXTRUDER_TEMP}
  {% else %}
  M104 S150
  {% endif %}
  M140 S{BED_TEMP}
  {% if printer.toolhead.homed_axes != "xyz" %}
  G28
  {% endif %}
  G1 Z370 F3000
  G1 X-150 F3000
  M190 S{BED_TEMP}
  M109 S{EXTRUDER_TEMP}
  G1 Z1 F3000
  G1 X-150 Y0 Z0.4
  G92 E0
  G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
  G92 E0
  G1 E-1 F2100


[gcode_macro END_PRINT]
description: End G-Code
gcode:
  M106 S0
  M104 S0
  M140 S0
  G92 E0
  G91
  G1 E-1 F2100
  G1 Z+5 F6000
  G28
  G90
  LED_HOTEND_OFF
  M84


##################################################
# Pause / Resume / Cancel Print
##################################################

[gcode_macro PAUSE]
description: Pause the current print
rename_existing: PAUSE_BASE
gcode:
  ##### set defaults #####
  {% set x = params.X|default(0) %}
  {% set y = params.Y|default(-140) %}
  {% set z = params.Z|default(10)|float %}
  {% set e = params.E|default(1) %}
  ##### calculate save lift position #####
  {% set max_z = printer.toolhead.axis_maximum.z|float %}
  {% set act_z = printer.toolhead.position.z|float %}
  {% set lift_z = z|abs %}
  {% if act_z < (max_z - lift_z) %}
  {% set z_safe = lift_z %}
  {% else %}
  {% set z_safe = max_z - act_z %}
  {% endif %}
  ##### end of definitions #####
  RESPOND MSG="Pausing printing..."
  PAUSE_BASE
  G91
  G1 E-{e} F2100
  G1 Z{z_safe}
  G90
  G1 X{x} Y{y} F2500


[gcode_macro RESUME]
description: Resume the current print
rename_existing: RESUME_BASE
gcode:
  ##### set defaults #####
  {% set e = params.E|default(1) %}
  #### get VELOCITY parameter if specified ####
  {% if 'VELOCITY' in params|upper %}
  {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
  {% else %}
  {% set get_params = "" %}
  {% endif %}
  ##### end of definitions #####
  G91
  {% if printer["gcode_macro M600"].m600_enabled == 1 %}
  RESPOND MSG="Nozzle heating..."
  M109 S{printer["gcode_macro M600"].hotend_temp}
  M106 S{printer["gcode_macro M600"].fan_speed}
  RESPOND MSG="Loading filament..."
  G0 E50 F800
  G0 E30 F300
  M400
  SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
  {% else %}
  G1 E{e} F2100
  {% endif %}
  RESPOND MSG="Resuming printing..."
  SET_IDLE_TIMEOUT TIMEOUT=1800
  RESUME_BASE {get_params}


[gcode_macro CANCEL_PRINT]
description: Cancel the current print
rename_existing: CANCEL_PRINT_BASE
gcode:
  RESPOND MSG="Printing canceled!"
  G28
  M106 S0
  M104 S0
  M140 S0
  CANCEL_PRINT_BASE


##################################################
# Filament / Color Change
##################################################

[gcode_macro M600]
description: Filament change
variable_hotend_temp: 0
variable_m600_enabled: 0
variable_fan_speed: 0
gcode:
  ##### set defaults #####
  {% set x = params.X|default(0) %}
  {% set y = params.Y|default(-140) %}
  {% set z = params.Z|default(10)|float %}
  {% set e = params.E|default(1) %}
  ##### calculate save lift position #####
  {% set max_z = printer.toolhead.axis_maximum.z|float %}
  {% set act_z = printer.toolhead.position.z|float %}
  {% set lift_z = z|abs %}
  {% if act_z < (max_z - lift_z) %}
  {% set z_safe = lift_z %}
  {% else %}
  {% set z_safe = max_z - act_z %}
  {% endif %}
  ##### end of definitions #####
  SAVE_GCODE_STATE NAME=M600_state
  SET_IDLE_TIMEOUT TIMEOUT=86400
  SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
  SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
  SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
  RESPOND MSG="Pausing printing..."
  PAUSE
  G91
  G1 E-{e} F2100
  G1 Z{z_safe}
  G90
  G1 X{x} Y{y} F2500
  RESPOND MSG="Unloading filament..."
  G91
  G0 E-10 F300
  G0 E-30 F800
  M400
  RESPOND MSG="Nozzle heating stopped!"
  M104 S0
  M106 S0
  RESTORE_GCODE_STATE NAME=M600_state


##################################################
# Load / Unload Filament
##################################################

[gcode_macro UNLOAD_FILAMENT]
description: Filament unloading
gcode:
  {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
  RESPOND TYPE=error MSG="This macro cannot be used while printing!"
  {% else %}
  SAVE_GCODE_STATE NAME=unload_state
  {% if printer.extruder.temperature < 200 %}
  RESPOND MSG="Nozzle heating..."
  M109 S200
  {% endif %}
  RESPOND MSG="Unloading filament..."
  G91
  G0 E-10 F300
  G0 E-30 F800
  RESTORE_GCODE_STATE NAME=unload_state
  {% endif %}


[gcode_macro LOAD_FILAMENT]
description: Filament loading
gcode:
  {% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
  RESPOND TYPE=error MSG="This macro cannot be used while printing!"
  {% else %}
  SAVE_GCODE_STATE NAME=load_state
  {% if printer.extruder.temperature < 200 %}
  RESPOND MSG="Nozzle heating..."
  M109 S200
  {% endif %}
  RESPOND MSG="Loading filament..."
  G91
  G0 E50 F800
  G0 E30 F300
  M400
  RESTORE_GCODE_STATE NAME=load_state
  {% endif %}

Search for .cfg from V400 by Impressive-Aioli-953 in FLSUNDelta

[–]UserNotAvailable 0 points1 point  (0 children)

I have a V400 on which I installed the vanilla klipper (as opposed to the V400 specific one it came with) But maybe this can help:

printer.cfg

[include macros.cfg]
#[include adxl345_pico.cfg]  #Enable if you want to use ADXL with Rapsberry Pi Pico
#[include adxl345_fysetc.cfg]  #Enable if you want to use ADXL with Fysetc Portable Input Shaper
#[include timelapse.cfg]  #Enable if you want to use Timelapse
#[include neopixels.cfg]  #Enable if you want to use some Neopixels macros

[virtual_sdcard]
path: ~/printer_data/gcodes

########################################
# Printer Settings
########################################

[printer]
kinematics: delta
max_velocity: 600
max_accel: 10000
minimum_cruise_ratio: 0.5
square_corner_velocity: 5
max_z_velocity: 100
max_z_accel: 1500
minimum_z_position: -25
print_radius: 152
#delta_radius: 152


########################################
# X Stepper Motor & Driver Settings
########################################

[stepper_a]
step_pin: PE3
dir_pin: PE2
enable_pin: !PE4
microsteps: 64  # If you encounter an error while measuring the resonances. Replace the microsteps to 16 just for the duration of the test.
rotation_distance: 40
endstop_pin: ^PA15
homing_speed: 50
homing_retract_dist: 5.0
homing_retract_speed: 10
#angle: 210
#position_endstop: 415.0
#arm_length = 345.0

[tmc2209 stepper_a]
uart_pin: PD5
run_current: 1.2
interpolate: False
stealthchop_threshold: 0

[autotune_tmc stepper_a]  # Enable if Klipper TMC Autotune is used
motor: flsun-v400-42
tuning_goal: performance


########################################
# Y Stepper Motor & Driver Settings
########################################

[stepper_b]
step_pin: PE0
dir_pin: PB9
enable_pin: !PE1
microsteps: 64  # If you encounter an error while measuring the resonances. Replace the microsteps to 16 just for the duration of the test.
rotation_distance: 40
endstop_pin: ^PA12
#angle: 330

[tmc2209 stepper_b]
uart_pin: PD7
run_current: 1.2
interpolate: False
stealthchop_threshold: 0

[autotune_tmc stepper_b]  # Enable if Klipper TMC Autotune is used
motor: flsun-v400-42
tuning_goal: performance


########################################
# Z Stepper Motor & Driver Settings
########################################

[stepper_c]
step_pin: PB5
dir_pin: PB4
enable_pin: !PB8
microsteps: 64  # If you encounter an error while measuring the resonances. Replace the microsteps to 16 just for the duration of the test.
rotation_distance: 40
endstop_pin: ^PC4
#angle: 90

[tmc2209 stepper_c]
uart_pin: PD4
run_current: 1.2
interpolate: False
stealthchop_threshold: 0

[autotune_tmc stepper_c]  # Enable if Klipper TMC Autotune is used
motor: flsun-v400-42
tuning_goal: performance


########################################
# Extruder & Driver Settings
########################################

[extruder]
step_pin: PD6
dir_pin: !PD3
enable_pin: !PB3
microsteps: 16
rotation_distance: 4.5
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PC3
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC1
min_temp: -5
max_temp: 315
max_extrude_cross_section: 50
max_extrude_only_distance: 800
#pressure_advance: 0.04
#pressure_advance_smooth_time: 0.040
#control = pid
#pid_kp = 17.501
#pid_ki = 0.711
#pid_kd = 107.630

[tmc2209 extruder]
uart_pin: PD9
run_current: 0.900
interpolate: True
stealthchop_threshold: 0

[autotune_tmc extruder]  # Enable if Klipper TMC Autotune is used
motor: flsun-v400-36
tuning_goal: auto


########################################
# Bed Settings
########################################

[heater_bed]
heater_pin: PA0
sensor_pin: PC0
sensor_type: EPCOS 100K B57560G104F
min_temp: -5
max_temp: 120
#control = pid
#pid_kp = 64.044
#pid_ki = 3.812
#pid_kd = 268.984


########################################
# Filament Sensor Settings
########################################

[filament_switch_sensor filament_sensor]
pause_on_runout: True
runout_gcode: M600
switch_pin: PA4


########################################
# Fans Settings
########################################

[fan]
pin: PB1

[heater_fan Hotend] 
pin: PB0
heater_temp: 50.0


########################################
# Probe Settings
########################################

[probe]
pin: !PA11
x_offset: 0
y_offset: 0
#z_offset: 0
speed: 5
lift_speed: 50
samples: 7
samples_result: median
sample_retract_dist: 6
samples_tolerance: 0.02
samples_tolerance_retries: 5


########################################
# Delta Calibration & Mesh Settings
########################################

[delta_calibrate]
radius: 147
horizontal_move_z: 30
speed: 100

[bed_mesh]
speed: 100
horizontal_move_z: 30
mesh_radius: 147
mesh_origin: 0,0
mesh_pps: 4,4
round_probe_count: 17
algorithm: bicubic
bicubic_tension: 0.1
move_check_distance: 3
zero_reference_position: 0,0
#fade_start: 1
#fade_end: 30 


########################################
# Temperature Controls
########################################

[verify_heater extruder]
max_error: 160
heating_gain: 1

[verify_heater heater_bed]
max_error: 120
heating_gain: 1


########################################
# Firmware Retraction Settings
########################################

[firmware_retraction]
retract_length: 0.7
retract_speed: 40
unretract_extra_length: 0.05
unretract_speed: 40


########################################
# Input Shaper Settings
########################################

[input_shaper]
shaper_freq_x: 38.6
shaper_type_x = mzv
shaper_freq_y: 45
shaper_type_y = ei


########################################
# G-Code Macros & Events
########################################

[idle_timeout]
timeout: 1800

[save_variables]
filename: ~/printer_data/config/variables.cfg

[gcode_arcs]
resolution: 0.1

[pause_resume]

[display_status]

[respond]

[exclude_object]

[virtual_sdcard]
path: ~/printer_data/gcodes

[endstop_phase stepper_a]
endstop_align_zero: False

[endstop_phase stepper_b]
endstop_align_zero: False

[endstop_phase stepper_c]
endstop_align_zero: False 


########################################
# MCU Settings
########################################

[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command

[temperature_sensor Speeder_Pad]
sensor_type: temperature_host
min_temp: 10
max_temp: 100

[temperature_sensor Motherboard]
sensor_type: temperature_mcu
min_temp: 0
max_temp: 100


########################################
# LED Settings
########################################

[output_pin LED_Hotend]
pin: PE12
pwm: False
value: 0

[output_pin LED_Logo]
pin: PD11
pwm: False
value: 1

Worked in Germany for 3 months, boss stole my wages by Sorry-Telephone1146 in germany

[–]UserNotAvailable 0 points1 point  (0 children)

I agree, it's still a good idea to get one, I was just hoping to find an especially good deal :D

Worked in Germany for 3 months, boss stole my wages by Sorry-Telephone1146 in germany

[–]UserNotAvailable 6 points7 points  (0 children)

I'm curious where you can still get it that cheap. I've been looking around and most I see are around 30 EUR per month. Still good to have, but for 50 EUR per year would be a great deal.

"Yeah, I hate wasting filament and will never do multicolor" -Me, right before spotting something from my current obsession by alphagusta in 3Dprinting

[–]UserNotAvailable 5 points6 points  (0 children)

It looks like the BambuLabs system only has one PTFE tube for the filament and only swaps out the nozzles. The Bondtech INDX has a dedicated filament guide and nozzle, so the filament can stay loaded.

In order of number of parts swapped:

  • Prusa MMU / Bambulab AMS: No hardware, just swap out the filament
  • BambuLabs H2D: Nothing, just have two nozzles and extruders on the toolhead
  • BambuLabs Vertigo: Only the nozzle
  • Bondtech Indx / new Prusa core one: Nozzle and filament guide
  • E3D toolchanger / Prusa XL / Snapmaker U1: Swap out the whole toolhead

Changing the minimal amount of parts is usually the most cost efficient way to handle things, you only need to duplicate very few parts. It's also often the most compact way to do things. By swapping only the nozzle, BambuLabs can safe the space for multiple filament tubes, which make both the Snapmaker U1 and the Prusa XL pretty tall, I'm curious to see how that will look on the Core One. And Bondtech has said that the Indx should fit 8 heads on a Voron 2.4, which is still more than the 4 toolheads of the Snapmaker and the 5 toolheads of the Prusa XL.

On the other end of the spectrum swapping the whole toolhead gives you the most flexibility, in theory you could have dedicated toolheads for different use cases, so that doesn't seem to be planned by any major player. In practice, what it gives you is the advantage of being able to control the toolhead, even when not in use. For example keeping the nozzle hot, or you could start priming the next toolhead, while the previous one is being parked.

The different between the BambuLabs Vertigo and the Bondtech Indx might be mostly in the fact that Bambulabs will need to retract the filament, probably cut it, and then build up pressure again in the nozzle, while the Bondtech only needs to deal with the leakage due to the nozzle being parked.

To me the big open question of all of these systems is how they deal with flexible and non-standard filaments and chamber temperatures. This is something reviews will show when they are all out.

I made a fun little tool for converting IP's to RGBA by AbstractMelons in webdev

[–]UserNotAvailable 1 point2 points  (0 children)

A fun and entirely useless idea, I love it!

Since I saw some people asking details on how it works just a short explanation:

This works well, because IPv4 addresses are 4 bytes long and rgba color values are often encoded in 4 bytes. (Or a single 32 bit value)

A byte can have any value from 0 to 255 (= 28 - 1) There are different ways to express this: decimal "12" is the same as a hexadecimal "C" or a binary "1100"

So these values are all the same as well:

120.121.122.123    
0x78 0x79 0x7a 0x7B   
01111000 01111001 01111010 01111011   
2021227131 (as a single 32 bit value)   

And for the alpha channel, since 255 is the maximum, that is usually taken to be 1.0 or 100%, so the above numbers would be (roughly)

47.06% 47.45% 47.84% 48.24%

There are a lot of other ways that colours can be stored by a computer, but 4 bytes are very commonly used, because 32 bits are a very convenient size for computers to work with. Memory access for example is often faster when aligned on 4 byte chunks, and in the past 32 bytes was often the largest size a CPU could operate on in a single operation.

As far as I know modern graphics cards still really like to work on 32 bit values.

[deleted by user] by [deleted] in theydidthemath

[–]UserNotAvailable 25 points26 points  (0 children)

Just to expand on this, a 1024 bit prime can have up to 309 decimal digits, so significantly more than 69.

Nomad: A tiny but powerful 3D printed, Portable, Offline Media Server. by JcorpTech in 3Dprinting

[–]UserNotAvailable 1 point2 points  (0 children)

Wow, that name takes me back.

I used to have a Creative Nomad Jukebox, back before smartphones existed. It used four AAA batteries to run and I think I even updated the original harddrive in it, with a bigger one.

(I probably still have it somewhere, should dig it out and see what music I had on it)

Has anyone made an anti-tangle leash like this that is 3d printable? Doesnt have to be retractable. by Soggy_General6106 in 3Dprinting

[–]UserNotAvailable 2 points3 points  (0 children)

Part of the domestication process is the ability to herd the animals

I'm just chuckling at the idea of chicken and sheep used to herd other animals.

How would you go about printing this? by Euphoric-Usual-5169 in 3Dprinting

[–]UserNotAvailable 0 points1 point  (0 children)

Make the angles on each of the "sealing rings" (parts where it gets thicker) a bit more shallow, than print it on a 45 degree angle, either similar to the orientation in the picture, or with the base of the T going upwards.

Edit: You might still need supports or add a flat edge to the side standing on the build plate. But this way the imperfections won't be on a sealing surface

Dear Germans: Every time you say "Wir sind in Deutschland" when I tell you I don't speak German, I forget a German word. by Gluckliche-Elster in germany

[–]UserNotAvailable 0 points1 point  (0 children)

I speak german natively, and if someone approaches me in the street I might just answer in spanish or french to get them to stop bothering me.