/** * Marlin 3D Printer Firmware * Copyright (c) 2020 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 . * */ #pragma once /** * AGCM4 with RAMPS v1.4.4 pin assignments */ #if NOT_TARGET(ARDUINO_GRAND_CENTRAL_M4) #error "Oops! Select 'Adafruit Grand Central M4' in 'Tools > Board.'" #endif #ifndef BOARD_INFO_NAME #define BOARD_INFO_NAME "AGCM4 RAMPS 1.4.4" #endif // // Servos // #define SERVO0_PIN 11 #define SERVO1_PIN 6 #define SERVO2_PIN 5 #define SERVO3_PIN 4 // // EEPROM // //#define QSPI_EEPROM // Use AGCM4 onboard QSPI EEPROM (Uses 4K of RAM) #define I2C_EEPROM // EEPROM on I2C-0 #define MARLIN_EEPROM_SIZE 0x8000 // 32K (24lc256) // // Limit Switches // #define X_MIN_PIN 3 #define X_MAX_PIN 2 #define Y_MIN_PIN 14 #define Y_MAX_PIN 15 #define Z_MIN_PIN 18 #define Z_MAX_PIN 19 // // Z Probe (when not Z_MIN_PIN) // #ifndef Z_MIN_PROBE_PIN #define Z_MIN_PROBE_PIN 18 #endif // // Steppers // #define X_STEP_PIN 67 // Mega/Due:54 - AGCM4:67 #define X_DIR_PIN 68 // Mega/Due:55 - AGCM4:68 #define X_ENABLE_PIN 38 #ifndef X_CS_PIN #define X_CS_PIN 47 #endif #define Y_STEP_PIN 73 // Mega/Due:60 - AGCM4:73 #define Y_DIR_PIN 74 // Mega/Due:61 - AGCM4:74 #define Y_ENABLE_PIN 69 // Mega/Due:56 - AGCM4:69 #ifndef Y_CS_PIN #define Y_CS_PIN 45 #endif #define Z_STEP_PIN 46 #define Z_DIR_PIN 48 #define Z_ENABLE_PIN 54 // Mega/Due:62 - AGCM4:54 #ifndef Z_CS_PIN #define Z_CS_PIN 32 #endif #define Z2_STEP_PIN 36 #define Z2_DIR_PIN 34 #define Z2_ENABLE_PIN 30 #ifndef Z2_CS_PIN #define Z2_CS_PIN 22 #endif #define E0_STEP_PIN 26 #define E0_DIR_PIN 28 #define E0_ENABLE_PIN 24 #ifndef E0_CS_PIN #define E0_CS_PIN 43 #endif // // Temperature Sensors // #define TEMP_0_PIN 13 #define TEMP_BED_PIN 14 #define TEMP_CHAMBER_PIN 15 // // Heaters / Fans // #define HEATER_0_PIN 10 #define HEATER_BED_PIN 8 #define FAN_PIN 9 #define FAN1_PIN 7 #define FAN2_PIN 12 // // Misc. Functions // #define SDSS 53 #define LED_PIN 13 #ifndef FILWIDTH_PIN #define FILWIDTH_PIN 5 // Analog Input on AUX2 #endif #ifndef FIL_RUNOUT_PIN #define FIL_RUNOUT_PIN 70 #endif #ifndef PS_ON_PIN #define PS_ON_PIN 39 #endif #if ENABLED(CASE_LIGHT_ENABLE) && !defined(CASE_LIGHT_PIN) && !defined(SPINDLE_LASER_ENA_PIN) #if NUM_SERVOS <= 1 // Prefer the servo connector #define CASE_LIGHT_PIN 6 // Hardware PWM #endif #endif // // M3/M4/M5 - Spindle/Laser Control // #if HAS_CUTTER && !defined(SPINDLE_LASER_ENA_PIN) #if !NUM_SERVOS // Use servo connector if possible #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM #define SPINDLE_DIR_PIN 5 #else #error "No auto-assignable Spindle/Laser pins available." #endif #endif // // TMC software SPI // #if ENABLED(TMC_USE_SW_SPI) #ifndef TMC_SW_MOSI #define TMC_SW_MOSI 58 // Mega/Due:66 - AGCM4:58 #endif #ifndef TMC_SW_MISO #define TMC_SW_MISO 44 #endif #ifndef TMC_SW_SCK #define TMC_SW_SCK 56 // Mega/Due:64 - AGCM4:56 #endif #endif #if HAS_TMC_UART /** * TMC2208/TMC2209 stepper drivers * * Hardware serial communication ports. * If undefined software serial is used according to the pins below */ //#define X_HARDWARE_SERIAL Serial1 //#define X2_HARDWARE_SERIAL Serial1 //#define Y_HARDWARE_SERIAL Serial1 //#define Y2_HARDWARE_SERIAL Serial1 //#define Z_HARDWARE_SERIAL Serial1 //#define Z2_HARDWARE_SERIAL Serial1 //#define E0_HARDWARE_SERIAL Serial1 //#define E1_HARDWARE_SERIAL Serial1 //#define E2_HARDWARE_SERIAL Serial1 //#define E3_HARDWARE_SERIAL Serial1 //#define E4_HARDWARE_SERIAL Serial1 // // Software serial // #ifndef X_SERIAL_TX_PIN #define X_SERIAL_TX_PIN 47 #endif #ifndef X_SERIAL_RX_PIN #define X_SERIAL_RX_PIN 47 #endif #ifndef X2_SERIAL_TX_PIN #define X2_SERIAL_TX_PIN -1 #endif #ifndef X2_SERIAL_RX_PIN #define X2_SERIAL_RX_PIN -1 #endif #ifndef Y_SERIAL_TX_PIN #define Y_SERIAL_TX_PIN 45 #endif #ifndef Y_SERIAL_RX_PIN #define Y_SERIAL_RX_PIN 45 #endif #ifndef Y2_SERIAL_TX_PIN #define Y2_SERIAL_TX_PIN -1 #endif #ifndef Y2_SERIAL_RX_PIN #define Y2_SERIAL_RX_PIN -1 #endif #ifndef Z_SERIAL_TX_PIN #define Z_SERIAL_TX_PIN 32 #endif #ifndef Z_SERIAL_RX_PIN #define Z_SERIAL_RX_PIN 32 #endif #ifndef Z2_SERIAL_TX_PIN #define Z2_SERIAL_TX_PIN 22 #endif #ifndef Z2_SERIAL_RX_PIN #define Z2_SERIAL_RX_PIN 22 #endif #ifndef E0_SERIAL_TX_PIN #define E0_SERIAL_TX_PIN 43 #endif #ifndef E0_SERIAL_RX_PIN #define E0_SERIAL_RX_PIN 43 #endif #ifndef E1_SERIAL_TX_PIN #define E1_SERIAL_TX_PIN -1 #endif #ifndef E1_SERIAL_RX_PIN #define E1_SERIAL_RX_PIN -1 #endif #ifndef E2_SERIAL_TX_PIN #define E2_SERIAL_TX_PIN -1 #endif #ifndef E2_SERIAL_RX_PIN #define E2_SERIAL_RX_PIN -1 #endif #ifndef E3_SERIAL_TX_PIN #define E3_SERIAL_TX_PIN -1 #endif #ifndef E3_SERIAL_RX_PIN #define E3_SERIAL_RX_PIN -1 #endif #ifndef E4_SERIAL_TX_PIN #define E4_SERIAL_TX_PIN -1 #endif #ifndef E4_SERIAL_RX_PIN #define E4_SERIAL_RX_PIN -1 #endif #ifndef E5_SERIAL_TX_PIN #define E5_SERIAL_TX_PIN -1 #endif #ifndef E5_SERIAL_RX_PIN #define E5_SERIAL_RX_PIN -1 #endif #ifndef E6_SERIAL_TX_PIN #define E6_SERIAL_TX_PIN -1 #endif #ifndef E6_SERIAL_RX_PIN #define E6_SERIAL_RX_PIN -1 #endif #ifndef E7_SERIAL_TX_PIN #define E7_SERIAL_TX_PIN -1 #endif #ifndef E7_SERIAL_RX_PIN #define E7_SERIAL_RX_PIN -1 #endif #endif ////////////////////////// // LCDs and Controllers // ////////////////////////// #if HAS_WIRED_LCD // // LCD Display output pins // #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) // TO TEST //#define LCD_PINS_RS 49 // CS chip select /SS chip slave select //#define LCD_PINS_ENABLE 51 // SID (MOSI) //#define LCD_PINS_D4 52 // SCK (CLK) clock #elif BOTH(IS_NEWPANEL, PANEL_ONE) // TO TEST //#define LCD_PINS_RS 40 //#define LCD_PINS_ENABLE 42 //#define LCD_PINS_D4 57 // Mega/Due:65 - AGCM4:57 //#define LCD_PINS_D5 58 // Mega/Due:66 - AGCM4:58 //#define LCD_PINS_D6 44 //#define LCD_PINS_D7 56 // Mega/Due:64 - AGCM4:56 #else #if ENABLED(CR10_STOCKDISPLAY) // TO TEST //#define LCD_PINS_RS 27 //#define LCD_PINS_ENABLE 29 //#define LCD_PINS_D4 25 #if !IS_NEWPANEL // TO TEST //#define BEEPER_PIN 37 #endif #elif ENABLED(ZONESTAR_LCD) // TO TEST //#define LCD_PINS_RS 56 // Mega/Due:64 - AGCM4:56 //#define LCD_PINS_ENABLE 44 //#define LCD_PINS_D4 55 // Mega/Due:63 - AGCM4:55 //#define LCD_PINS_D5 40 //#define LCD_PINS_D6 42 //#define LCD_PINS_D7 57 // Mega/Due:65 - AGCM4:57 #else #if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306) // TO TEST //#define LCD_PINS_DC 25 // Set as output on init //#define LCD_PINS_RS 27 // Pull low for 1s to init // DOGM SPI LCD Support //#define DOGLCD_CS 16 //#define DOGLCD_MOSI 17 //#define DOGLCD_SCK 23 //#define DOGLCD_A0 LCD_PINS_DC #else #define LCD_PINS_RS 16 #define LCD_PINS_ENABLE 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 #endif #define LCD_PINS_D7 29 #if !IS_NEWPANEL #define BEEPER_PIN 33 #endif #endif #if !IS_NEWPANEL // Buttons attached to a shift register // Not wired yet //#define SHIFT_CLK_PIN 38 //#define SHIFT_LD_PIN 42 //#define SHIFT_OUT_PIN 40 //#define SHIFT_EN_PIN 17 #endif #endif // // LCD Display input pins // #if IS_NEWPANEL #if IS_RRD_SC #define BEEPER_PIN 37 #if ENABLED(CR10_STOCKDISPLAY) // TO TEST //#define BTN_EN1 17 //#define BTN_EN2 23 #else #define BTN_EN1 31 #define BTN_EN2 33 #endif #define BTN_ENC 35 #ifndef SD_DETECT_PIN #define SD_DETECT_PIN 49 #endif #define KILL_PIN 41 #if ENABLED(BQ_LCD_SMART_CONTROLLER) // TO TEST //#define LCD_BACKLIGHT_PIN 39 #endif #elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD) // TO TEST //#define BTN_EN1 56 // Mega/Due:64 - AGCM4:56 //#define BTN_EN2 72 // Mega/Due:59 - AGCM4:72 //#define BTN_ENC 55 //#define SD_DETECT_PIN 42 #elif ENABLED(LCD_I2C_PANELOLU2) // TO TEST //#define BTN_EN1 47 //#define BTN_EN2 43 //#define BTN_ENC 32 //#define LCD_SDSS SDSS //#define KILL_PIN 41 #elif ENABLED(LCD_I2C_VIKI) // TO TEST //#define BTN_EN1 40 // https://files.panucatt.com/datasheets/viki_wiring_diagram.pdf explains 40/42. //#define BTN_EN2 42 //#define BTN_ENC -1 //#define LCD_SDSS SDSS //#define SD_DETECT_PIN 49 #elif ANY(VIKI2, miniVIKI) // TO TEST //#define DOGLCD_CS 45 //#define DOGLCD_A0 44 //#define LCD_SCREEN_ROT_180 //#define BEEPER_PIN 33 //#define STAT_LED_RED_PIN 32 //#define STAT_LED_BLUE_PIN 35 //#define BTN_EN1 22 //#define BTN_EN2 7 //#define BTN_ENC 39 //#define SD_DETECT_PIN -1 // Pin 49 for display SD interface, 72 for easy adapter board //#define KILL_PIN 31 #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) // TO TEST //#define DOGLCD_CS 29 //#define DOGLCD_A0 27 //#define BEEPER_PIN 23 //#define LCD_BACKLIGHT_PIN 33 //#define BTN_EN1 35 //#define BTN_EN2 37 //#define BTN_ENC 31 //#define LCD_SDSS SDSS //#define SD_DETECT_PIN 49 //#define KILL_PIN 41 #elif EITHER(MKS_MINI_12864, FYSETC_MINI_12864) // TO TEST //#define BEEPER_PIN 37 //#define BTN_ENC 35 //#define SD_DETECT_PIN 49 //#ifndef KILL_PIN // #define KILL_PIN 41 //#endif #if ENABLED(MKS_MINI_12864) // TO TEST //#define DOGLCD_A0 27 //#define DOGLCD_CS 25 // GLCD features // Uncomment screen orientation //#define LCD_SCREEN_ROT_90 //#define LCD_SCREEN_ROT_180 //#define LCD_SCREEN_ROT_270 // not connected to a pin //#define LCD_BACKLIGHT_PIN 57 // backlight LED on A11/D? (Mega/Due:65 - AGCM4:57) //#define BTN_EN1 31 //#define BTN_EN2 33 #elif ENABLED(FYSETC_MINI_12864) // From https://wiki.fysetc.com/Mini12864_Panel/?fbclid=IwAR1FyjuNdVOOy9_xzky3qqo_WeM5h-4gpRnnWhQr_O1Ef3h0AFnFXmCehK8 // TO TEST //#define DOGLCD_A0 16 //#define DOGLCD_CS 17 //#define BTN_EN1 33 //#define BTN_EN2 31 //#define FORCE_SOFT_SPI // Use this if default of hardware SPI causes display problems // results in LCD soft SPI mode 3, SD soft SPI mode 0 //#define LCD_RESET_PIN 23 // Must be high or open for LCD to operate normally. #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN // TO TEST //#define RGB_LED_R_PIN 25 #endif #ifndef RGB_LED_G_PIN // TO TEST //#define RGB_LED_G_PIN 27 #endif #ifndef RGB_LED_B_PIN // TO TEST //#define RGB_LED_B_PIN 29 #endif #elif ENABLED(FYSETC_MINI_12864_2_1) // TO TEST //#define NEOPIXEL_PIN 25 #endif #endif #elif ENABLED(MINIPANEL) // TO TEST //#define BEEPER_PIN 42 // not connected to a pin //#define LCD_BACKLIGHT_PIN 57 // backlight LED on A11/D? (Mega/Due:65 - AGCM4:57) //#define DOGLCD_A0 44 //#define DOGLCD_CS 58 // Mega/Due:66 - AGCM4:58 // GLCD features // Uncomment screen orientation //#define LCD_SCREEN_ROT_90 //#define LCD_SCREEN_ROT_180 //#define LCD_SCREEN_ROT_270 //#define BTN_EN1 40 //#define BTN_EN2 55 // Mega/Due:63 - AGCM4:55 //#define BTN_ENC 72 // Mega/Due:59 - AGCM4:72 //#define SD_DETECT_PIN 49 //#define KILL_PIN 56 // Mega/Due:64 - AGCM4:56 #elif ENABLED(ZONESTAR_LCD) // TO TEST //#define ADC_KEYPAD_PIN 12 #elif ENABLED(AZSMZ_12864) // TO TEST #else // Beeper on AUX-4 //#define BEEPER_PIN 33 // Buttons are directly attached to AUX-2 #if IS_RRW_KEYPAD // TO TEST //#define SHIFT_OUT_PIN 40 //#define SHIFT_CLK_PIN 44 //#define SHIFT_LD_PIN 42 //#define BTN_EN1 56 // Mega/Due:64 - AGCM4:56 //#define BTN_EN2 72 // Mega/Due:59 - AGCM4:72 //#define BTN_ENC 55 // Mega/Due:63 - AGCM4:55 #elif ENABLED(PANEL_ONE) // TO TEST //#define BTN_EN1 72 // AUX2 PIN 3 (Mega/Due:59 - AGCM4:72) //#define BTN_EN2 55 // AUX2 PIN 4 (Mega/Due:63 - AGCM4:55) //#define BTN_ENC 49 // AUX3 PIN 7 #else // TO TEST //#define BTN_EN1 37 //#define BTN_EN2 35 //#define BTN_ENC 31 #endif #if ENABLED(G3D_PANEL) // TO TEST //#define SD_DETECT_PIN 49 //#define KILL_PIN 41 #endif #endif #endif // IS_NEWPANEL #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder #endif #endif // HAS_WIRED_LCD // // SD Support // #ifndef SDCARD_CONNECTION #define SDCARD_CONNECTION ONBOARD #endif #if SD_CONNECTION_IS(ONBOARD) #undef SDSS #define SDSS 83 #undef SD_DETECT_PIN #define SD_DETECT_PIN 95 #endif