Skip to content

Instantly share code, notes, and snippets.

View wolfmanjm's full-sized avatar

Jim Morris wolfmanjm

View GitHub Profile
@wolfmanjm
wolfmanjm / feeders.ini
Created July 30, 2024 11:46
button box ini
[button box]
feeder0.pin = PE8 # button
feeder0.press = echo -1 M700N0 # command to send
feeder1.pin = PJ7 # button
feeder1.press = echo -1 M700N1 # command to send
feeder2.pin = PJ8 # button
feeder2.press = echo -1 M700N2 # command to send
import matplotlib.pyplot as plt
x0=0 # First Position (Start)
xd=100 # Second Position (End)
T=100 # Time
x= [0] * 101
for t in range(0,101):
x[t]= x0+(xd-x0)*(10*((t/T)**3)-15*((t/T)**4)+6*((t/T)**5))
G1 X0.000000 Y0.000000 E0.000000
G1 X0.000149 Y0.008564 E0.100000
G1 X0.000598 Y0.017119 E0.200000
G1 X0.001345 Y0.025659 E0.300000
G1 X0.002390 Y0.034176 E0.400000
G1 X0.003732 Y0.042661 E0.500000
G1 X0.005371 Y0.051107 E0.600000
G1 X0.007306 Y0.059507 E0.700000
G1 X0.009536 Y0.067852 E0.800000
G1 X0.012058 Y0.076134 E0.900000
; 20mm cylinder with 0.3mm height 0.7mm width volumetric E
G92 E0
G1 X-10 Z0.3 F3000
G2 I10 J0 E11.98
G10
G1 Z0.6
G11
G92 E0
G2 I10 J0 E11.98
G10
# calculates E volumetric value given widthxheightxlength
# Usage: width height length
if ARGV.size < 3
puts "Usage: width height length"
exit 1
end
$layer_width = ARGV[0].to_f
$layer_height = ARGV[1].to_f
G0 X0.000000 Y0.000000
G1 X0.000149 Y0.008564
G1 X0.000598 Y0.017119
G1 X0.001345 Y0.025659
G1 X0.002390 Y0.034176
G1 X0.003732 Y0.042661
G1 X0.005371 Y0.051107
G1 X0.007306 Y0.059507
G1 X0.009536 Y0.067852
G1 X0.012058 Y0.076134
@wolfmanjm
wolfmanjm / macros.ini
Last active April 30, 2020 09:23
upload macro
[script upload file]
name = Upload File
exec = upload-ym.py toprint.gcode ACM0
# issue probe commands to smoothie
require 'optparse'
require 'ostruct'
require 'rubyserial'
class Optparse
def self.parse(args)
options = OpenStruct.new
options.verbose = false
// this is the time it should take to execute this cartesian move, it is approximate
// as it does not take into account accel/decel
float secs = distance / rate_mm_s;
// check per-actuator speed limits by looking at the minimum time each axis can move its specified amount
// this is regardless of wether it is mm/sec or deg/sec for a rotary axis
for (size_t actuator = 0; actuator < n_motors; actuator++) {
// actual distance moved for this actuator
// NOTE for a rotary axis this will be degrees turned not distance
float d = fabsf(actuator_pos[actuator] - actuators[actuator]->get_last_milestone());
@wolfmanjm
wolfmanjm / cnc.rb
Created March 20, 2019 11:23
example turtle cnc script
job= CNC.build 'plate' do
@safe_z= 2
@tool_dia= (1.0/8)*25.4 # 1/8" end mill
@doc= 0.2
@feedrate= 1000
@laser= false
# size of plate
w = 100.0
l = 25.0