; +-----------------------------------------------+
; |AUTHOR:   COLLIN LASLEY                        |
; |                                               |
; |CS 480:   3D PRINTING AND ROBOTICS             |
; |                                               |
; |PROJECT 2: ASSISTED BED LEVELING (LONG VERSION)|
; |                                               |
; |DATE:     11/29/2018 (ROUGH DRAFT)             |
; |PROFESSOR: DR. LAWLOR                          |
; +-----------------------------------------------+

;IMPORTANT NOTE:
;THIS ASSUMES A 220 BY 220 BED!
 
;--------------------------------
;---- INITIALIZE THE PRINTER ----
;--------------------------------
G21		;USE MM AS DEFAULT UNIT
G90		;MAKE SURE POSITIONS ARE ABSOLUTE
M82		;ALSO MAKE SURE EXTRUDER COMMANDS ARE ABSOLUTE
M107		;TURN OFF FAN

M190 S60	;HEAT BED TO 60 C
M104 S210	;HEAT EXTRUDER TO 210 C

M502		;RESET RAM-STORED EEPROM VALUES TO DEFAULTS
M500		;SAVE RAM EEPROM RECORD TO ACTUAL EEPROM
M501		;READ BACK EEPROM INTO RAM

G28		;HOME ALL AXES

G12 P2 S2 R15	;CLEAN EXTRUDER WITH TWO 15MM CIRCLES
G1 Z30		;RAISE THE HEAD TO ALLOW CLEANING OF THE CIRCLES
G4 P20000	;HOLD THE PRINTER'S HORSES FOR 20 SECONDS

;--------------------------------
;----     LEVEL THE BED      ----
;--------------------------------
G28		      ;RE-HOME FOR LEVELING
G1 X110 Y110	      ;CENTER THE EXTRUDER IN X/Y PLANE

G29 P0		      ;LOAD DEFAULT BED MESH

		      ;PROBE CENTER:
G29 P2 B T	      ;WAIT FOR USER SHIM THICKNESS MEASUREMENT
		      ;AFTER BUTTON CLICK, USER STEPS Z DOWN UNTIL
		      ;THERE IS NOZZLE->BED CONTACT, THEN WAIT FOR BUTTON

G29 P2 B T X5   Y5    ;PROBE CORNER 1
G29 P2 B T X210 Y5    ;PROBE CORNER 2
G29 P2 B T X210 Y210  ;PROBE CORNER 3
G29 P2 B T X5   Y210  ;PROBE CORNER 4

;--------------------------------
;---- CREATE THE ROUGH MESH  ----
;--------------------------------
G29 P3			  ;INTERPOLATE BED MESH FROM PROBED LOCATIONS

G29 T			  ;OUTPUT Z COMPENSATION VALUES
G29 S1			  ;SAVE MESH TO EEPROM IN SLOT 1
G29 F 10.0		  ;SET 10MM FADE HEIGHT COMPENSATION

;--------------------------------
;----   SAVE AND TEST MESH   ----
;--------------------------------
G29 A			  ;ENABLE UNIFIED BED LEVELING USING SAVED MESH
M500			  ;SYNC ALL CHANGES IN RAM TO EEPROM

G26 B60 H210 C K R1 F1.75 ;PRINT TEST PATTERN AT 60 BED, 210 EXTRUDER, USE CUR POINTS, KEEP HEATER ON

;--------------------------------
;----        CLEAN UP        ----
;--------------------------------
M104 S0			       ;TURN OFF EXTRUDER HEAT
M140 S0			       ;TURN OFF BED HEAT

G91			      ;ENABLE RELATIVE COORDINATE SYSTEM
G1 E-1 F300		      ;RETRACT SOME FILAMENT
G1 Z+0.5 E-5 X-20 Y-20 F9000  ;PULL UP EXTRUDER AND RETRACT FILAMENT THE REST OF THE WAY
G28 X0 Y0		      ;GO TO X/Y HOME POSITION
M84			      ;TURN OFF STEPPER MOTORS
G90			      ;RE-ENABLE ABSOLUTE COORDINATE SYSTEM





