Monday, October 28, 2019

Conformsgiving


Any good conformist things going on for Thanksgiving? I'm looking to be a conformist and conform. I want to drive my gray car to a gray event on a gray day while wearing a vertical pin-striped shirt and gray pants, and subject people to my gray personality. Maybe something Thanksgiving related but with my favorite food, boiled rice. Possibly something for engineers, lawyers, or doctors, because a stuffy professional degree is the ultimate mark of conformism. Maybe even something to do with Burning Man, for people who are so conformist that they have to desperately pretend they're not, by wearing fur like everyone else and conforming.

We were going to do something original, imaginative, and creative for Thanksgiving but our plans have been forced to conform.

I actually have a great idea for what to do the weekend before Thanksgiving but I can't tell you what it is because then I'd appear non-conformist, and if there's anything I've learned in life it's that non-conformists don't fit in, and so they get left out, and therefore I have to leave you out of my non-conform
ist plans.

-Dave Bad Person

Wednesday, October 23, 2019

Why a non-professional college degree is worthless




I often look at my university education and think of what a useless load of crap it is. I have a PhD in neuroscience, which has no practical application to anything much. It's certainly not an industry, or something that produces a marketable product, or makes money, or produces anything that's needed, wanted, or popular.

This can be said of much of university education. Other than professional courses such as engineering, medicine, law, dentistry, nursing, pharmacy, computer science, teaching, and so on, a university education merely serves as a signal to employers. The content of your non-professional university education, no matter how worthless and irrelevant it may be, is not important. The important thing is the signal it sends. The signal is that you contain the trinity of characteristics that employers hope will make you a successful employee: intelligence, conscientiousness, and conformity. This is why employers seek employees with a university education, because the drudgery to obtain educational success is the same drudgery required for job success. An intelligent employee will learn their job fast, a conscientious employee will labor until the job is done right, and a conformist employee obeys superiors and works well with team members.

This is why most university graduates all appear to come from the same mold - they dress the same, talk the same, think the same, and 
act the same - because they're conformists.

Me, I fucking hated university life, and I still hate it today with a passion. I lived with my parents in my home town and hung out with my old high school friends while I was at university. So for me, going to university was not some amazing, liberating, enlightening, partying, growth experience that helped me develop as a person. Instead, it was what held me back in life, for many years. In fact, the more I've distanced myself from university life, the better my life has become. My overall opinion of college/university is that it's just high school with more partying and binge drinking, and a degree is just a piece of paper that says you belong to the middle class.

What's my point here? Well I guess the first thing is that I'm not your typical college degree conformist type of person. I don't share the characteristics of the typical straight-from-the-mold university grad employee - the standard vertical pin-striped shirt, the pants, the shiny shoes, the same haircut that my mother gave me when I was eight years old, the dopey grin of self-satisfaction, the carefully considered speech so as not to make waves, the spindly musculature, the pallid face, the subservient attitude. Does a college education reliably signal intelligence, conscientiousness, and conformity? Based on my example we can only say "maybe" at best. Does it give people useful skills for the real world? Almost definitely not.

And on that note, here are some of the world's most successful people telling us why a non-professional college degree is worthless: https://www.youtube.com/watch?v=e8QY0NDWqzk





That's all for now.  Don't forget to subscribe to my blog using the box at the top right of this page.

-Dave Bad Person



More reading on this topic

If you want to read another thread about my shitty university experiences, check this out:
https://boredofstudies.org/threads/the-australian-national-university-anu-is-a-terrible-university-and-will-ruin-your-future.387681/
https://www.badperson.net/2019/11/the-australian-national-university-anu.html


You can also find books that cover this topic more thoroughly at these links:
www.amazon.com/Case-against-Education-System-Waste/dp/0691174652
www.amazon.com/Coddling-American-Mind-Intentions-Generation/dp/0735224897
www.amazon.com/Cracks-Ivory-Tower-Higher-Education/dp/0190846283

Here's my blog post about how academics have become detached from the reality of what society needs from them.
https://www.badperson.net/2020/02/academics-have-become-detached-from-reality.html

Here's another one of my blog posts about how scientists lie about the goals and utility of their research so they can make themselves and their work seem more important.
https://www.badperson.net/2020/02/how-scientists-lie-about-the-goals-and-utility-of-their-research.html

Here's my parody of the media release by the President of the Australian Academy of Science regarding the recent mega-fires in Australia.
https://www.badperson.net/2020/01/a-message-from-president-of-australian.html









Tuesday, October 22, 2019

The straw ban



I don't get this whole straw ban thing. Some people are for it, some are against it. The reason I don't get it is because I've never used straws in my whole life. Why do you need a straw at all? What the hell are you drinking? If whatever you're drinking requires a straw then it's probably some junk food crap that you shouldn't be drinking anyway. Do you need a straw because you can't tip your glass and put it to your mouth? Then maybe use a little less ice or a more practical shape of glass? The way I see it, the only legitimate reason to need a straw is if you have a major injury to your hands or face.

I guess I'm just some offbeat weirdo who now happens to be on the trendy side of the fence, the strange little kid who never used straws, who now turns out to be the genius that was half a century ahead of the curve.
I guess if I wanted to put an emotional spin on it and influence your behavior, I'd say that if you use straws then you're an unintelligent person.

You don't want to be an unintelligent person, do you?


-Dave Bad Person


Tuesday, October 8, 2019

Calibration of a linear Delta 3D printer.

Calibration of a linear delta printer is more difficult than for a cartesian. What follows is the procedure I use. It can be time consuming but is very accurate. Once you've set the calibration using this method the calibration won't change unless you change the printer geometry. Also, you will no longer need to use a Z-probe, and best of all, your prints will be dimensionally accurate.

First of all, you should ensure that your bed is flat to begin with. This calibration procedure assumes that your printer bed is flat to less than about 0.5mm across it's surface, and preferably even flatter than than. The Kossel Pro came with a perfectly good bed and shouldn't need replacing. If your bed is not flat then you need to buy a better quality bed. The Kossel Pro takes a 250mm circular x 5mm thick piece of glass that's intended to be used as a 3D printer bed. They can be bought inexpensively online.


Second, I have replaced the outdated Brainwave electronics board on my Kossel Pro with an Azteeg X5 Mini WiFi by Panucatt devices. It uses Smoothieware firmware, and for the Kossel Pro my values for arm length and arm radius are shown below. Edit these in your printer's config file. These values represent two sides of a right angle triangle. Arm_length is the length of your printer's arms from pivot to pivot in millimeters (the hypotenuse). 
Arm_radius is the opposite side of the triangle, measured as the horizontal distance from pivot to pivot of each arm, in millimeters, when the print head is at the center of the print area, equidistant from each tower. See more info here:  http://smoothieware.org/delta

arm_length = 298.0
arm_radius = 153.5

For the first part of the calibration you will need to set the arm solution to cartesian so that you can move each of the towers independently. Remember to reboot the printer after making config changes so that the new config is loaded.
arm_solution cartesian

The next step is to ensure the motors move the correct distance. Use Pronterface or another printer control interface to move the carriage on each tower a known amount, e.g. 100 or 200mm. http://www.pronterface.com/Use a pen to mark on the belts where the carriage starts and stops. Now measure the distance between the two pen marks. They should match the amount you told them to move. If not then you need to adjust alpha_steps_per_mm, beta_steps_per_mm, and gamma_steps_per_mm in your config file. For example, if you told the carriage to move 100mm and it moved 125mm, then you need to take the current value of alpha_steps_per_mm and divide it by 125/100 = 1.25. So if your alpha_steps_per_mm was 200, you now divide it by 1.25 to get 160.

Typically the motors and belt wheels on your printer will be the same for each axis and so the values of alpha-, beta-, and gamma_steps_per_mm will be the same, and you'll only need to do this for one tower.

Once this calibration is complete, you can change the arm solution back to linear delta. Your printer's towers are now set to do dimensionally accurate movements. A similar procedure can be used to adjust the extruder as well.
arm_solution linear_delta

The next step in the calibration is to use Pronterface, or other printer control interface, to set the print nozzle to lightly hold down a piece of paper at location x0 y0 z0 (adjust gamma_max until this is correct, see http://smoothieware.org/delta#height-calibration ). You will need to reboot the printer after each change so it loads the new value from the config file. If you get down to the point where a 0.1mm difference in height is either too tight or too loose, choose the looser one.

Next, make the nozzle lightly hold down a piece of paper at a location close to each tower. The commands to do this are:

g0 x-100 y-60 z0
g0 x100 y-60 z0
g0 x0 y110 z0

Adjust the height of the nozzle at each tower by adjusting the stop screws on the carriage of that tower. You will need to home the printer after every stop-screw adjustment so the new height is set. If you need negative values to make the nozzle lightly hold down paper at the tower, then the printer thinks the bed is higher than it is, so you need to turn the stop screw anticlockwise. If positive values are needed then the stop screw needs to turn clockwise.
Remember than an M3 screw typically has a 0.5mm thread pitch, so each turn of the screw moves it up or down 0.5mm. This will help you tune in the calibration. Repeat the process a few times at each tower to get it spot on. If a 0.1mm change in height holds down a piece of paper either too tightly or too loosely, choose the looser value.

After setting the stop screws, return the print head to the center of the bed: g0 x0 y0 z0. If the nozzle is now too high above the bed, increase arm_radius slightly by 0.5 - 1.0mm. If the nozzle is too low and lightly crashes into the bed, decrease arm_radius. After changing arm_radius you will have to start all over again and do the height calibration (gamma_max) and then the stop screw adjustments. However by repeating the procedure several times, you will eventually find the best value for arm_radius.

When you get very close to the perfect calibration it may be necessary to change arm_radius by less than 0.5mm each time, e.g. 0.2 or 0.3mm.

Once the print nozzle lightly holds down a piece of paper at the center of the bed and at each tower, your calibration is complete. I have found my values for arm_radius and arm_length work fine and I expect them to be the same for every Kossel Pro printer, so start with those values and you will at least be close.

Once calibrated, the nozzle should lightly hold down a piece of paper at the center of the bed and next to each tower. If it's hard to get it exact then it's better for the paper to be held a little too loose than too tight.

Once this is done the calibration is complete and will not need to be done again unless you change the geometry of the printer or alter the height of the nozzle within the print head. As mentioned before, your print bed must also be sufficiently flat for this to work.

I have attached the Smoothieware config.txt file I use for my Kossel Pro to help you get started.


-Dave Bad Person


# Smoothieboard configuration file, see http://smoothieware.org/configuring-smoothie# NOTE Lines must not exceed 132 characters, and '#' characters mean what follows is ignored

## Robot module configurations  general handling of movement G-codes and slicing into moves



# Basic motion configuration

default_feed_rate                            4000             # Default speed (mmminute) for G1G2G3 moves
default_seek_rate                            4000             # Default speed (mmminute) for G0 moves
mm_per_arc_segment                           0.0              # Fixed length for line segments that divide arcs, 0 to disable
#mm_per_line_segment                         5                # Cut lines into segments this size
mm_max_arc_error                             0.01             # The maximum error for line segments that divide arcs 0 to disable
                                                              # note it is invalid for both the above be 0
                                                              # if both are used, will use largest segment length based on radius
delta_segments_per_second                    100              # For deltas only, number of segments per second, set to 0 to disable
                                                              # and use mm_per_line_segment

# Arm solution configuration  Cartesian robot. Translates mm positions into stepper positions
# See httpsmoothieware.orgstepper-motors
alpha_steps_per_mm                           160              # Steps per mm for alpha ( X ) stepper and tower
beta_steps_per_mm                            160              # Steps per mm for beta ( Y ) stepper and tower
gamma_steps_per_mm                           160              # Steps per mm for gamma ( Z ) stepper and tower

# Delta configuration
# See httpsmoothieware.orgdelta
arm_solution                                 linear_delta     # Selects the linear delta arm solution
arm_length                                   298.0            # This is the length of an arm from hinge to hinge
arm_radius                                   152.8            # This is the horizontal distance from hinge to hinge when the effector is centered

# Planner module configuration  Look-ahead and acceleration configuration
# See httpsmoothieware.orgmotion-control
acceleration                                 3000              # Acceleration in mmsecondsecond.
#z_acceleration                              500              # Acceleration for Z only moves in mms^2, 0 uses acceleration which is the default. DO NOT SET ON A DELTA
junction_deviation                           0.05             # See httpsmoothieware.orgmotion-control#junction-deviation
#z_junction_deviation                        0.0              # For Z only moves, -1 uses junction_deviation, zero disables junction_deviation on z moves DO NOT SET ON A DELTA

# Cartesian axis speed limits
x_axis_max_speed                             30000            # Maximum speed in mmmin
y_axis_max_speed                             30000            # Maximum speed in mmmin
z_axis_max_speed                             30000            # Maximum speed in mmmin

# Stepper module configuration 
# Pins are defined as  ports, and pin numbers, appending ! to the number will invert a pin
# See httpsmoothieware.orgpin-configuration and httpsmoothieware.orgpinout
alpha_step_pin                               2.1              # Pin for alpha stepper step signal
alpha_dir_pin                                0.11             # Pin for alpha stepper direction, add '!' to reverse direction
alpha_en_pin                                 0.10             # Pin for alpha enable pin
alpha_current                                1.5              # X stepper motor current
alpha_max_rate                               30000.0          # Maximum rate in mmmin

beta_step_pin                                2.2              # Pin for beta stepper step signal
beta_dir_pin                                 0.20             # Pin for beta stepper direction, add '!' to reverse direction
beta_en_pin                                  0.19             # Pin for beta enable
beta_current                                 1.5              # Y stepper motor current
beta_max_rate                                30000.0          # Maxmimum rate in mmmin

gamma_step_pin                               2.3              # Pin for gamma stepper step signal
gamma_dir_pin                                0.22             # Pin for gamma stepper direction, add '!' to reverse direction
gamma_en_pin                                 0.21             # Pin for gamma enable
gamma_current                                1.5              # Z stepper motor current
gamma_max_rate                               30000.0          # Maximum rate in mmmin

## Extruder module configuration
# See httpsmoothieware.orgextruder
extruder.hotend.enable                          true          # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.hotend.steps_per_mm                    170           # Steps per mm for extruder stepper
extruder.hotend.default_feed_rate               600           # Default rate ( mmminute ) for moves where only the extruder moves
extruder.hotend.acceleration                    500           # Acceleration for the stepper motor mmsec²
extruder.hotend.max_speed                       50            # Maximum speed in mms

extruder.hotend.step_pin                        2.0           # Pin for extruder step signal
extruder.hotend.dir_pin                         0.5          # Pin for extruder dir signal ( add '!' to reverse direction )
extruder.hotend.en_pin                          0.4           # Pin for extruder enable signal

# Extruder offset
#extruder.hotend.x_offset                        0            # X offset from origin in mm
#extruder.hotend.y_offset                        0            # Y offset from origin in mm
#extruder.hotend.z_offset                        0            # Z offset from origin in mm

# Firmware retract settings when using G10G11, these are the defaults if not defined, must be defined for each extruder if not using the defaults
#extruder.hotend.retract_length                  3            # Retract length in mm
#extruder.hotend.retract_feedrate                45           # Retract feedrate in mmsec
#extruder.hotend.retract_recover_length          0            # Additional length for recover
#extruder.hotend.retract_recover_feedrate        8            # Recover feedrate in mmsec (should be less than retract feedrate)
#extruder.hotend.retract_zlift_length            0            # Z-lift on retract in mm, 0 disables
#extruder.hotend.retract_zlift_feedrate          6000         # Z-lift feedrate in mmmin (Note mmmin NOT mmsec)

delta_current                                    1.5          # First extruder stepper motor current

# Second extruder module configuration
#extruder.hotend2.enable                         true         # Whether to activate the extruder module at all. All configuration is ignored if false
#extruder.hotend2.steps_per_mm                   140          # Steps per mm for extruder stepper
#extruder.hotend2.default_feed_rate              600          # Default rate ( mmminute ) for moves where only the extruder moves
#extruder.hotend2.acceleration                   500          # Acceleration for the stepper motor, as of 0.6, arbitrary ratio
#extruder.hotend2.max_speed                      50           # mms

#extruder.hotend2.step_pin                       2.8          # Pin for extruder step signal
#extruder.hotend2.dir_pin                        2.13         # Pin for extruder dir signal ( add '!' to reverse direction )
#extruder.hotend2.en_pin                         4.29         # Pin for extruder enable signal

#extruder.hotend2.x_offset                       0            # x offset from origin in mm
#extruder.hotend2.y_offset                       25.0         # y offset from origin in mm
#extruder.hotend2.z_offset                       0            # z offset from origin in mm

#epsilon_current                                 1.0          # Second extruder stepper motor current

## Laser module configuration
# See httpsmoothieware.orglaser
laser_module_enable                           false           # Whether to activate the laser module at all
laser_module_pwm_pin                          2.5             # This pin will be PWMed to control the laser. 
                                                              # Only pins 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 1.18, 1.20, 1.21, 1.23, 1.24, 1.26, 3.25 and 3.26
                                                              # can be used since laser requires hardware PWM, see httpsmoothieware.orgpinout
#laser_module_ttl_pin                       1.30            # This pin turns on when the laser turns on, and off when the laser turns off.
#laser_module_maximum_power                   1.0             # This is the maximum duty cycle that will be applied to the laser
#laser_module_minimum_power                   0.0             # This is a value just below the minimum duty cycle that keeps the laser
                                                              # active without actually burning.
#laser_module_default_power                   0.8             # This is the default laser power that will be used for cuts if a power has not been specified.  The value is a scale between
                                                              # the maximum and minimum power levels specified above
#laser_module_pwm_period                      20              # This sets the pwm frequency as the period in microseconds

## Temperature control configuration
# See httpsmoothieware.orgtemperaturecontrol

# First hotend configuration
temperature_control.hotend.enable            true             # Whether to activate this ( hotend ) module at all.
temperature_control.hotend.thermistor_pin    0.24             # Pin for the thermistor to read
temperature_control.hotend.heater_pin        2.5              # Pin that controls the heater, set to nc if a readonly thermistor is being defined
temperature_control.hotend.thermistor        EPCOS100K        # See httpsmoothieware.orgtemperaturecontrol#toc5
#temperature_control.hotend.beta             4066             # Or set the beta value
temperature_control.hotend.set_m_code        104              # M-code to set the temperature for this module
temperature_control.hotend.set_and_wait_m_code   109          # M-code to set-and-wait for this module
temperature_control.hotend.designator        T                # Designator letter for this module
temperature_control.hotend.max_temp          300              # Set maximum temperature - Will prevent heating above 300 by default
#temperature_control.hotend.min_temp         0                # Set minimum temperature - Will prevent heating below if set

# Safety control is enabled by default and can be overidden here, the values show the defaults
# See httpsmoothieware.orgtemperaturecontrol#runaway
temperature_control.hotend.runaway_heating_timeout      120   # How long it can take to heat up, max is 2040 seconds.
#temperature_control.hotend.runaway_cooling_timeout      240   # How long it can take to cool down if temp is set lower, max is 2040 seconds
#temperature_control.hotend.runaway_range 35       # How far from the set temperature it can wander, max setting is 63°C

# PID configuration 
# See httpsmoothieware.orgtemperaturecontrol#pid
temperature_control.hotend.p_factor         34.8             # P ( proportional ) factor
temperature_control.hotend.i_factor         2.327            # I ( integral ) factor
temperature_control.hotend.d_factor         131              # D ( derivative ) factor
#temperature_control.hotend.readings_per_second    20    # How many times per second to read temperature from the sensor.
#temperature_control.hotend.pwm_frequency        2000  # How many times per second to switch the heating element on oroff.
                                                             # Set to a low value ( 20 ) if using a Solid State Relay.
#temperature_control.hotend.max_pwm          64               # Max pwm, 64 is a good value if driving a 12v resistor with 24v.

# Second hotend configuration
#temperature_control.hotend2.enable            true           # Whether to activate this ( hotend ) module at all.
#temperature_control.hotend2.thermistor_pin    0.25           # Pin for the thermistor to read
#temperature_control.hotend2.heater_pin        1.23           # Pin that controls the heater
#temperature_control.hotend2.thermistor        EPCOS100K      # See httpsmoothieware.orgtemperaturecontrol#thermistor
##temperature_control.hotend2.beta             4066           # or set the beta value
#temperature_control.hotend2.set_m_code        104            # M-code to set the temperature for this module
#temperature_control.hotend2.set_and_wait_m_code 109          # M-code to set-and-wait for this module
#temperature_control.hotend2.designator        T1             # Designator letter for this module

#temperature_control.hotend2.p_factor          13.7           # P ( proportional ) factor
#temperature_control.hotend2.i_factor          0.097          # I ( integral ) factor
#temperature_control.hotend2.d_factor          24             # D ( derivative ) factor

#temperature_control.hotend2.max_pwm          64              # Max pwm, 64 is a good value if driving a 12v resistor with 24v.

# Bed control configuration
temperature_control.bed.enable               true             # Whether to activate this ( hotend ) module at all.
temperature_control.bed.thermistor_pin       0.23             # Pin for the thermistor to read
temperature_control.bed.heater_pin           2.7              # Pin that controls the heater
temperature_control.bed.thermistor           Honeywell100K    # See httpsmoothieware.orgtemperaturecontrol#thermistor
#temperature_control.bed.beta                3974             # Or set the beta value
temperature_control.bed.set_m_code           140              # M-code to set the temperature for this module
temperature_control.bed.set_and_wait_m_code  190              # M-code to set-and-wait for this module
temperature_control.bed.designator           B                # Designator letter for this module

#temperature_control.bed.readings_per_second       20      # How many times per second to read temperature from the sensor.
temperature_control.bed.pwm_frequency       10      # How many times per second to switch the heating element on oroff.
                                                      # Set to a low value ( 20 ) if using a Solid State Relay.

# Bang-bang ( simplified ) control
# See httpsmoothieware.orgtemperaturecontrol#bang-bang
temperature_control.bed.bang_bang           false             # Set to true to use bang bang control rather than PID
temperature_control.bed.hysteresis          2.0               # Set to the temperature in degrees C to use as hysteresis

# Bed configuration
temperature_control.bed.max_temp          120              # Set maximum temperature - Will prevent heating above 120 by default
#temperature_control.bed.min_temp         0                # Set minimum temperature - Will prevent heating below if set

# Safety control is enabled by default and can be overidden here, the values show the defaults
# See httpsmoothieware.orgtemperaturecontrol#runaway
#temperature_control.bed.runaway_heating_timeout      120 # How long it can take to heat up, max is 2040 seconds.
temperature_control.bed.runaway_cooling_timeout         0       # How long it can take to cool own if temp is set lower, max is 2040 seconds
temperature_control.bed.runaway_range                   0       # How far from the set temp it can can wander, max is 63C
                                                                # Need to set it high because bed does not cool off quickly
#temperature_control.bed.runaway_error_range          1     # How far +- from set temp to detect set temperature for runaway

# PID configuration 
# See httpsmoothieware.orgtemperaturecontrol#pid
temperature_control.bed.p_factor         138.4             # P ( proportional ) factor
temperature_control.bed.i_factor         4.58              # I ( integral ) factor
temperature_control.bed.d_factor         1046              # D ( derivative ) factor

#temperature_control.bed.max_pwm          64 

#switch.psu.enable                            true             # turn atx on/off
#switch.psu.input_on_command                  M80              #
#switch.psu.input_off_command                 M81              #
#switch.psu.output_pin                        2.4              # small mosfet (NB not inverted)
#switch.psu.output_type                       digital          # on/off only
#switch.psu.ignore_on_halt                    true             # so the PSU does not turn off on a HALT condition (like limit trigger)
                                                               # However leave commented or set to false if you want the PSU to turn off for an over heat fault condition

## Switch modules
# See httpsmoothieware.orgswitch

# Switch module for fan control
switch.fan.enable                            true             # Enable this module
switch.fan.input_on_command                  M106             # Command that will turn this switch on
switch.fan.input_off_command                 M107             # Command that will turn this switch off
switch.fan.output_pin                        0.26             # Pin this module controls
switch.fan.output_type                       pwm              # PWM output settable with S parameter in the input_on_comand
#switch.fan.max_pwm                          255              # Set max pwm for the pin default is 255

#switch.misc.enable                          true             # Enable this module
#switch.misc.input_on_command                M42              # Command that will turn this switch on
#switch.misc.input_off_command               M43              # Command that will turn this switch off
#switch.misc.output_pin                      2.4              # Pin this module controls
#switch.misc.output_type                     digital          # Digital means this is just an on or off pin

## Temperatureswitch
# See httpsmoothieware.orgtemperatureswitch
# Automatically toggle a switch at a specified temperature. Different ones of these may be defined to monitor different temperatures and switch different swithxes
# Useful to turn on a fan or water pump to cool the hotend
#temperatureswitch.hotend.enable              true            #
#temperatureswitch.hotend.designator          T               # first character of the temperature control designator to use as the temperature sensor to monitor
#temperatureswitch.hotend.switch              misc            # select which switch to use, matches the name of the defined switch
#temperatureswitch.hotend.threshold_temp      60.0            # temperature to turn on (if rising) or off the switch
#temperatureswitch.hotend.heatup_poll         15              # poll heatup at 15 sec intervals
#temperatureswitch.hotend.cooldown_poll       60              # poll cooldown at 60 sec intervals

## Endstops
# See httpsmoothieware.orgendstops
endstops_enable                              true             # The endstop module is enabled by default and can be disabled here
delta_homing                                 true             # Forces all three axis to home a the same time regardless of what is specified in G28
alpha_min_endstop                            nc               # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
alpha_max_endstop                            1.24^            # Pin to read max endstop, uncomment this and comment the above if using max endstops
alpha_homing_direction                       home_to_max      # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
alpha_max                                    0                # This gets loaded as the current position after homing when home_to_max is set
beta_min_endstop                             nc               # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
beta_max_endstop                             1.26^            # Pin to read max endstop, uncomment this and comment the above if using max endstops
beta_homing_direction                        home_to_max      # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
beta_max                                     0                # This gets loaded as the current position after homing when home_to_max is set
gamma_min_endstop                            nc               # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
gamma_max_endstop                            1.28^            # Pin to read max endstop, uncomment this and comment the above if using max endstops
gamma_homing_direction                       home_to_max      # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
gamma_max                                    264.1       # This gets loaded as the current position after homing when home_to_max is set

alpha_max_travel                             500             # Max travel in mm for alphaX axis when homing
beta_max_travel                              500             # Max travel in mm for betaY axis when homing
gamma_max_travel                             500             # Max travel in mm for gammaZ axis when homing

# Endstops home at their fast feedrate first, then once the endstop is found they home again at their slow feedrate for accuracy
alpha_fast_homing_rate_mm_s                  50                # Alpha tower fast homing feedrate in mmsecond
alpha_slow_homing_rate_mm_s                  20                # Alpha tower slow homing feedrate in mmsecond
beta_fast_homing_rate_mm_s                   50                # Beta  tower fast homing feedrate in mmsecond
beta_slow_homing_rate_mm_s                   20                # Beta  tower slow homing feedrate in mmsecond
gamma_fast_homing_rate_mm_s                  50                # Gamma tower fast homing feedrate in mmsecond
gamma_slow_homing_rate_mm_s                  20                # Gamma tower slow homing feedrate in mmsecond

alpha_homing_retract_mm                      5                 # Distance to retract from the endstop after it is hit for alphaX
beta_homing_retract_mm                       5                 # Distance to retract from the endstop after it is hit for betaY
gamma_homing_retract_mm                      5                 # Distance to retract from the endstop after it is hit for gammaZ


# Endstop debouncing options
#endstop_debounce_count                       100              # Uncomment if you get noise on your endstops, default is 100
#endstop_debounce_ms                          1                # Uncomment if you get noise on your endstops, default is 1 millisecond debounce

# Endstop trim options
alpha_trim                                    0             # Software trim for alpha stepper endstop (in mm)
beta_trim                                     0             # Software trim for beta stepper endstop (in mm)
gamma_trim                                    0             # Software trim for gamma stepper endstop (in mm)

# End of endstop config
# Delete the above endstop section and uncomment next line and copy and edit Snippetsabc-endstop.config file to enable endstops for ABC axis
#include abc-endstop.config

## Z-probe
# See httpsmoothieware.orgzprobe
zprobe.enable                                false           # Set to true to enable a zprobe
#zprobe.probe_pin                             1.28!^          # Pin probe is attached to, if NC remove the !
#zprobe.slow_feedrate                         5               # Mmsec probe feed rate
#zprobe.debounce_count                       100             # Set if noisy
#zprobe.fast_feedrate                         100             # Move feedrate mmsec
#zprobe.probe_height                          5               # How much above bed to start probe
#gamma_min_endstop                           nc              # Normally 1.28. Change to nc to prevent conflict,

# Levelling strategy

# Example for the delta calibration strategy
#leveling-strategy.delta-calibration.enable   true            # Enable basic delta calibration
#leveling-strategy.delta-calibration.radius   100             # the probe radius

# Example for the delta grid leveling strategy
#leveling-strategy.delta-grid.enable          true            # Enable grid leveling
#leveling-strategy.delta-grid.radius          50              # Grid radius in millimeters
#leveling-strategy.delta-grid.size            7               # Grid size, must be an odd number
#leveling-strategy.delta-grid.do_home         true            # Whether to home before calibration
#leveling-strategy.delta-grid.save            true            # Whether to automatically save the grid
#leveling-strategy.delta-grid.initial_height  10              # Height at which to start probling

## Panel
# See httpsmoothieware.orgpanel
# Please find your panel on the wiki and copypaste the right configuration here
panel.enable false #                         true              # Set to true to enable the panel code

# Example viki2 config for an azteeg miniV2 with IDC cable
panel.lcd                                    viki2             # set type of panel
panel.spi_channel                            0                 # set spi channel to use P0_18,P0_15 MOSI,SCLK
panel.spi_cs_pin                             0.16              # set spi chip select
panel.encoder_a_pin                          3.25!^            # encoder pin
panel.encoder_b_pin                          3.26!^            # encoder pin
panel.click_button_pin                       2.11!^            # click button
panel.a0_pin                                 2.6               # st7565 needs an a0
#panel.contrast                              8                 # override contrast setting (default is 9)
#panel.encoder_resolution                    4                 # override number of clicks to move 1 item (default is 4)
#panel.button_pause_pin                      1.30^             # kill/pause set one of these for the auxilliary button on viki2
#panel.back_button_pin                       1.30!^            # back button recommended to use this on EXP1
panel.buzz_pin                               0.25              # pin for buzzer on EXP2
panel.red_led_pin                            2.8               # pin for red led on viki2 on EXP1
panel.blue_led_pin                           4.29              # pin for blue led on viki2 on EXP1
panel.external_sd                            false             # set to true to use external sd WARNING not supported.
panel.external_sd.spi_channel                0                 # set spi channel the sdcard is on
panel.external_sd.spi_cs_pin                 1.23              # set spi chip select for the sdcard
panel.external_sd.sdcd_pin                   1.31!^            # sd detect signal (set to nc if no sdcard detect)
panel.menu_offset                            1                 # some panels will need 1 here

panel.menu_offset                            0                 # Some panels will need 1 here

panel.alpha_jog_feedrate                     6000              # X jogging feedrate in mmmin
panel.beta_jog_feedrate                      6000              # Y jogging feedrate in mmmin
panel.gamma_jog_feedrate                     200               # Z jogging feedrate in mmmin

panel.hotend_temperature                     185               # Temp to set hotend when preheat is selected
panel.bed_temperature                        00                # Temp to set bed when preheat is selected

## Custom menus  Example of a custom menu entry, which will show up in the Custom entry.
# NOTE _ gets converted to space in the menu and commands,  is used to separate multiple commands
custom_menu.power_on.enable                true              #
custom_menu.power_on.name                  Power_on          #
custom_menu.power_on.command               M80               #

custom_menu.power_off.enable               true              #
custom_menu.power_off.name                 Power_off         #
custom_menu.power_off.command              M81               #



## Network settings
# See httpsmoothieware.orgnetwork
network.enable                               false            # Enable the ethernet network services
network.webserver.enable                     true             # Enable the webserver
network.telnet.enable                        true             # Enable the telnet server
network.ip_address                           auto             # Use dhcp to get ip address
# Uncomment the 3 below to manually setup ip address
#network.ip_address                           192.168.3.222   # The IP address
#network.ip_mask                              255.255.255.0   # The ip mask
#network.ip_gateway                           192.168.3.1     # The gateway address
#network.mac_override                         xx.xx.xx.xx.xx.xx  # Override the mac address, only do this if you have a conflict

## System configuration
# Serial communications configuration ( baud rate defaults to 9600 if undefined )
# For communication over the UART port, not the USBSerial port
uart0.baud_rate                              115200           # Baud rate for the default hardware ( UART ) serial port

second_usb_serial_enable                     false            # This enables a second USB serial port
#leds_disable                                true             # Disable using leds after config loaded
#play_led_disable                            true             # Disable the play led

# Kill button maybe assigned to a different pin, set to the onboard pin by default
# See httpsmoothieware.orgkillbutton
kill_button_enable                           true             # Set to true to enable a kill button
kill_button_pin                              2.12             # Kill button pin. default is same as pause button 2.12 (2.11 is another good choice)

#msd_disable                                 false            # Disable the MSD (USB SDCARD), see httpsmoothieware.orgtroubleshooting#disable-msd
#dfu_enable                                  false            # For linux developers, set to true to enable DFU

# Only needed on a smoothieboard
# See httpsmoothieware.orgcurrentcontrol
currentcontrol_module_enable                 true             # Control stepper motor current via the configuration file