/**
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  Marlin  3 D  Printer  Firmware 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Copyright  ( C )  2016  MarlinFirmware  [ https : //github.com/MarlinFirmware/Marlin]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Based  on  Sprinter  and  grbl . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Copyright  ( C )  2011  Camiel  Gubbels  /  Erik  van  der  Zalm 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  This  program  is  free  software :  you  can  redistribute  it  and / or  modify 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  it  under  the  terms  of  the  GNU  General  Public  License  as  published  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  the  Free  Software  Foundation ,  either  version  3  of  the  License ,  or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  This  program  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  GNU  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  along  with  this  program .   If  not ,  see  < http : //www.gnu.org/licenses/>.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Elefu  RA  Board  Pin  Assignments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifndef __AVR_ATmega2560__ 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # error "Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define BOARD_NAME "Elefu Ra v3" 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Limit Switches
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define X_MIN_PIN          35 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define X_MAX_PIN          34 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define Y_MIN_PIN          33 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define Y_MAX_PIN          32 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define Z_MIN_PIN          31 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define Z_MAX_PIN          30 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Z Probe (when not Z_MIN_PIN)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifndef Z_MIN_PROBE_PIN 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define Z_MIN_PROBE_PIN  30 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Steppers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define X_STEP_PIN         49 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define X_DIR_PIN          13 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define X_ENABLE_PIN       48 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define Y_STEP_PIN         11 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define Y_DIR_PIN           9 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define Y_ENABLE_PIN       12 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define Z_STEP_PIN          7 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define Z_DIR_PIN           6 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define Z_ENABLE_PIN        8 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define E0_STEP_PIN        40 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define E0_DIR_PIN         41 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define E0_ENABLE_PIN      37 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define E1_STEP_PIN        18 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define E1_DIR_PIN         19 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define E1_ENABLE_PIN      38 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define E2_STEP_PIN        43 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define E2_DIR_PIN         47 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define E2_ENABLE_PIN      42 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Temperature Sensors
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define TEMP_0_PIN          3    // Analog Input
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define TEMP_1_PIN          2    // Analog Input
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define TEMP_2_PIN          1    // Analog Input
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define TEMP_BED_PIN        0    // Analog Input
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Heaters / Fans
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define HEATER_0_PIN       45  // 12V PWM1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define HEATER_1_PIN       46  // 12V PWM2
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define HEATER_2_PIN       17  // 12V PWM3
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define HEATER_BED_PIN     44  // DOUBLE 12V PWM
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define FAN_PIN            16  // 5V PWM
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Misc. Functions
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define PS_ON_PIN          10  // Set to -1 if using a manual switch on the PWRSW Connector
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define SLEEP_WAKE_PIN     26  // This feature still needs work
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define PHOTOGRAPH_PIN     29 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// LCD / Controller
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define BEEPER_PIN         36 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# if ENABLED(RA_CONTROL_PANEL) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define SDSS             53 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # define SD_DETECT_PIN    28 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define BTN_EN1          14 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define BTN_EN2          39 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # define BTN_ENC          15 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif  // RA_CONTROL_PANEL
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# if ENABLED(RA_DISCO) 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  // variables for which pins the TLC5947 is using
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define TLC_CLOCK_PIN    25 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define TLC_BLANK_PIN    23 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define TLC_XLAT_PIN     22 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define TLC_DATA_PIN     24 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  // We also need to define pin to port number mapping for the 2560 to match the pins listed above. If you change the TLC pins, update this as well per the 2560 datasheet!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  // This currently only works with the RA Board.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define TLC_CLOCK_BIT 3  // bit 3 on port A
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define TLC_CLOCK_PORT &PORTA  // bit 3 on port A
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # define TLC_BLANK_BIT 1  // bit 1 on port A
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define TLC_BLANK_PORT &PORTA  // bit 1 on port A
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # define TLC_DATA_BIT 2  // bit 2 on port A
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define TLC_DATA_PORT &PORTA  // bit 2 on port A
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # define TLC_XLAT_BIT 0  // bit 0 on port A
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define TLC_XLAT_PORT &PORTA  // bit 0 on port A
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  // change this to match your situation. Lots of TLCs takes up the arduino SRAM very quickly, so be careful
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  // Leave it at at least 1 if you have enabled RA_LIGHTING
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  // The number of TLC5947 boards chained together for use with the animation, additional ones will repeat the animation on them, but are not individually addressable and mimic those before them. You can leave the default at 2 even if you only have 1 TLC5947 module.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define NUM_TLCS 2 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  // These TRANS_ARRAY values let you change the order the LEDs on the lighting modules will animate for chase functions.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  // Modify them according to your specific situation.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  // NOTE: the array should be 8 long for every TLC you have. These defaults assume (2) TLCs.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # define TRANS_ARRAY {0, 1, 2, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10, 9, 8}  //forwards
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  //#define TRANS_ARRAY {7, 6, 5, 4, 3, 2, 1, 0, 8, 9, 10, 11, 12, 13, 14, 15} //backwards
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif  // RA_DISCO