Drawing Curves with G Code

Here is the definition that we built together in class. Click the image to view the full resolution screen capture. Click the download link in the caption to get the grasshopper file.

The general concept of this file is pretty basic, but there are a lot of details that are probably new to you. take a few moments to review your file and add notes when needed. Make sure you understand what each component is doing and why it is there. We will be building on this knowledge and this file next week.

Book: Printing Things

Printing Things
Author:Claire Warnier, Dries Verbruggen, Sven Ehmann, Robert Klanten
Published Date:2014
Page count:256
Sharing a love of technology and experimentation, a new generation of designers and creative outsiders can hardly wait to explore the potentials and boundaries of 3D printing. The race is on for anyone to come up with the services and products that will b




IFTTT is a great tool that allows you to write simple little scripts to create interoperability between different apps and web services. These scripts are called “recipes” and in that tradition can be shared and modified. Just create an IFTTT account,  activate the required channels, and start living the good life.

Stick a book in your CPJ


Available_GooglePlay_Button appstore-button

I made a recipe that allows you to easily post books to your CPJ. There is a simple little app called “ISBN Scan” that allows you to scan the bar code of a book. You can download it for free for Android or iPhone. The app pulls together the bibliographic information on that book, an image of the cover, and a little summary. You can email that info to yourself, and this is where IFTTT comes in.

iftt_bookPressThis recipe takes the info in the email and pushes it to a new WordPress post.  There are just a couple things in the recipe to tweak, but it is explained when you add it. This takes a few minutes to get set up, but afterwards you will have a super quick and easy way to take a book in your hand and put it in your CPJ.

You can mod this recipe to do other things. There are a bunch of other recipes out there for WordPress. You can also make up your own!   You may find other good uses for IFTTT to make your life better.

Here a few IFTTT WordPress tools.

Scan a book and send it to your CPJ:

IFTTT Recipe: ISBN Scan to WordPress (via Gmail) connects gmail to wordpress 

Feed a dropbox folder to your CPJ:

IFTTT Recipe: Post photos from dropbox folder to wordpress blog connects dropbox to wordpress

Keep tabs on how frequently you are posting to your CPJ: IFTTT Recipe: Adds new WordPress posts to Google Calendar connects wordpress to google-calendar

For the kids who like to use the Instygrams: IFTTT Recipe: Instagram photos tagged #wp to wordpress post connects instagram to wordpress

And more!

Jaquet-Droz Automata

Automates-Jaquet-Droz-p1030479The automata of  Pierre Jaquet-Droz are complex mechanical devices that prefigure the mechanical computers that were to come the following centuries. These delightful little robots performed music, writing, and drawing. This shows the historical connect between the advance of technology, the arts, and a general sense of wonder. These devices are incredibly complex, but they maintain a lovely sense of poetry and grace.doll1_Jaquet-Droz-automata-4

These pieces have a nice resonance with the drawing work that we are doing in class currently.

G Code Cheat Sheets

Marlin_GCodes_CheatSheet_Page_4Here is a nice little cheat sheet pdf of the G Codes and M Codes used to control RepRap 3D Printers. It breaks things down a few different ways, ranging from a list of common codes to scan quickly, to more detailed information, and a complete list of all the Codes used in the Marlin firmware we use on our printers.

Below is the complete list of codes. In addition to this page this pdf, there is a good deal of information on the RepRap wiki.

G Codes and M Codes for 3D printing
These are codes for the Marlin RepRap firmware. These codes are fairly standard accross 3D printers, and are mostly consistent with NIST G Code standards. This information was collated directly from the Marlin firmware and from reprap.org/wiki/G-code.
All codes in Marlin
Code Description
G0 Rapid Movement
G1 Coordinated Movement
G4  Dwell S<seconds> or P<milliseconds>
G10  retract filament according to settings of M207
G11  retract recover filament according to settings of M208
G28  Home all Axis
G29  Detailed Z-Probe, probes the bed at 3 or more points.  Will fail if you haven’t homed yet.
G30 Single Z Probe, probes bed at current XY location.
G31  Dock sled (Z_PROBE_SLED only)
G32  Undock sled (Z_PROBE_SLED only)
G90  Use Absolute Coordinates
G91  Use Relative Coordinates
G92  Set current position to coordinates given
M Codes
M0  Unconditional stop
M1  Same as M0
M17  Enable/Power all stepper motors
M18  Disable all stepper motors; same as M84
M20  List SD card
M21  Init SD card
M22  Release SD card
M23  Select SD file (M23 filename.g)
M24  Start/resume SD print
M25  Pause SD print
M26  Set SD position in bytes (M26 S12345)
M27  Report SD print status
M28  Start SD write (M28 filename.g)
M29  Stop SD write
M30  Delete file from SD (M30 filename.g)
M31  Output time since last M109 or SD card start to serial
M32  Select file and start SD print (Can be used _while_ printing from SD card files):
M42 Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used.
M80  Turn on Power Supply
M81  Turn off Power Supply
M82  Set E codes absolute (default)
M83  Set E codes relative while in Absolute Coordinates (G90) mode
M84 Disable steppers until next move,or use S<seconds> to specify an inactivity timeout, after which the steppers will be disabled.  S0 to disable the timeout.
M85  Set inactivity shutdown timer with parameter S<seconds>. To disable set zero (default)
M92  Set axis_steps_per_unit  same syntax as G92
M104  Set extruder target temp
M105  Read current temp
M106  Fan on
M107  Fan off
M109  S## Wait for extruder current temp to reach target temp. Waits only when heating.   R## Wait for extruder current temp to reach target temp. Waits when heating and cooling  IF AUTOTEMP is enabled, S<mintemp> B<maxtemp> F<factor>. Exit autotemp by any M109 without F
M112  Emergency stop
M114  Output current position to serial port
M115  Capabilities string
M117  display message
M119  Output Endstop status to serial port
M126  Solenoid Air Valve Open (BariCUDA support by jmil)
M127  Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil)
M128  EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil)
M129  EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil)
M140  Set bed target temp
M150 Set BlinkM Color Output R: Red<0-255> U(!): Green<0-255> B: Blue<0-255> over i2c, G for green does not work.
M190  S## Wait for bed current temp to reach target temp. Waits only when heating  R## Wait for bed current temp to reach target temp. Waits when heating and cooling
M200  D<millimeters> set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters).
M201  Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000)
M202  Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!
M203  Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec
M204  Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) in mm/sec^2  also sets minimum segment time in ms (B20000) to prevent buffer under-runs and M20 minimum feedrate
M205 advanced settings:  minimum travel speed S=while printing T=travel only,  B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk
M206  set additional homing offset
M207 set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting
M208  set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/sec]
M209  S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction.
M218  set hotend offset (in mm): T<extruder_number> X<offset_on_X> Y<offset_on_Y>
M220   S<factor in percent> set speed factor override percentage
M221   S<factor in percent> set extrude factor override percentage
M226  P<pin number> S<pin state> Wait until the specified pin reaches the state required
M240  Trigger a camera to take a photograph
M250  Set LCD contrast C<contrast value> (value 0..63)
M280 set servo position absolute. P: servo index, S: angle or microseconds
M300  Play beep sound S<frequency Hz> P<duration ms>
M301  Set PID parameters P I and D
M302 Allow cold extrudes, or set the minimum extrude S<temperature>.
M303 PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
M304  Set bed PID parameters P I and D
M400  Finish all moves
M401  Lower z-probe if present
M402  Raise z-probe if present
M404 N<dia in mm> Enter the nominal filament width (3mm, 1.75mm ) or will display nominal filament width without parameters
M405  Turn on Filament Sensor extrusion control.  Optional D<delay in cm> to set delay in centimeters between sensor and extruder
M406  Turn off Filament Sensor extrusion control
M407  Displays measured filament diameter
M500  stores parameters in EEPROM
M501  reads parameters from EEPROM (if you need reset them after you changed them temporarily).
M502  reverts to the default “factory settings”.  You still need to store them in EEPROM afterwards if you want to.
M503  print the current settings (from memory not from EEPROM)
M540  Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
M600  Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
M665  set delta configurations
M666  set delta endstop adjustment
M605  Set dual x
M700  Turn off print pressure to syringe 0  RMH 10/31/14
M701  Turn on print pressure to syringe 0   RMH 10/31/14
M702  Turn off purge pressure to syringe 0  RMH 10/31/14
M703  Turn on purge pressure to syringe 0   RMH 10/31/14
M750  Turn off vaccuum pump                 RMH 10/31/14
M751  Turn on vaccuum pump                  RMH 10/31/14
M907  Set digital trimpot motor current using axis codes.
M908  Control digital trimpot directly.
M350  Set microstepping mode.
M351  Toggle MS1 MS2 pins directly.