commit
92ebb7f4c8
@ -33,7 +33,7 @@ rambo.build.variant=rambo
|
||||
########################################
|
||||
sanguino.name=Sanguino
|
||||
|
||||
sanguino.upload.tool=ardunio:avrdude
|
||||
sanguino.upload.tool=arduino:avrdude
|
||||
sanguino.upload.protocol=stk500
|
||||
sanguino.upload.maximum_size=131072
|
||||
sanguino.upload.speed=57600
|
||||
|
@ -5,16 +5,9 @@
|
||||
#include "Marlin.h"
|
||||
#ifdef BLINKM
|
||||
|
||||
#if (ARDUINO >= 100)
|
||||
# include "Arduino.h"
|
||||
#else
|
||||
# include "WProgram.h"
|
||||
#endif
|
||||
|
||||
#include "BlinkM.h"
|
||||
|
||||
void SendColors(byte red, byte grn, byte blu)
|
||||
{
|
||||
void SendColors(byte red, byte grn, byte blu) {
|
||||
Wire.begin();
|
||||
Wire.beginTransmission(0x09);
|
||||
Wire.write('o'); //to disable ongoing script, only needs to be used once
|
||||
|
@ -2,13 +2,12 @@
|
||||
BlinkM.h
|
||||
Library header file for BlinkM library
|
||||
*/
|
||||
#if (ARDUINO >= 100)
|
||||
# include "Arduino.h"
|
||||
#if ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#else
|
||||
# include "WProgram.h"
|
||||
#include "WProgram.h"
|
||||
#endif
|
||||
|
||||
#include "Wire.h"
|
||||
|
||||
void SendColors(byte red, byte grn, byte blu);
|
||||
|
||||
|
@ -118,10 +118,15 @@ Here are some standard links for getting your machine calibrated:
|
||||
// 1010 is Pt1000 with 1k pullup (non standard)
|
||||
// 147 is Pt100 with 4k7 pullup
|
||||
// 110 is Pt100 with 1k pullup (non standard)
|
||||
// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below.
|
||||
// Use it for Testing or Development purposes. NEVER for production machine.
|
||||
// #define DUMMY_THERMISTOR_998_VALUE 25
|
||||
// #define DUMMY_THERMISTOR_999_VALUE 100
|
||||
|
||||
#define TEMP_SENSOR_0 -1
|
||||
#define TEMP_SENSOR_1 -1
|
||||
#define TEMP_SENSOR_2 0
|
||||
#define TEMP_SENSOR_3 0
|
||||
#define TEMP_SENSOR_BED 0
|
||||
|
||||
// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
|
||||
@ -139,6 +144,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MINTEMP 5
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_3_MINTEMP 5
|
||||
#define BED_MINTEMP 5
|
||||
|
||||
// When temperature exceeds max temp, your heater will be switched off.
|
||||
@ -147,6 +153,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MAXTEMP 275
|
||||
#define HEATER_1_MAXTEMP 275
|
||||
#define HEATER_2_MAXTEMP 275
|
||||
#define HEATER_3_MAXTEMP 275
|
||||
#define BED_MAXTEMP 150
|
||||
|
||||
// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
|
||||
@ -323,11 +330,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
// Disable max endstops for compatibility with endstop checking routine
|
||||
#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
#endif
|
||||
|
||||
// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
|
||||
#define X_ENABLE_ON 0
|
||||
#define Y_ENABLE_ON 0
|
||||
@ -341,12 +343,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DISABLE_E false // For all extruders
|
||||
#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
|
||||
|
||||
#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false
|
||||
#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
|
||||
// ENDSTOP SETTINGS:
|
||||
// Sets direction of endstops when homing; 1=MAX, -1=MIN
|
||||
@ -425,9 +428,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
|
||||
// these are the offsets to the probe relative to the extruder tip (Hotend - Probe)
|
||||
// X and Y offsets must be integers
|
||||
#define X_PROBE_OFFSET_FROM_EXTRUDER -25
|
||||
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29
|
||||
#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35
|
||||
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // -left +right
|
||||
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // -front +behind
|
||||
#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // -below (always!)
|
||||
|
||||
#define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance.
|
||||
// Be sure you have this distance over your Z_MAX_POS in case
|
||||
@ -582,10 +585,20 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
//#define PANEL_ONE
|
||||
|
||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||
//#define MAKRPANEL
|
||||
|
||||
// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
|
||||
// http://panucatt.com
|
||||
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
|
||||
//#define VIKI2
|
||||
//#define miniVIKI
|
||||
|
||||
// The RepRapDiscount Smart Controller (white PCB)
|
||||
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
|
||||
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
@ -619,6 +632,26 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DEFAULT_LCD_CONTRAST 17
|
||||
#endif
|
||||
|
||||
#if defined(miniVIKI) || defined(VIKI2)
|
||||
#define ULTRA_LCD //general LCD support, also 16x2
|
||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
|
||||
#ifdef miniVIKI
|
||||
#define DEFAULT_LCD_CONTRAST 95
|
||||
#else
|
||||
#define DEFAULT_LCD_CONTRAST 40
|
||||
#endif
|
||||
|
||||
#define ENCODER_PULSES_PER_STEP 4
|
||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||
#endif
|
||||
|
||||
#if defined (PANEL_ONE)
|
||||
#define SDSUPPORT
|
||||
#define ULTIMAKERCONTROLLER
|
||||
#endif
|
||||
|
||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef CONFIG_STORE_H
|
||||
#define CONFIG_STORE_H
|
||||
#ifndef CONFIGURATIONSTORE_H
|
||||
#define CONFIGURATIONSTORE_H
|
||||
|
||||
#include "Configuration.h"
|
||||
|
||||
@ -19,4 +19,4 @@ void Config_ResetDefault();
|
||||
FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); }
|
||||
#endif
|
||||
|
||||
#endif // __CONFIG_STORE_H
|
||||
#endif //CONFIGURATIONSTORE_H
|
||||
|
@ -284,6 +284,11 @@
|
||||
//=============================Additional Features===========================
|
||||
//===========================================================================
|
||||
|
||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
||||
|
@ -14,10 +14,14 @@
|
||||
// it is a Russian alphabet translation
|
||||
// except 0401 --> 0xa2 = ╗, 0451 --> 0xb5
|
||||
const PROGMEM uint8_t utf_recode[] =
|
||||
{ 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4,0xa5,0xa6,0x4b,0xa7,0x4d,0x48,0x4f,
|
||||
0xa8,0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab,0xac,0xe2,0xad,0xae,0x62,0xaf,0xb0,0xb1,
|
||||
0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,
|
||||
0xbe,0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0,0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7
|
||||
{ 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4,
|
||||
0xa5,0xa6,0x4b,0xa7,0x4d,0x48,0x4f,0xa8,
|
||||
0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab,
|
||||
0xac,0xe2,0xad,0xae,0x62,0xaf,0xb0,0xb1,
|
||||
0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7,
|
||||
0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,0xbe,
|
||||
0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0,
|
||||
0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7
|
||||
};
|
||||
|
||||
// When the display powers up, it is configured as follows:
|
||||
|
@ -180,8 +180,8 @@ void manage_inactivity(bool ignore_stepper_queue=false);
|
||||
#define disable_e3() /* nothing */
|
||||
#endif
|
||||
|
||||
enum AxisEnum {X_AXIS=0, Y_AXIS=1, Z_AXIS=2, E_AXIS=3, X_HEAD=4, Y_HEAD=5};
|
||||
|
||||
enum AxisEnum {X_AXIS=0, Y_AXIS=1, Z_AXIS=2, E_AXIS=3, X_HEAD=4, Y_HEAD=5};
|
||||
//X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship between X_AXIS and X Head movement, like CoreXY bots.
|
||||
|
||||
void FlushSerialRequestResend();
|
||||
void ClearToSend();
|
||||
@ -201,8 +201,9 @@ void Stop();
|
||||
|
||||
bool IsStopped();
|
||||
|
||||
void enquecommand(const char *cmd); //put an ASCII command at the end of the current buffer.
|
||||
void enquecommand_P(const char *cmd); //put an ASCII command at the end of the current buffer, read from flash
|
||||
bool enquecommand(const char *cmd); //put a single ASCII command at the end of the current buffer or return false when it is full
|
||||
void enquecommands_P(const char *cmd); //put one or many ASCII commands at the end of the current buffer, read from flash
|
||||
|
||||
void prepare_arc_move(char isclockwise);
|
||||
void clamp_to_software_endstops(float target[3]);
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -50,10 +50,11 @@
|
||||
#define BOARD_LEAPFROG 999 // Leapfrog
|
||||
#define BOARD_WITBOX 41 // bq WITBOX
|
||||
#define BOARD_HEPHESTOS 42 // bq Prusa i3 Hephestos
|
||||
#define BOARD_BAM_DICE 401 // 2PrintBeta BAM&DICE with STK drivers
|
||||
#define BOARD_BAM_DICE_DUE 402 // 2PrintBeta BAM&DICE Due with STK drivers
|
||||
|
||||
#define BOARD_99 99 // This is in pins.h but...?
|
||||
|
||||
#define MB(board) (MOTHERBOARD==BOARD_##board)
|
||||
#define IS_RAMPS (MB(RAMPS_OLD) || MB(RAMPS_13_EFB) || MB(RAMPS_13_EEB) || MB(RAMPS_13_EFF) || MB(RAMPS_13_EEF))
|
||||
|
||||
#endif //__BOARDS_H
|
||||
|
@ -7,476 +7,382 @@
|
||||
|
||||
#ifdef SDSUPPORT
|
||||
|
||||
CardReader::CardReader() {
|
||||
filesize = 0;
|
||||
sdpos = 0;
|
||||
sdprinting = false;
|
||||
cardOK = false;
|
||||
saving = false;
|
||||
logging = false;
|
||||
workDirDepth = 0;
|
||||
file_subcall_ctr = 0;
|
||||
memset(workDirParents, 0, sizeof(workDirParents));
|
||||
|
||||
|
||||
CardReader::CardReader()
|
||||
{
|
||||
filesize = 0;
|
||||
sdpos = 0;
|
||||
sdprinting = false;
|
||||
cardOK = false;
|
||||
saving = false;
|
||||
logging = false;
|
||||
autostart_atmillis=0;
|
||||
workDirDepth = 0;
|
||||
file_subcall_ctr=0;
|
||||
memset(workDirParents, 0, sizeof(workDirParents));
|
||||
|
||||
autostart_stilltocheck=true; //the SD start is delayed, because otherwise the serial cannot answer fast enough to make contact with the host software.
|
||||
autostart_index=0;
|
||||
autostart_stilltocheck = true; //the SD start is delayed, because otherwise the serial cannot answer fast enough to make contact with the host software.
|
||||
autostart_index = 0;
|
||||
//power to SD reader
|
||||
#if SDPOWER > -1
|
||||
SET_OUTPUT(SDPOWER);
|
||||
WRITE(SDPOWER,HIGH);
|
||||
OUT_WRITE(SDPOWER, HIGH);
|
||||
#endif //SDPOWER
|
||||
|
||||
autostart_atmillis=millis()+5000;
|
||||
|
||||
autostart_atmillis = millis() + 5000;
|
||||
}
|
||||
|
||||
char *createFilename(char *buffer,const dir_t &p) //buffer>12characters
|
||||
{
|
||||
char *pos=buffer;
|
||||
for (uint8_t i = 0; i < 11; i++)
|
||||
{
|
||||
if (p.name[i] == ' ')continue;
|
||||
if (i == 8)
|
||||
{
|
||||
*pos++='.';
|
||||
}
|
||||
*pos++=p.name[i];
|
||||
char *createFilename(char *buffer, const dir_t &p) { //buffer > 12characters
|
||||
char *pos = buffer;
|
||||
for (uint8_t i = 0; i < 11; i++) {
|
||||
if (p.name[i] == ' ') continue;
|
||||
if (i == 8) *pos++ = '.';
|
||||
*pos++ = p.name[i];
|
||||
}
|
||||
*pos++=0;
|
||||
*pos++ = 0;
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/)
|
||||
{
|
||||
void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/) {
|
||||
dir_t p;
|
||||
uint8_t cnt=0;
|
||||
|
||||
while (parent.readDir(p, longFilename) > 0)
|
||||
{
|
||||
if( DIR_IS_SUBDIR(&p) && lsAction!=LS_Count && lsAction!=LS_GetFilename) // hence LS_SerialPrint
|
||||
{
|
||||
uint8_t cnt = 0;
|
||||
|
||||
while (parent.readDir(p, longFilename) > 0) {
|
||||
if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { // hence LS_SerialPrint
|
||||
char path[FILENAME_LENGTH*2];
|
||||
char lfilename[FILENAME_LENGTH];
|
||||
createFilename(lfilename,p);
|
||||
|
||||
path[0]=0;
|
||||
if(strlen(prepend)==0) //avoid leading / if already in prepend
|
||||
{
|
||||
strcat(path,"/");
|
||||
}
|
||||
strcat(path,prepend);
|
||||
strcat(path,lfilename);
|
||||
strcat(path,"/");
|
||||
|
||||
createFilename(lfilename, p);
|
||||
|
||||
path[0] = 0;
|
||||
if (prepend[0] == 0) strcat(path, "/"); //avoid leading / if already in prepend
|
||||
strcat(path, prepend);
|
||||
strcat(path, lfilename);
|
||||
strcat(path, "/");
|
||||
|
||||
//Serial.print(path);
|
||||
|
||||
|
||||
SdFile dir;
|
||||
if(!dir.open(parent,lfilename, O_READ))
|
||||
{
|
||||
if(lsAction==LS_SerialPrint)
|
||||
{
|
||||
if (!dir.open(parent, lfilename, O_READ)) {
|
||||
if (lsAction == LS_SerialPrint) {
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLN(MSG_SD_CANT_OPEN_SUBDIR);
|
||||
SERIAL_ECHOLN(lfilename);
|
||||
}
|
||||
}
|
||||
lsDive(path,dir);
|
||||
lsDive(path, dir);
|
||||
//close done automatically by destructor of SdFile
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
char pn0 = p.name[0];
|
||||
if (pn0 == DIR_NAME_FREE) break;
|
||||
if (pn0 == DIR_NAME_DELETED || pn0 == '.' || pn0 == '_') continue;
|
||||
if (pn0 == DIR_NAME_DELETED || pn0 == '.') continue;
|
||||
char lf0 = longFilename[0];
|
||||
if (lf0 == '.' || lf0 == '_') continue;
|
||||
if (lf0 == '.') continue;
|
||||
|
||||
if (!DIR_IS_FILE_OR_SUBDIR(&p)) continue;
|
||||
filenameIsDir=DIR_IS_SUBDIR(&p);
|
||||
|
||||
|
||||
if(!filenameIsDir)
|
||||
{
|
||||
if(p.name[8]!='G') continue;
|
||||
if(p.name[9]=='~') continue;
|
||||
}
|
||||
//if(cnt++!=nr) continue;
|
||||
createFilename(filename,p);
|
||||
if(lsAction==LS_SerialPrint)
|
||||
{
|
||||
|
||||
filenameIsDir = DIR_IS_SUBDIR(&p);
|
||||
|
||||
if (!filenameIsDir && (p.name[8] != 'G' || p.name[9] == '~')) continue;
|
||||
|
||||
//if (cnt++ != nr) continue;
|
||||
createFilename(filename, p);
|
||||
if (lsAction == LS_SerialPrint) {
|
||||
SERIAL_PROTOCOL(prepend);
|
||||
SERIAL_PROTOCOLLN(filename);
|
||||
}
|
||||
else if(lsAction==LS_Count)
|
||||
{
|
||||
else if (lsAction == LS_Count) {
|
||||
nrFiles++;
|
||||
}
|
||||
else if(lsAction==LS_GetFilename)
|
||||
{
|
||||
}
|
||||
else if (lsAction == LS_GetFilename) {
|
||||
if (match != NULL) {
|
||||
if (strcasecmp(match, filename) == 0) return;
|
||||
}
|
||||
else if (cnt == nrFiles) return;
|
||||
cnt++;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CardReader::ls()
|
||||
{
|
||||
lsAction=LS_SerialPrint;
|
||||
if(lsAction==LS_Count)
|
||||
nrFiles=0;
|
||||
|
||||
void CardReader::ls() {
|
||||
lsAction = LS_SerialPrint;
|
||||
root.rewind();
|
||||
lsDive("",root);
|
||||
lsDive("", root);
|
||||
}
|
||||
|
||||
|
||||
void CardReader::initsd()
|
||||
{
|
||||
void CardReader::initsd() {
|
||||
cardOK = false;
|
||||
if(root.isOpen())
|
||||
root.close();
|
||||
#ifdef SDSLOW
|
||||
if (!card.init(SPI_HALF_SPEED,SDSS)
|
||||
#if defined(LCD_SDSS) && (LCD_SDSS != SDSS)
|
||||
&& !card.init(SPI_HALF_SPEED,LCD_SDSS)
|
||||
if (root.isOpen()) root.close();
|
||||
|
||||
#ifdef SDSLOW
|
||||
#define SPI_SPEED SPI_HALF_SPEED
|
||||
#else
|
||||
#define SPI_SPEED SPI_FULL_SPEED
|
||||
#endif
|
||||
)
|
||||
#else
|
||||
if (!card.init(SPI_FULL_SPEED,SDSS)
|
||||
#if defined(LCD_SDSS) && (LCD_SDSS != SDSS)
|
||||
&& !card.init(SPI_FULL_SPEED,LCD_SDSS)
|
||||
#endif
|
||||
)
|
||||
#endif
|
||||
{
|
||||
|
||||
if (!card.init(SPI_SPEED,SDSS)
|
||||
#if defined(LCD_SDSS) && (LCD_SDSS != SDSS)
|
||||
&& !card.init(SPI_SPEED, LCD_SDSS)
|
||||
#endif
|
||||
) {
|
||||
//if (!card.init(SPI_HALF_SPEED,SDSS))
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLNPGM(MSG_SD_INIT_FAIL);
|
||||
}
|
||||
else if (!volume.init(&card))
|
||||
{
|
||||
else if (!volume.init(&card)) {
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLNPGM(MSG_SD_VOL_INIT_FAIL);
|
||||
}
|
||||
else if (!root.openRoot(&volume))
|
||||
{
|
||||
else if (!root.openRoot(&volume)) {
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLNPGM(MSG_SD_OPENROOT_FAIL);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
cardOK = true;
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLNPGM(MSG_SD_CARD_OK);
|
||||
}
|
||||
workDir=root;
|
||||
curDir=&root;
|
||||
workDir = root;
|
||||
curDir = &root;
|
||||
/*
|
||||
if(!workDir.openRoot(&volume))
|
||||
{
|
||||
if (!workDir.openRoot(&volume)) {
|
||||
SERIAL_ECHOLNPGM(MSG_SD_WORKDIR_FAIL);
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
void CardReader::setroot()
|
||||
{
|
||||
/*if(!workDir.openRoot(&volume))
|
||||
{
|
||||
void CardReader::setroot() {
|
||||
/*if (!workDir.openRoot(&volume)) {
|
||||
SERIAL_ECHOLNPGM(MSG_SD_WORKDIR_FAIL);
|
||||
}*/
|
||||
workDir=root;
|
||||
|
||||
curDir=&workDir;
|
||||
workDir = root;
|
||||
curDir = &workDir;
|
||||
}
|
||||
void CardReader::release()
|
||||
{
|
||||
|
||||
void CardReader::release() {
|
||||
sdprinting = false;
|
||||
cardOK = false;
|
||||
}
|
||||
|
||||
void CardReader::startFileprint()
|
||||
{
|
||||
if(cardOK)
|
||||
{
|
||||
void CardReader::startFileprint() {
|
||||
if (cardOK) {
|
||||
sdprinting = true;
|
||||
}
|
||||
}
|
||||
|
||||
void CardReader::pauseSDPrint()
|
||||
{
|
||||
if(sdprinting)
|
||||
{
|
||||
sdprinting = false;
|
||||
}
|
||||
void CardReader::pauseSDPrint() {
|
||||
if (sdprinting) sdprinting = false;
|
||||
}
|
||||
|
||||
|
||||
void CardReader::openLogFile(char* name)
|
||||
{
|
||||
void CardReader::openLogFile(char* name) {
|
||||
logging = true;
|
||||
openFile(name, false);
|
||||
}
|
||||
|
||||
void CardReader::getAbsFilename(char *t)
|
||||
{
|
||||
uint8_t cnt=0;
|
||||
*t='/';t++;cnt++;
|
||||
for(uint8_t i=0;i<workDirDepth;i++)
|
||||
{
|
||||
void CardReader::getAbsFilename(char *t) {
|
||||
uint8_t cnt = 0;
|
||||
*t = '/'; t++; cnt++;
|
||||
for (uint8_t i = 0; i < workDirDepth; i++) {
|
||||
workDirParents[i].getFilename(t); //SDBaseFile.getfilename!
|
||||
while(*t!=0 && cnt< MAXPATHNAMELENGTH)
|
||||
{t++;cnt++;} //crawl counter forward.
|
||||
while(*t && cnt < MAXPATHNAMELENGTH) { t++; cnt++; } //crawl counter forward.
|
||||
}
|
||||
if(cnt<MAXPATHNAMELENGTH-FILENAME_LENGTH)
|
||||
if (cnt < MAXPATHNAMELENGTH - FILENAME_LENGTH)
|
||||
file.getFilename(t);
|
||||
else
|
||||
t[0]=0;
|
||||
t[0] = 0;
|
||||
}
|
||||
|
||||
void CardReader::openFile(char* name,bool read, bool replace_current/*=true*/)
|
||||
{
|
||||
if(!cardOK)
|
||||
return;
|
||||
if(file.isOpen()) //replacing current file by new file, or subfile call
|
||||
{
|
||||
if(!replace_current)
|
||||
{
|
||||
if((int)file_subcall_ctr>(int)SD_PROCEDURE_DEPTH-1)
|
||||
{
|
||||
void CardReader::openFile(char* name, bool read, bool replace_current/*=true*/) {
|
||||
if (!cardOK) return;
|
||||
if (file.isOpen()) { //replacing current file by new file, or subfile call
|
||||
if (!replace_current) {
|
||||
if (file_subcall_ctr > SD_PROCEDURE_DEPTH - 1) {
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORPGM("trying to call sub-gcode files with too many levels. MAX level is:");
|
||||
SERIAL_ERRORLN(SD_PROCEDURE_DEPTH);
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPGM("SUBROUTINE CALL target:\"");
|
||||
SERIAL_ECHO(name);
|
||||
SERIAL_ECHOPGM("\" parent:\"");
|
||||
|
||||
|
||||
//store current filename and position
|
||||
getAbsFilename(filenames[file_subcall_ctr]);
|
||||
|
||||
|
||||
SERIAL_ECHO(filenames[file_subcall_ctr]);
|
||||
SERIAL_ECHOPGM("\" pos");
|
||||
SERIAL_ECHOLN(sdpos);
|
||||
filespos[file_subcall_ctr]=sdpos;
|
||||
filespos[file_subcall_ctr] = sdpos;
|
||||
file_subcall_ctr++;
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPGM("Now doing file: ");
|
||||
SERIAL_ECHOLN(name);
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
else //opening fresh file
|
||||
{
|
||||
file_subcall_ctr=0; //resetting procedure depth in case user cancels print while in procedure
|
||||
else { //opening fresh file
|
||||
file_subcall_ctr = 0; //resetting procedure depth in case user cancels print while in procedure
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPGM("Now fresh file: ");
|
||||
SERIAL_ECHOLN(name);
|
||||
}
|
||||
sdprinting = false;
|
||||
|
||||
|
||||
|
||||
SdFile myDir;
|
||||
curDir=&root;
|
||||
char *fname=name;
|
||||
|
||||
char *dirname_start,*dirname_end;
|
||||
if(name[0]=='/')
|
||||
{
|
||||
dirname_start=strchr(name,'/')+1;
|
||||
while(dirname_start>0)
|
||||
{
|
||||
dirname_end=strchr(dirname_start,'/');
|
||||
//SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start-name));
|
||||
//SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end-name));
|
||||
if(dirname_end>0 && dirname_end>dirname_start)
|
||||
{
|
||||
curDir = &root;
|
||||
char *fname = name;
|
||||
|
||||
char *dirname_start, *dirname_end;
|
||||
if (name[0] == '/') {
|
||||
dirname_start = &name[1];
|
||||
while(dirname_start > 0) {
|
||||
dirname_end = strchr(dirname_start, '/');
|
||||
//SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start - name));
|
||||
//SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end - name));
|
||||
if (dirname_end > 0 && dirname_end > dirname_start) {
|
||||
char subdirname[FILENAME_LENGTH];
|
||||
strncpy(subdirname, dirname_start, dirname_end-dirname_start);
|
||||
subdirname[dirname_end-dirname_start]=0;
|
||||
strncpy(subdirname, dirname_start, dirname_end - dirname_start);
|
||||
subdirname[dirname_end - dirname_start] = 0;
|
||||
SERIAL_ECHOLN(subdirname);
|
||||
if(!myDir.open(curDir,subdirname,O_READ))
|
||||
{
|
||||
if (!myDir.open(curDir, subdirname, O_READ)) {
|
||||
SERIAL_PROTOCOLPGM(MSG_SD_OPEN_FILE_FAIL);
|
||||
SERIAL_PROTOCOL(subdirname);
|
||||
SERIAL_PROTOCOLLNPGM(".");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
//SERIAL_ECHOLN("dive ok");
|
||||
}
|
||||
|
||||
curDir=&myDir;
|
||||
dirname_start=dirname_end+1;
|
||||
|
||||
curDir = &myDir;
|
||||
dirname_start = dirname_end + 1;
|
||||
}
|
||||
else // the reminder after all /fsa/fdsa/ is the filename
|
||||
{
|
||||
fname=dirname_start;
|
||||
//SERIAL_ECHOLN("remaider");
|
||||
else { // the remainder after all /fsa/fdsa/ is the filename
|
||||
fname = dirname_start;
|
||||
//SERIAL_ECHOLN("remainder");
|
||||
//SERIAL_ECHOLN(fname);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else //relative path
|
||||
{
|
||||
curDir=&workDir;
|
||||
else { //relative path
|
||||
curDir = &workDir;
|
||||
}
|
||||
if(read)
|
||||
{
|
||||
if (file.open(curDir, fname, O_READ))
|
||||
{
|
||||
|
||||
if (read) {
|
||||
if (file.open(curDir, fname, O_READ)) {
|
||||
filesize = file.fileSize();
|
||||
SERIAL_PROTOCOLPGM(MSG_SD_FILE_OPENED);
|
||||
SERIAL_PROTOCOL(fname);
|
||||
SERIAL_PROTOCOLPGM(MSG_SD_SIZE);
|
||||
SERIAL_PROTOCOLLN(filesize);
|
||||
sdpos = 0;
|
||||
|
||||
|
||||
SERIAL_PROTOCOLLNPGM(MSG_SD_FILE_SELECTED);
|
||||
getfilename(0, fname);
|
||||
lcd_setstatus(longFilename[0] ? longFilename : fname);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
SERIAL_PROTOCOLPGM(MSG_SD_OPEN_FILE_FAIL);
|
||||
SERIAL_PROTOCOL(fname);
|
||||
SERIAL_PROTOCOLLNPGM(".");
|
||||
}
|
||||
}
|
||||
else
|
||||
{ //write
|
||||
if (!file.open(curDir, fname, O_CREAT | O_APPEND | O_WRITE | O_TRUNC))
|
||||
{
|
||||
else { //write
|
||||
if (!file.open(curDir, fname, O_CREAT | O_APPEND | O_WRITE | O_TRUNC)) {
|
||||
SERIAL_PROTOCOLPGM(MSG_SD_OPEN_FILE_FAIL);
|
||||
SERIAL_PROTOCOL(fname);
|
||||
SERIAL_PROTOCOLLNPGM(".");
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
saving = true;
|
||||
SERIAL_PROTOCOLPGM(MSG_SD_WRITE_TO_FILE);
|
||||
SERIAL_PROTOCOLLN(name);
|
||||
lcd_setstatus(fname);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CardReader::removeFile(char* name)
|
||||
{
|
||||
if(!cardOK)
|
||||
return;
|
||||
void CardReader::removeFile(char* name) {
|
||||
if (!cardOK) return;
|
||||
|
||||
file.close();
|
||||
sdprinting = false;
|
||||
|
||||
|
||||
|
||||
SdFile myDir;
|
||||
curDir=&root;
|
||||
char *fname=name;
|
||||
|
||||
char *dirname_start,*dirname_end;
|
||||
if(name[0]=='/')
|
||||
{
|
||||
dirname_start=strchr(name,'/')+1;
|
||||
while(dirname_start>0)
|
||||
{
|
||||
dirname_end=strchr(dirname_start,'/');
|
||||
//SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start-name));
|
||||
//SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end-name));
|
||||
if(dirname_end>0 && dirname_end>dirname_start)
|
||||
{
|
||||
curDir = &root;
|
||||
char *fname = name;
|
||||
|
||||
char *dirname_start, *dirname_end;
|
||||
if (name[0] == '/') {
|
||||
dirname_start = strchr(name, '/') + 1;
|
||||
while (dirname_start > 0) {
|
||||
dirname_end = strchr(dirname_start, '/');
|
||||
//SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start - name));
|
||||
//SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end - name));
|
||||
if (dirname_end > 0 && dirname_end > dirname_start) {
|
||||
char subdirname[FILENAME_LENGTH];
|
||||
strncpy(subdirname, dirname_start, dirname_end-dirname_start);
|
||||
subdirname[dirname_end-dirname_start]=0;
|
||||
strncpy(subdirname, dirname_start, dirname_end - dirname_start);
|
||||
subdirname[dirname_end - dirname_start] = 0;
|
||||
SERIAL_ECHOLN(subdirname);
|
||||
if(!myDir.open(curDir,subdirname,O_READ))
|
||||
{
|
||||
if (!myDir.open(curDir, subdirname, O_READ)) {
|
||||
SERIAL_PROTOCOLPGM("open failed, File: ");
|
||||
SERIAL_PROTOCOL(subdirname);
|
||||
SERIAL_PROTOCOLLNPGM(".");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
//SERIAL_ECHOLN("dive ok");
|
||||
}
|
||||
|
||||
curDir=&myDir;
|
||||
dirname_start=dirname_end+1;
|
||||
|
||||
curDir = &myDir;
|
||||
dirname_start = dirname_end + 1;
|
||||
}
|
||||
else // the reminder after all /fsa/fdsa/ is the filename
|
||||
{
|
||||
fname=dirname_start;
|
||||
//SERIAL_ECHOLN("remaider");
|
||||
else { // the remainder after all /fsa/fdsa/ is the filename
|
||||
fname = dirname_start;
|
||||
//SERIAL_ECHOLN("remainder");
|
||||
//SERIAL_ECHOLN(fname);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else //relative path
|
||||
{
|
||||
curDir=&workDir;
|
||||
else { // relative path
|
||||
curDir = &workDir;
|
||||
}
|
||||
|
||||
if (file.remove(curDir, fname)) {
|
||||
SERIAL_PROTOCOLPGM("File deleted:");
|
||||
SERIAL_PROTOCOLLN(fname);
|
||||
sdpos = 0;
|
||||
}
|
||||
else {
|
||||
SERIAL_PROTOCOLPGM("Deletion failed, File: ");
|
||||
SERIAL_PROTOCOL(fname);
|
||||
SERIAL_PROTOCOLLNPGM(".");
|
||||
}
|
||||
if (file.remove(curDir, fname))
|
||||
{
|
||||
SERIAL_PROTOCOLPGM("File deleted:");
|
||||
SERIAL_PROTOCOLLN(fname);
|
||||
sdpos = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIAL_PROTOCOLPGM("Deletion failed, File: ");
|
||||
SERIAL_PROTOCOL(fname);
|
||||
SERIAL_PROTOCOLLNPGM(".");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CardReader::getStatus()
|
||||
{
|
||||
if(cardOK){
|
||||
void CardReader::getStatus() {
|
||||
if (cardOK) {
|
||||
SERIAL_PROTOCOLPGM(MSG_SD_PRINTING_BYTE);
|
||||
SERIAL_PROTOCOL(sdpos);
|
||||
SERIAL_PROTOCOLPGM("/");
|
||||
SERIAL_PROTOCOLLN(filesize);
|
||||
}
|
||||
else{
|
||||
else {
|
||||
SERIAL_PROTOCOLLNPGM(MSG_SD_NOT_PRINTING);
|
||||
}
|
||||
}
|
||||
void CardReader::write_command(char *buf)
|
||||
{
|
||||
|
||||
void CardReader::write_command(char *buf) {
|
||||
char* begin = buf;
|
||||
char* npos = 0;
|
||||
char* end = buf + strlen(buf) - 1;
|
||||
|
||||
file.writeError = false;
|
||||
if((npos = strchr(buf, 'N')) != NULL)
|
||||
{
|
||||
if ((npos = strchr(buf, 'N')) != NULL) {
|
||||
begin = strchr(npos, ' ') + 1;
|
||||
end = strchr(npos, '*') - 1;
|
||||
}
|
||||
@ -484,162 +390,129 @@ void CardReader::write_command(char *buf)
|
||||
end[2] = '\n';
|
||||
end[3] = '\0';
|
||||
file.write(begin);
|
||||
if (file.writeError)
|
||||
{
|
||||
if (file.writeError) {
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLNPGM(MSG_SD_ERR_WRITE_TO_FILE);
|
||||
}
|
||||
}
|
||||
|
||||
void CardReader::checkautostart(bool force) {
|
||||
if (!force && (!autostart_stilltocheck || autostart_atmillis < millis()))
|
||||
return;
|
||||
|
||||
void CardReader::checkautostart(bool force)
|
||||
{
|
||||
if(!force)
|
||||
{
|
||||
if(!autostart_stilltocheck)
|
||||
return;
|
||||
if(autostart_atmillis<millis())
|
||||
return;
|
||||
}
|
||||
autostart_stilltocheck=false;
|
||||
if(!cardOK)
|
||||
{
|
||||
autostart_stilltocheck = false;
|
||||
|
||||
if (!cardOK) {
|
||||
initsd();
|
||||
if(!cardOK) //fail
|
||||
return;
|
||||
if (!cardOK) return; // fail
|
||||
}
|
||||
|
||||
|
||||
char autoname[30];
|
||||
sprintf_P(autoname, PSTR("auto%i.g"), autostart_index);
|
||||
for(int8_t i=0;i<(int8_t)strlen(autoname);i++)
|
||||
autoname[i]=tolower(autoname[i]);
|
||||
for (int8_t i = 0; i < (int8_t)strlen(autoname); i++) autoname[i] = tolower(autoname[i]);
|
||||
|
||||
dir_t p;
|
||||
|
||||
root.rewind();
|
||||
|
||||
bool found=false;
|
||||
while (root.readDir(p, NULL) > 0)
|
||||
{
|
||||
for(int8_t i=0;i<(int8_t)strlen((char*)p.name);i++)
|
||||
p.name[i]=tolower(p.name[i]);
|
||||
//Serial.print((char*)p.name);
|
||||
//Serial.print(" ");
|
||||
//Serial.println(autoname);
|
||||
if(p.name[9]!='~') //skip safety copies
|
||||
if(strncmp((char*)p.name,autoname,5)==0)
|
||||
{
|
||||
char cmd[30];
|
||||
|
||||
bool found = false;
|
||||
while (root.readDir(p, NULL) > 0) {
|
||||
for (int8_t i = 0; i < (int8_t)strlen((char*)p.name); i++) p.name[i] = tolower(p.name[i]);
|
||||
if (p.name[9] != '~' && strncmp((char*)p.name, autoname, 5) == 0) {
|
||||
char cmd[30];
|
||||
sprintf_P(cmd, PSTR("M23 %s"), autoname);
|
||||
enquecommand(cmd);
|
||||
enquecommand_P(PSTR("M24"));
|
||||
found=true;
|
||||
enquecommands_P(PSTR("M24"));
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
if(!found)
|
||||
autostart_index=-1;
|
||||
if (!found)
|
||||
autostart_index = -1;
|
||||
else
|
||||
autostart_index++;
|
||||
}
|
||||
|
||||
void CardReader::closefile(bool store_location)
|
||||
{
|
||||
void CardReader::closefile(bool store_location) {
|
||||
file.sync();
|
||||
file.close();
|
||||
saving = false;
|
||||
logging = false;
|
||||
|
||||
if(store_location)
|
||||
{
|
||||
saving = logging = false;
|
||||
|
||||
if (store_location) {
|
||||
//future: store printer state, filename and position for continuing a stopped print
|
||||
// so one can unplug the printer and continue printing the next day.
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CardReader::getfilename(uint16_t nr, const char * const match/*=NULL*/)
|
||||
{
|
||||
curDir=&workDir;
|
||||
lsAction=LS_GetFilename;
|
||||
nrFiles=nr;
|
||||
/**
|
||||
* Get the name of a file in the current directory by index
|
||||
*/
|
||||
void CardReader::getfilename(uint16_t nr, const char * const match/*=NULL*/) {
|
||||
curDir = &workDir;
|
||||
lsAction = LS_GetFilename;
|
||||
nrFiles = nr;
|
||||
curDir->rewind();
|
||||
lsDive("",*curDir,match);
|
||||
|
||||
lsDive("", *curDir, match);
|
||||
}
|
||||
|
||||
uint16_t CardReader::getnrfilenames()
|
||||
{
|
||||
curDir=&workDir;
|
||||
lsAction=LS_Count;
|
||||
nrFiles=0;
|
||||
uint16_t CardReader::getnrfilenames() {
|
||||
curDir = &workDir;
|
||||
lsAction = LS_Count;
|
||||
nrFiles = 0;
|
||||
curDir->rewind();
|
||||
lsDive("",*curDir);
|
||||
lsDive("", *curDir);
|
||||
//SERIAL_ECHOLN(nrFiles);
|
||||
return nrFiles;
|
||||
}
|
||||
|
||||
void CardReader::chdir(const char * relpath)
|
||||
{
|
||||
void CardReader::chdir(const char * relpath) {
|
||||
SdFile newfile;
|
||||
SdFile *parent=&root;
|
||||
|
||||
if(workDir.isOpen())
|
||||
parent=&workDir;
|
||||
|
||||
if(!newfile.open(*parent,relpath, O_READ))
|
||||
{
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPGM(MSG_SD_CANT_ENTER_SUBDIR);
|
||||
SERIAL_ECHOLN(relpath);
|
||||
SdFile *parent = &root;
|
||||
|
||||
if (workDir.isOpen()) parent = &workDir;
|
||||
|
||||
if (!newfile.open(*parent, relpath, O_READ)) {
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPGM(MSG_SD_CANT_ENTER_SUBDIR);
|
||||
SERIAL_ECHOLN(relpath);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
if (workDirDepth < MAX_DIR_DEPTH) {
|
||||
for (int d = ++workDirDepth; d--;)
|
||||
workDirParents[d+1] = workDirParents[d];
|
||||
workDirParents[0]=*parent;
|
||||
++workDirDepth;
|
||||
for (int d = workDirDepth; d--;) workDirParents[d + 1] = workDirParents[d];
|
||||
workDirParents[0] = *parent;
|
||||
}
|
||||
workDir=newfile;
|
||||
workDir = newfile;
|
||||
}
|
||||
}
|
||||
|
||||
void CardReader::updir()
|
||||
{
|
||||
if(workDirDepth > 0)
|
||||
{
|
||||
void CardReader::updir() {
|
||||
if (workDirDepth > 0) {
|
||||
--workDirDepth;
|
||||
workDir = workDirParents[0];
|
||||
int d;
|
||||
for (int d = 0; d < workDirDepth; d++)
|
||||
workDirParents[d] = workDirParents[d+1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CardReader::printingHasFinished()
|
||||
{
|
||||
st_synchronize();
|
||||
if(file_subcall_ctr>0) //heading up to a parent file that called current as a procedure.
|
||||
{
|
||||
file.close();
|
||||
file_subcall_ctr--;
|
||||
openFile(filenames[file_subcall_ctr],true,true);
|
||||
setIndex(filespos[file_subcall_ctr]);
|
||||
startFileprint();
|
||||
}
|
||||
else
|
||||
{
|
||||
quickStop();
|
||||
file.close();
|
||||
sdprinting = false;
|
||||
if(SD_FINISHED_STEPPERRELEASE)
|
||||
{
|
||||
//finishAndDisableSteppers();
|
||||
enquecommand_P(PSTR(SD_FINISHED_RELEASECOMMAND));
|
||||
}
|
||||
autotempShutdown();
|
||||
void CardReader::printingHasFinished() {
|
||||
st_synchronize();
|
||||
if (file_subcall_ctr > 0) { // Heading up to a parent file that called current as a procedure.
|
||||
file.close();
|
||||
file_subcall_ctr--;
|
||||
openFile(filenames[file_subcall_ctr], true, true);
|
||||
setIndex(filespos[file_subcall_ctr]);
|
||||
startFileprint();
|
||||
}
|
||||
else {
|
||||
quickStop();
|
||||
file.close();
|
||||
sdprinting = false;
|
||||
if (SD_FINISHED_STEPPERRELEASE) {
|
||||
//finishAndDisableSteppers();
|
||||
enquecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
|
||||
}
|
||||
autotempShutdown();
|
||||
}
|
||||
}
|
||||
|
||||
#endif //SDSUPPORT
|
||||
|
@ -3,21 +3,21 @@
|
||||
|
||||
#ifdef SDSUPPORT
|
||||
|
||||
#define MAX_DIR_DEPTH 10
|
||||
#define MAX_DIR_DEPTH 10 // Maximum folder depth
|
||||
|
||||
#include "SdFile.h"
|
||||
enum LsAction {LS_SerialPrint,LS_Count,LS_GetFilename};
|
||||
class CardReader
|
||||
{
|
||||
enum LsAction { LS_SerialPrint, LS_Count, LS_GetFilename };
|
||||
|
||||
class CardReader {
|
||||
public:
|
||||
CardReader();
|
||||
|
||||
|
||||
void initsd();
|
||||
void write_command(char *buf);
|
||||
//files auto[0-9].g on the sd card are performed in a row
|
||||
//this is to delay autostart and hence the initialisaiton of the sd card to some seconds after the normal init, so the device is available quick after a reset
|
||||
|
||||
void checkautostart(bool x);
|
||||
void checkautostart(bool x);
|
||||
void openFile(char* name,bool read,bool replace_current=true);
|
||||
void openLogFile(char* name);
|
||||
void removeFile(char* name);
|
||||
@ -30,9 +30,8 @@ public:
|
||||
|
||||
void getfilename(uint16_t nr, const char* const match=NULL);
|
||||
uint16_t getnrfilenames();
|
||||
|
||||
|
||||
void getAbsFilename(char *t);
|
||||
|
||||
|
||||
void ls();
|
||||
void chdir(const char * relpath);
|
||||
@ -41,56 +40,52 @@ public:
|
||||
|
||||
|
||||
FORCE_INLINE bool isFileOpen() { return file.isOpen(); }
|
||||
FORCE_INLINE bool eof() { return sdpos>=filesize ;};
|
||||
FORCE_INLINE int16_t get() { sdpos = file.curPosition();return (int16_t)file.read();};
|
||||
FORCE_INLINE void setIndex(long index) {sdpos = index;file.seekSet(index);};
|
||||
FORCE_INLINE uint8_t percentDone(){if(!isFileOpen()) return 0; if(filesize) return sdpos/((filesize+99)/100); else return 0;};
|
||||
FORCE_INLINE char* getWorkDirName(){workDir.getFilename(filename);return filename;};
|
||||
FORCE_INLINE bool eof() { return sdpos >= filesize; }
|
||||
FORCE_INLINE int16_t get() { sdpos = file.curPosition(); return (int16_t)file.read(); }
|
||||
FORCE_INLINE void setIndex(long index) { sdpos = index; file.seekSet(index); }
|
||||
FORCE_INLINE uint8_t percentDone() { return (isFileOpen() && filesize) ? sdpos / ((filesize + 99) / 100) : 0; }
|
||||
FORCE_INLINE char* getWorkDirName() { workDir.getFilename(filename); return filename; }
|
||||
|
||||
public:
|
||||
bool saving;
|
||||
bool logging;
|
||||
bool sdprinting;
|
||||
bool cardOK;
|
||||
char filename[FILENAME_LENGTH];
|
||||
char longFilename[LONG_FILENAME_LENGTH];
|
||||
bool filenameIsDir;
|
||||
bool saving, logging, sdprinting, cardOK, filenameIsDir;
|
||||
char filename[FILENAME_LENGTH], longFilename[LONG_FILENAME_LENGTH];
|
||||
int autostart_index;
|
||||
private:
|
||||
SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH];
|
||||
SdFile root, *curDir, workDir, workDirParents[MAX_DIR_DEPTH];
|
||||
uint16_t workDirDepth;
|
||||
Sd2Card card;
|
||||
SdVolume volume;
|
||||
SdFile file;
|
||||
#define SD_PROCEDURE_DEPTH 1
|
||||
#define MAXPATHNAMELENGTH (FILENAME_LENGTH*MAX_DIR_DEPTH+MAX_DIR_DEPTH+1)
|
||||
#define MAXPATHNAMELENGTH (FILENAME_LENGTH*MAX_DIR_DEPTH + MAX_DIR_DEPTH + 1)
|
||||
uint8_t file_subcall_ctr;
|
||||
uint32_t filespos[SD_PROCEDURE_DEPTH];
|
||||
char filenames[SD_PROCEDURE_DEPTH][MAXPATHNAMELENGTH];
|
||||
uint32_t filesize;
|
||||
//int16_t n;
|
||||
unsigned long autostart_atmillis;
|
||||
uint32_t sdpos ;
|
||||
uint32_t sdpos;
|
||||
|
||||
bool autostart_stilltocheck; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware.
|
||||
|
||||
|
||||
LsAction lsAction; //stored for recursion.
|
||||
int16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory.
|
||||
uint16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory.
|
||||
char* diveDirName;
|
||||
void lsDive(const char *prepend, SdFile parent, const char * const match=NULL);
|
||||
};
|
||||
|
||||
extern CardReader card;
|
||||
|
||||
#define IS_SD_PRINTING (card.sdprinting)
|
||||
|
||||
#if (SDCARDDETECT > -1)
|
||||
# ifdef SDCARDDETECTINVERTED
|
||||
# define IS_SD_INSERTED (READ(SDCARDDETECT)!=0)
|
||||
# else
|
||||
# define IS_SD_INSERTED (READ(SDCARDDETECT)==0)
|
||||
# endif //SDCARDTETECTINVERTED
|
||||
#ifdef SDCARDDETECTINVERTED
|
||||
#define IS_SD_INSERTED (READ(SDCARDDETECT) != 0)
|
||||
#else
|
||||
#define IS_SD_INSERTED (READ(SDCARDDETECT) == 0)
|
||||
#endif
|
||||
#else
|
||||
//If we don't have a card detect line, aways asume the card is inserted
|
||||
# define IS_SD_INSERTED true
|
||||
//No card detect line? Assume the card is inserted.
|
||||
#define IS_SD_INSERTED true
|
||||
#endif
|
||||
|
||||
#else
|
||||
@ -98,4 +93,5 @@ extern CardReader card;
|
||||
#define IS_SD_PRINTING (false)
|
||||
|
||||
#endif //SDSUPPORT
|
||||
#endif
|
||||
|
||||
#endif //__CARDREADER_H
|
||||
|
@ -1,59 +1,58 @@
|
||||
#include "Configuration.h"
|
||||
|
||||
#ifdef DIGIPOT_I2C
|
||||
|
||||
#include "Stream.h"
|
||||
#include "utility/twi.h"
|
||||
#include "Wire.h"
|
||||
|
||||
// Settings for the I2C based DIGIPOT (MCP4451) on Azteeg X3 Pro
|
||||
#if MB(5DPRINT)
|
||||
#define DIGIPOT_I2C_FACTOR 117.96
|
||||
#define DIGIPOT_I2C_MAX_CURRENT 1.736
|
||||
#define DIGIPOT_I2C_FACTOR 117.96
|
||||
#define DIGIPOT_I2C_MAX_CURRENT 1.736
|
||||
#else
|
||||
#define DIGIPOT_I2C_FACTOR 106.7
|
||||
#define DIGIPOT_I2C_MAX_CURRENT 2.5
|
||||
#define DIGIPOT_I2C_FACTOR 106.7
|
||||
#define DIGIPOT_I2C_MAX_CURRENT 2.5
|
||||
#endif
|
||||
|
||||
static byte current_to_wiper( float current ){
|
||||
return byte(ceil(float((DIGIPOT_I2C_FACTOR*current))));
|
||||
static byte current_to_wiper(float current) {
|
||||
return byte(ceil(float((DIGIPOT_I2C_FACTOR*current))));
|
||||
}
|
||||
|
||||
static void i2c_send(byte addr, byte a, byte b)
|
||||
{
|
||||
Wire.beginTransmission(addr);
|
||||
Wire.write(a);
|
||||
Wire.write(b);
|
||||
Wire.endTransmission();
|
||||
static void i2c_send(byte addr, byte a, byte b) {
|
||||
Wire.beginTransmission(addr);
|
||||
Wire.write(a);
|
||||
Wire.write(b);
|
||||
Wire.endTransmission();
|
||||
}
|
||||
|
||||
// This is for the MCP4451 I2C based digipot
|
||||
void digipot_i2c_set_current( int channel, float current )
|
||||
{
|
||||
current = min( (float) max( current, 0.0f ), DIGIPOT_I2C_MAX_CURRENT);
|
||||
// these addresses are specific to Azteeg X3 Pro, can be set to others,
|
||||
// In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1
|
||||
byte addr= 0x2C; // channel 0-3
|
||||
if(channel >= 4) {
|
||||
addr= 0x2E; // channel 4-7
|
||||
channel-= 4;
|
||||
}
|
||||
void digipot_i2c_set_current(int channel, float current) {
|
||||
current = min( (float) max( current, 0.0f ), DIGIPOT_I2C_MAX_CURRENT);
|
||||
// these addresses are specific to Azteeg X3 Pro, can be set to others,
|
||||
// In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1
|
||||
byte addr = 0x2C; // channel 0-3
|
||||
if (channel >= 4) {
|
||||
addr = 0x2E; // channel 4-7
|
||||
channel -= 4;
|
||||
}
|
||||
|
||||
// Initial setup
|
||||
i2c_send( addr, 0x40, 0xff );
|
||||
i2c_send( addr, 0xA0, 0xff );
|
||||
// Initial setup
|
||||
i2c_send(addr, 0x40, 0xff);
|
||||
i2c_send(addr, 0xA0, 0xff);
|
||||
|
||||
// Set actual wiper value
|
||||
byte addresses[4] = { 0x00, 0x10, 0x60, 0x70 };
|
||||
i2c_send( addr, addresses[channel], current_to_wiper(current) );
|
||||
// Set actual wiper value
|
||||
byte addresses[4] = { 0x00, 0x10, 0x60, 0x70 };
|
||||
i2c_send(addr, addresses[channel], current_to_wiper(current));
|
||||
}
|
||||
|
||||
void digipot_i2c_init()
|
||||
{
|
||||
const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS;
|
||||
Wire.begin();
|
||||
// setup initial currents as defined in Configuration_adv.h
|
||||
for(int i=0;i<=sizeof(digipot_motor_current)/sizeof(float);i++) {
|
||||
digipot_i2c_set_current(i, digipot_motor_current[i]);
|
||||
}
|
||||
void digipot_i2c_init() {
|
||||
const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS;
|
||||
Wire.begin();
|
||||
// setup initial currents as defined in Configuration_adv.h
|
||||
for(int i = 0; i <= sizeof(digipot_motor_current) / sizeof(float); i++) {
|
||||
digipot_i2c_set_current(i, digipot_motor_current[i]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //DIGIPOT_I2C
|
||||
|
@ -21,17 +21,13 @@
|
||||
**/
|
||||
|
||||
#ifdef ULTIPANEL
|
||||
#define BLEN_A 0
|
||||
#define BLEN_B 1
|
||||
#define BLEN_C 2
|
||||
#define EN_A (1<<BLEN_A)
|
||||
#define EN_B (1<<BLEN_B)
|
||||
#define EN_C (1<<BLEN_C)
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
#define LCD_CLICKED (buttons&EN_C)
|
||||
#define BLEN_A 0
|
||||
#define BLEN_B 1
|
||||
#define BLEN_C 2
|
||||
#define EN_A (1<<BLEN_A)
|
||||
#define EN_B (1<<BLEN_B)
|
||||
#define EN_C (1<<BLEN_C)
|
||||
#define LCD_CLICKED (buttons&EN_C)
|
||||
#endif
|
||||
|
||||
#include <U8glib.h>
|
||||
@ -92,6 +88,9 @@ U8GLIB_ST7920_128X64_RRD u8g(0);
|
||||
#elif defined(MAKRPANEL)
|
||||
// The MaKrPanel display, ST7565 controller as well
|
||||
U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0);
|
||||
#elif defined(VIKI2) || defined(miniVIKI)
|
||||
// Mini Viki and Viki 2.0 LCD, ST7565 controller as well
|
||||
U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0);
|
||||
#else
|
||||
// for regular DOGM128 display with HW-SPI
|
||||
U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0); // HW-SPI Com: CS, A0
|
||||
@ -312,7 +311,7 @@ static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, c
|
||||
|
||||
static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, const char* data, bool pgm) {
|
||||
char c;
|
||||
uint8_t n = LCD_WIDTH - 2 - (pgm ? strlen_P(data) : (strlen(data)));
|
||||
uint8_t n = LCD_WIDTH - 2 - (pgm ? lcd_strlen_P(data) : (lcd_strlen((char*)data)));
|
||||
|
||||
lcd_implementation_mark_as_selected(row, pre_char);
|
||||
|
||||
@ -374,18 +373,18 @@ void lcd_implementation_drawedit(const char* pstr, char* value) {
|
||||
uint8_t char_width = DOG_CHAR_WIDTH;
|
||||
|
||||
#ifdef USE_BIG_EDIT_FONT
|
||||
if (strlen_P(pstr) <= LCD_WIDTH_EDIT - 1) {
|
||||
if (lcd_strlen_P(pstr) <= LCD_WIDTH_EDIT - 1) {
|
||||
u8g.setFont(FONT_MENU_EDIT);
|
||||
lcd_width = LCD_WIDTH_EDIT + 1;
|
||||
char_width = DOG_CHAR_WIDTH_EDIT;
|
||||
if (strlen_P(pstr) >= LCD_WIDTH_EDIT - strlen(value)) rows = 2;
|
||||
if (lcd_strlen_P(pstr) >= LCD_WIDTH_EDIT - lcd_strlen(value)) rows = 2;
|
||||
}
|
||||
else {
|
||||
u8g.setFont(FONT_MENU);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (strlen_P(pstr) > LCD_WIDTH - 2 - strlen(value)) rows = 2;
|
||||
if (lcd_strlen_P(pstr) > LCD_WIDTH - 2 - lcd_strlen(value)) rows = 2;
|
||||
|
||||
const float kHalfChar = DOG_CHAR_HEIGHT_EDIT / 2;
|
||||
float rowHeight = u8g.getHeight() / (rows + 1); // 1/(rows+1) = 1/2 or 1/3
|
||||
@ -393,7 +392,7 @@ void lcd_implementation_drawedit(const char* pstr, char* value) {
|
||||
u8g.setPrintPos(0, rowHeight + kHalfChar);
|
||||
lcd_printPGM(pstr);
|
||||
u8g.print(':');
|
||||
u8g.setPrintPos((lcd_width-1-strlen(value)) * char_width, rows * rowHeight + kHalfChar);
|
||||
u8g.setPrintPos((lcd_width-1-lcd_strlen(value)) * char_width, rows * rowHeight + kHalfChar);
|
||||
u8g.print(value);
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
@ -122,6 +122,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define TEMP_SENSOR_0 1
|
||||
#define TEMP_SENSOR_1 0
|
||||
#define TEMP_SENSOR_2 0
|
||||
#define TEMP_SENSOR_3 0
|
||||
#define TEMP_SENSOR_BED 0
|
||||
|
||||
// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
|
||||
@ -139,6 +140,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MINTEMP 5
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_3_MINTEMP 5
|
||||
#define BED_MINTEMP 5
|
||||
|
||||
// When temperature exceeds max temp, your heater will be switched off.
|
||||
@ -147,6 +149,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MAXTEMP 260
|
||||
#define HEATER_1_MAXTEMP 260
|
||||
#define HEATER_2_MAXTEMP 260
|
||||
#define HEATER_3_MAXTEMP 260
|
||||
#define BED_MAXTEMP 150
|
||||
|
||||
// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
|
||||
@ -351,8 +354,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false
|
||||
#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
|
||||
// ENDSTOP SETTINGS:
|
||||
// Sets direction of endstops when homing; 1=MAX, -1=MIN
|
||||
@ -583,10 +587,20 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
//#define PANEL_ONE
|
||||
|
||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||
//#define MAKRPANEL
|
||||
|
||||
// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
|
||||
// http://panucatt.com
|
||||
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
|
||||
//#define VIKI2
|
||||
//#define miniVIKI
|
||||
|
||||
// The RepRapDiscount Smart Controller (white PCB)
|
||||
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
|
||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
@ -620,6 +634,26 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DEFAULT_LCD_CONTRAST 17
|
||||
#endif
|
||||
|
||||
#if defined(miniVIKI) || defined(VIKI2)
|
||||
#define ULTRA_LCD //general LCD support, also 16x2
|
||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
|
||||
#ifdef miniVIKI
|
||||
#define DEFAULT_LCD_CONTRAST 95
|
||||
#else
|
||||
#define DEFAULT_LCD_CONTRAST 40
|
||||
#endif
|
||||
|
||||
#define ENCODER_PULSES_PER_STEP 4
|
||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||
#endif
|
||||
|
||||
#if defined (PANEL_ONE)
|
||||
#define SDSUPPORT
|
||||
#define ULTIMAKERCONTROLLER
|
||||
#endif
|
||||
|
||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
|
@ -284,6 +284,11 @@
|
||||
//=============================Additional Features===========================
|
||||
//===========================================================================
|
||||
|
||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
@ -124,6 +124,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define TEMP_SENSOR_0 5
|
||||
#define TEMP_SENSOR_1 0
|
||||
#define TEMP_SENSOR_2 0
|
||||
#define TEMP_SENSOR_3 0
|
||||
#define TEMP_SENSOR_BED 5
|
||||
|
||||
// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
|
||||
@ -141,6 +142,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MINTEMP 5
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_3_MINTEMP 5
|
||||
#define BED_MINTEMP 5
|
||||
|
||||
// When temperature exceeds max temp, your heater will be switched off.
|
||||
@ -149,6 +151,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MAXTEMP 275
|
||||
#define HEATER_1_MAXTEMP 275
|
||||
#define HEATER_2_MAXTEMP 275
|
||||
#define HEATER_3_MAXTEMP 275
|
||||
#define BED_MAXTEMP 150
|
||||
|
||||
// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
|
||||
@ -357,10 +360,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
|
||||
#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false
|
||||
#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_E0_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E2_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E3_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
|
||||
// ENDSTOP SETTINGS:
|
||||
// Sets direction of endstops when homing; 1=MAX, -1=MIN
|
||||
@ -593,10 +597,20 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
//#define PANEL_ONE
|
||||
|
||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||
//#define MAKRPANEL
|
||||
|
||||
// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
|
||||
// http://panucatt.com
|
||||
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
|
||||
//#define VIKI2
|
||||
//#define miniVIKI
|
||||
|
||||
// The RepRapDiscount Smart Controller (white PCB)
|
||||
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
|
||||
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
@ -630,6 +644,26 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DEFAULT_LCD_CONTRAST 17
|
||||
#endif
|
||||
|
||||
#if defined(miniVIKI) || defined(VIKI2)
|
||||
#define ULTRA_LCD //general LCD support, also 16x2
|
||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
|
||||
#ifdef miniVIKI
|
||||
#define DEFAULT_LCD_CONTRAST 95
|
||||
#else
|
||||
#define DEFAULT_LCD_CONTRAST 40
|
||||
#endif
|
||||
|
||||
#define ENCODER_PULSES_PER_STEP 4
|
||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||
#endif
|
||||
|
||||
#if defined (PANEL_ONE)
|
||||
#define SDSUPPORT
|
||||
#define ULTIMAKERCONTROLLER
|
||||
#endif
|
||||
|
||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
|
@ -284,6 +284,11 @@
|
||||
//=============================Additional Features===========================
|
||||
//===========================================================================
|
||||
|
||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
@ -142,6 +142,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define TEMP_SENSOR_0 1
|
||||
#define TEMP_SENSOR_1 0
|
||||
#define TEMP_SENSOR_2 0
|
||||
#define TEMP_SENSOR_3 0
|
||||
#define TEMP_SENSOR_BED 1
|
||||
|
||||
// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
|
||||
@ -159,6 +160,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MINTEMP 5
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_3_MINTEMP 5
|
||||
#define BED_MINTEMP 5
|
||||
|
||||
// When temperature exceeds max temp, your heater will be switched off.
|
||||
@ -167,6 +169,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MAXTEMP 275
|
||||
#define HEATER_1_MAXTEMP 275
|
||||
#define HEATER_2_MAXTEMP 275
|
||||
#define HEATER_3_MAXTEMP 275
|
||||
#define BED_MAXTEMP 150
|
||||
|
||||
// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
|
||||
@ -380,8 +383,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false
|
||||
#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
|
||||
// ENDSTOP SETTINGS:
|
||||
// Sets direction of endstop s when homing; 1=MAX, -1=MIN
|
||||
@ -586,10 +590,20 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
//#define PANEL_ONE
|
||||
|
||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||
//#define MAKRPANEL
|
||||
|
||||
// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
|
||||
// http://panucatt.com
|
||||
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
|
||||
//#define VIKI2
|
||||
//#define miniVIKI
|
||||
|
||||
// The RepRapDiscount Smart Controller (white PCB)
|
||||
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
|
||||
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
@ -623,6 +637,26 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DEFAULT_LCD_CONTRAST 17
|
||||
#endif
|
||||
|
||||
#if defined(miniVIKI) || defined(VIKI2)
|
||||
#define ULTRA_LCD //general LCD support, also 16x2
|
||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
|
||||
#ifdef miniVIKI
|
||||
#define DEFAULT_LCD_CONTRAST 95
|
||||
#else
|
||||
#define DEFAULT_LCD_CONTRAST 40
|
||||
#endif
|
||||
|
||||
#define ENCODER_PULSES_PER_STEP 4
|
||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||
#endif
|
||||
|
||||
#if defined (PANEL_ONE)
|
||||
#define SDSUPPORT
|
||||
#define ULTIMAKERCONTROLLER
|
||||
#endif
|
||||
|
||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
|
@ -78,6 +78,7 @@
|
||||
#define EXTRUDER_0_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_1_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_2_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_3_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
||||
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
|
||||
|
||||
@ -286,6 +287,11 @@
|
||||
//=============================Additional Features===========================
|
||||
//===========================================================================
|
||||
|
||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
||||
@ -478,6 +484,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
||||
#define HEATER_2_USES_THERMISTOR
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 > 0
|
||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
||||
#define HEATER_3_USES_THERMISTOR
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED > 0
|
||||
#define THERMISTORBED TEMP_SENSOR_BED
|
||||
#define BED_USES_THERMISTOR
|
||||
@ -491,6 +501,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#if TEMP_SENSOR_2 == -1
|
||||
#define HEATER_2_USES_AD595
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 == -1
|
||||
#define HEATER_3_USES_AD595
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED == -1
|
||||
#define BED_USES_AD595
|
||||
#endif
|
||||
@ -509,6 +522,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#undef HEATER_2_MINTEMP
|
||||
#undef HEATER_2_MAXTEMP
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 == 0
|
||||
#undef HEATER_3_MINTEMP
|
||||
#undef HEATER_3_MAXTEMP
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED == 0
|
||||
#undef BED_MINTEMP
|
||||
#undef BED_MAXTEMP
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
@ -125,6 +125,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define TEMP_SENSOR_0 1
|
||||
#define TEMP_SENSOR_1 0
|
||||
#define TEMP_SENSOR_2 0
|
||||
#define TEMP_SENSOR_3 0
|
||||
#define TEMP_SENSOR_BED 0
|
||||
|
||||
// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
|
||||
@ -142,6 +143,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MINTEMP 5
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_3_MINTEMP 5
|
||||
#define BED_MINTEMP 5
|
||||
|
||||
// When temperature exceeds max temp, your heater will be switched off.
|
||||
@ -150,6 +152,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MAXTEMP 260
|
||||
#define HEATER_1_MAXTEMP 260
|
||||
#define HEATER_2_MAXTEMP 260
|
||||
#define HEATER_3_MAXTEMP 260
|
||||
#define BED_MAXTEMP 150
|
||||
|
||||
// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
|
||||
@ -351,12 +354,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DISABLE_E false // For all extruders
|
||||
#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
|
||||
|
||||
#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false
|
||||
#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
|
||||
// ENDSTOP SETTINGS:
|
||||
// Sets direction of endstops when homing; 1=MAX, -1=MIN
|
||||
@ -587,10 +591,20 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
//#define PANEL_ONE
|
||||
|
||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||
//#define MAKRPANEL
|
||||
|
||||
// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
|
||||
// http://panucatt.com
|
||||
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
|
||||
//#define VIKI2
|
||||
//#define miniVIKI
|
||||
|
||||
// The RepRapDiscount Smart Controller (white PCB)
|
||||
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
|
||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
@ -624,6 +638,26 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DEFAULT_LCD_CONTRAST 17
|
||||
#endif
|
||||
|
||||
#if defined(miniVIKI) || defined(VIKI2)
|
||||
#define ULTRA_LCD //general LCD support, also 16x2
|
||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
|
||||
#ifdef miniVIKI
|
||||
#define DEFAULT_LCD_CONTRAST 95
|
||||
#else
|
||||
#define DEFAULT_LCD_CONTRAST 40
|
||||
#endif
|
||||
|
||||
#define ENCODER_PULSES_PER_STEP 4
|
||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||
#endif
|
||||
|
||||
#if defined (PANEL_ONE)
|
||||
#define SDSUPPORT
|
||||
#define ULTIMAKERCONTROLLER
|
||||
#endif
|
||||
|
||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
|
@ -284,6 +284,11 @@
|
||||
//=============================Additional Features===========================
|
||||
//===========================================================================
|
||||
|
||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
@ -147,6 +147,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define TEMP_SENSOR_0 -1
|
||||
#define TEMP_SENSOR_1 -1
|
||||
#define TEMP_SENSOR_2 0
|
||||
#define TEMP_SENSOR_3 0
|
||||
#define TEMP_SENSOR_BED 0
|
||||
|
||||
// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
|
||||
@ -164,6 +165,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MINTEMP 5
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_3_MINTEMP 5
|
||||
#define BED_MINTEMP 5
|
||||
|
||||
// When temperature exceeds max temp, your heater will be switched off.
|
||||
@ -172,6 +174,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MAXTEMP 275
|
||||
#define HEATER_1_MAXTEMP 275
|
||||
#define HEATER_2_MAXTEMP 275
|
||||
#define HEATER_3_MAXTEMP 275
|
||||
#define BED_MAXTEMP 150
|
||||
|
||||
// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
|
||||
@ -368,8 +371,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define INVERT_Z_DIR false
|
||||
|
||||
#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
|
||||
// ENDSTOP SETTINGS:
|
||||
// Sets direction of endstops when homing; 1=MAX, -1=MIN
|
||||
@ -491,10 +495,20 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
//#define PANEL_ONE
|
||||
|
||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||
//#define MAKRPANEL
|
||||
|
||||
// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
|
||||
// http://panucatt.com
|
||||
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
|
||||
//#define VIKI2
|
||||
//#define miniVIKI
|
||||
|
||||
// The RepRapDiscount Smart Controller (white PCB)
|
||||
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
|
||||
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
@ -535,6 +549,26 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DEFAULT_LCD_CONTRAST 17
|
||||
#endif
|
||||
|
||||
#if defined(miniVIKI) || defined(VIKI2)
|
||||
#define ULTRA_LCD //general LCD support, also 16x2
|
||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
|
||||
#ifdef miniVIKI
|
||||
#define DEFAULT_LCD_CONTRAST 95
|
||||
#else
|
||||
#define DEFAULT_LCD_CONTRAST 40
|
||||
#endif
|
||||
|
||||
#define ENCODER_PULSES_PER_STEP 4
|
||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||
#endif
|
||||
|
||||
#if defined (PANEL_ONE)
|
||||
#define SDSUPPORT
|
||||
#define ULTIMAKERCONTROLLER
|
||||
#endif
|
||||
|
||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
|
@ -78,6 +78,7 @@
|
||||
#define EXTRUDER_0_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_1_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_2_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_3_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
||||
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
|
||||
|
||||
@ -278,6 +279,11 @@
|
||||
//=============================Additional Features===========================
|
||||
//===========================================================================
|
||||
|
||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
||||
@ -472,6 +478,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
||||
#define HEATER_2_USES_THERMISTOR
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 > 0
|
||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
||||
#define HEATER_3_USES_THERMISTOR
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED > 0
|
||||
#define THERMISTORBED TEMP_SENSOR_BED
|
||||
#define BED_USES_THERMISTOR
|
||||
@ -485,6 +495,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#if TEMP_SENSOR_2 == -1
|
||||
#define HEATER_2_USES_AD595
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 == -1
|
||||
#define HEATER_3_USES_AD595
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED == -1
|
||||
#define BED_USES_AD595
|
||||
#endif
|
||||
@ -503,6 +516,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#undef HEATER_2_MINTEMP
|
||||
#undef HEATER_2_MAXTEMP
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 == 0
|
||||
#undef HEATER_3_MINTEMP
|
||||
#undef HEATER_3_MAXTEMP
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED == 0
|
||||
#undef BED_MINTEMP
|
||||
#undef BED_MAXTEMP
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
@ -127,6 +127,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define TEMP_SENSOR_0 1
|
||||
#define TEMP_SENSOR_1 0
|
||||
#define TEMP_SENSOR_2 0
|
||||
#define TEMP_SENSOR_3 0
|
||||
#define TEMP_SENSOR_BED 12
|
||||
|
||||
// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
|
||||
@ -144,6 +145,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MINTEMP 5
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_3_MINTEMP 5
|
||||
#define BED_MINTEMP 5
|
||||
|
||||
// When temperature exceeds max temp, your heater will be switched off.
|
||||
@ -152,6 +154,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MAXTEMP 275
|
||||
#define HEATER_1_MAXTEMP 275
|
||||
#define HEATER_2_MAXTEMP 275
|
||||
#define HEATER_3_MAXTEMP 275
|
||||
#define BED_MAXTEMP 150
|
||||
|
||||
// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
|
||||
@ -352,9 +355,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false
|
||||
#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_E0_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E0_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
|
||||
// ENDSTOP SETTINGS:
|
||||
// Sets direction of endstops when homing; 1=MAX, -1=MIN
|
||||
@ -561,10 +565,20 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
//#define PANEL_ONE
|
||||
|
||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||
//#define MAKRPANEL
|
||||
|
||||
// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
|
||||
// http://panucatt.com
|
||||
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
|
||||
//#define VIKI2
|
||||
//#define miniVIKI
|
||||
|
||||
// The RepRapDiscount Smart Controller (white PCB)
|
||||
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
|
||||
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
@ -598,6 +612,26 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DEFAULT_LCD_CONTRAST 17
|
||||
#endif
|
||||
|
||||
#if defined(miniVIKI) || defined(VIKI2)
|
||||
#define ULTRA_LCD //general LCD support, also 16x2
|
||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
|
||||
#ifdef miniVIKI
|
||||
#define DEFAULT_LCD_CONTRAST 95
|
||||
#else
|
||||
#define DEFAULT_LCD_CONTRAST 40
|
||||
#endif
|
||||
|
||||
#define ENCODER_PULSES_PER_STEP 4
|
||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||
#endif
|
||||
|
||||
#if defined (PANEL_ONE)
|
||||
#define SDSUPPORT
|
||||
#define ULTIMAKERCONTROLLER
|
||||
#endif
|
||||
|
||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
|
@ -78,6 +78,7 @@
|
||||
#define EXTRUDER_0_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_1_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_2_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_3_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
||||
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
|
||||
|
||||
@ -282,6 +283,11 @@
|
||||
//=============================Additional Features===========================
|
||||
//===========================================================================
|
||||
|
||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
||||
@ -469,6 +475,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
||||
#define HEATER_2_USES_THERMISTOR
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 > 0
|
||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
||||
#define HEATER_3_USES_THERMISTOR
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED > 0
|
||||
#define THERMISTORBED TEMP_SENSOR_BED
|
||||
#define BED_USES_THERMISTOR
|
||||
@ -482,6 +492,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#if TEMP_SENSOR_2 == -1
|
||||
#define HEATER_2_USES_AD595
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 == -1
|
||||
#define HEATER_3_USES_AD595
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED == -1
|
||||
#define BED_USES_AD595
|
||||
#endif
|
||||
@ -500,6 +513,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#undef HEATER_2_MINTEMP
|
||||
#undef HEATER_2_MAXTEMP
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 == 0
|
||||
#undef HEATER_3_MINTEMP
|
||||
#undef HEATER_3_MAXTEMP
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED == 0
|
||||
#undef BED_MINTEMP
|
||||
#undef BED_MAXTEMP
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
@ -126,6 +126,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define TEMP_SENSOR_0 5
|
||||
#define TEMP_SENSOR_1 0
|
||||
#define TEMP_SENSOR_2 0
|
||||
#define TEMP_SENSOR_3 0
|
||||
#define TEMP_SENSOR_BED 5
|
||||
|
||||
// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
|
||||
@ -143,6 +144,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MINTEMP 5
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_3_MINTEMP 5
|
||||
#define BED_MINTEMP 5
|
||||
|
||||
// When temperature exceeds max temp, your heater will be switched off.
|
||||
@ -151,6 +153,7 @@ Here are some standard links for getting your machine calibrated:
|
||||
#define HEATER_0_MAXTEMP 275
|
||||
#define HEATER_1_MAXTEMP 275
|
||||
#define HEATER_2_MAXTEMP 275
|
||||
#define HEATER_3_MAXTEMP 275
|
||||
#define BED_MAXTEMP 150
|
||||
|
||||
#define CONFIG_STEPPERS_TOSHIBA 1
|
||||
@ -353,11 +356,12 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
|
||||
|
||||
#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_Y_DIR true // for Mendel set to true, for Orca set to false
|
||||
#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_Y_DIR true // for Mendel set to true, for Orca set to false
|
||||
#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true
|
||||
#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
|
||||
|
||||
// ENDSTOP SETTINGS:
|
||||
// Sets direction of endstops when homing; 1=MAX, -1=MIN
|
||||
@ -574,10 +578,20 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
//#define PANEL_ONE
|
||||
|
||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||
//#define MAKRPANEL
|
||||
|
||||
// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
|
||||
// http://panucatt.com
|
||||
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
|
||||
//#define VIKI2
|
||||
//#define miniVIKI
|
||||
|
||||
// The RepRapDiscount Smart Controller (white PCB)
|
||||
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
|
||||
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
@ -611,6 +625,26 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||
#define DEFAULT_LCD_CONTRAST 17
|
||||
#endif
|
||||
|
||||
#if defined(miniVIKI) || defined(VIKI2)
|
||||
#define ULTRA_LCD //general LCD support, also 16x2
|
||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
|
||||
#ifdef miniVIKI
|
||||
#define DEFAULT_LCD_CONTRAST 95
|
||||
#else
|
||||
#define DEFAULT_LCD_CONTRAST 40
|
||||
#endif
|
||||
|
||||
#define ENCODER_PULSES_PER_STEP 4
|
||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||
#endif
|
||||
|
||||
#if defined (PANEL_ONE)
|
||||
#define SDSUPPORT
|
||||
#define ULTIMAKERCONTROLLER
|
||||
#endif
|
||||
|
||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
|
@ -78,6 +78,7 @@
|
||||
#define EXTRUDER_0_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_1_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_2_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_3_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
||||
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
|
||||
|
||||
@ -283,6 +284,11 @@
|
||||
//=============================Additional Features===========================
|
||||
//===========================================================================
|
||||
|
||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
||||
@ -472,6 +478,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
||||
#define HEATER_2_USES_THERMISTOR
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 > 0
|
||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
||||
#define HEATER_3_USES_THERMISTOR
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED > 0
|
||||
#define THERMISTORBED TEMP_SENSOR_BED
|
||||
#define BED_USES_THERMISTOR
|
||||
@ -485,6 +495,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#if TEMP_SENSOR_2 == -1
|
||||
#define HEATER_2_USES_AD595
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 == -1
|
||||
#define HEATER_3_USES_AD595
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED == -1
|
||||
#define BED_USES_AD595
|
||||
#endif
|
||||
@ -503,6 +516,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||
#undef HEATER_2_MINTEMP
|
||||
#undef HEATER_2_MAXTEMP
|
||||
#endif
|
||||
#if TEMP_SENSOR_3 == 0
|
||||
#undef HEATER_3_MINTEMP
|
||||
#undef HEATER_3_MAXTEMP
|
||||
#endif
|
||||
#if TEMP_SENSOR_BED == 0
|
||||
#undef BED_MINTEMP
|
||||
#undef BED_MAXTEMP
|
||||
|
@ -83,6 +83,9 @@
|
||||
/// check if pin is an timer wrapper
|
||||
#define GET_TIMER(IO) _GET_TIMER(IO)
|
||||
|
||||
// Shorthand
|
||||
#define OUT_WRITE(IO, v) { SET_OUTPUT(IO); WRITE(IO, v); }
|
||||
|
||||
/*
|
||||
ports and functions
|
||||
|
||||
|
@ -121,6 +121,7 @@
|
||||
#define MSG_UNKNOWN_COMMAND "Unknown command: \""
|
||||
#define MSG_ACTIVE_EXTRUDER "Active Extruder: "
|
||||
#define MSG_INVALID_EXTRUDER "Invalid extruder"
|
||||
#define MSG_INVALID_SOLENOID "Invalid solenoid"
|
||||
#define MSG_X_MIN "x_min: "
|
||||
#define MSG_X_MAX "x_max: "
|
||||
#define MSG_Y_MIN "y_min: "
|
||||
@ -159,6 +160,43 @@
|
||||
|
||||
#define MSG_ERR_EEPROM_WRITE "Error writing to EEPROM!"
|
||||
|
||||
// temperature.cpp strings
|
||||
#define MSG_PID_AUTOTUNE "PID Autotune"
|
||||
#define MSG_PID_AUTOTUNE_START MSG_PID_AUTOTUNE " start"
|
||||
#define MSG_PID_AUTOTUNE_FAILED MSG_PID_AUTOTUNE " failed!"
|
||||
#define MSG_PID_BAD_EXTRUDER_NUM MSG_PID_AUTOTUNE_FAILED " Bad extruder number"
|
||||
#define MSG_PID_TEMP_TOO_HIGH MSG_PID_AUTOTUNE_FAILED " Temperature too high"
|
||||
#define MSG_PID_TIMEOUT MSG_PID_AUTOTUNE_FAILED " timeout"
|
||||
#define MSG_BIAS " bias: "
|
||||
#define MSG_D " d: "
|
||||
#define MSG_MIN " min: "
|
||||
#define MSG_MAX " max: "
|
||||
#define MSG_KU " Ku: "
|
||||
#define MSG_TU " Tu: "
|
||||
#define MSG_CLASSIC_PID " Classic PID "
|
||||
#define MSG_KP " Kp: "
|
||||
#define MSG_KI " Ki: "
|
||||
#define MSG_KD " Kd: "
|
||||
#define MSG_OK_B "ok B:"
|
||||
#define MSG_OK_T "ok T:"
|
||||
#define MSG_AT " @:"
|
||||
#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from above into Configuration.h"
|
||||
#define MSG_PID_DEBUG " PID_DEBUG "
|
||||
#define MSG_PID_DEBUG_INPUT ": Input "
|
||||
#define MSG_PID_DEBUG_OUTPUT " Output "
|
||||
#define MSG_PID_DEBUG_PTERM " pTerm "
|
||||
#define MSG_PID_DEBUG_ITERM " iTerm "
|
||||
#define MSG_PID_DEBUG_DTERM " dTerm "
|
||||
#define MSG_HEATING_FAILED "Heating failed"
|
||||
#define MSG_EXTRUDER_SWITCHED_OFF "Extruder switched off. Temperature difference between temp sensors is too high !"
|
||||
|
||||
#define MSG_INVALID_EXTRUDER_NUM " - Invalid extruder number !"
|
||||
#define MSG_THERMAL_RUNAWAY_STOP "Thermal Runaway, system stopped! Heater_ID: "
|
||||
#define MSG_SWITCHED_OFF_MAX " switched off. MAXTEMP triggered !!"
|
||||
#define MSG_MINTEMP_EXTRUDER_OFF ": Extruder switched off. MINTEMP triggered !"
|
||||
#define MSG_MAXTEMP_EXTRUDER_OFF ": Extruder" MSG_SWITCHED_OFF_MAX
|
||||
#define MSG_MAXTEMP_BED_OFF "Heated bed" MSG_SWITCHED_OFF_MAX
|
||||
|
||||
// LCD Menu Messages
|
||||
|
||||
// Add your own character. Reference: https://github.com/MarlinFirmware/Marlin/pull/1434 photos
|
||||
@ -223,5 +261,6 @@
|
||||
*/
|
||||
|
||||
#include LANGUAGE_INCLUDE
|
||||
#include "language_en.h"
|
||||
|
||||
#endif //__LANGUAGE_H
|
||||
|
@ -8,124 +8,416 @@
|
||||
#ifndef LANGUAGE_EN_H
|
||||
#define LANGUAGE_EN_H
|
||||
|
||||
#ifndef WELCOME_MSG
|
||||
#define WELCOME_MSG MACHINE_NAME " ready."
|
||||
#endif
|
||||
#ifndef MSG_SD_INSERTED
|
||||
#define MSG_SD_INSERTED "Card inserted"
|
||||
#endif
|
||||
#ifndef MSG_SD_REMOVED
|
||||
#define MSG_SD_REMOVED "Card removed"
|
||||
#endif
|
||||
#ifndef MSG_MAIN
|
||||
#define MSG_MAIN "Main"
|
||||
#endif
|
||||
#ifndef MSG_AUTOSTART
|
||||
#define MSG_AUTOSTART "Autostart"
|
||||
#endif
|
||||
#ifndef MSG_DISABLE_STEPPERS
|
||||
#define MSG_DISABLE_STEPPERS "Disable steppers"
|
||||
#endif
|
||||
#ifndef MSG_AUTO_HOME
|
||||
#define MSG_AUTO_HOME "Auto home"
|
||||
#endif
|
||||
#ifndef MSG_SET_HOME_OFFSETS
|
||||
#define MSG_SET_HOME_OFFSETS "Set home offsets"
|
||||
#endif
|
||||
#ifndef MSG_SET_ORIGIN
|
||||
#define MSG_SET_ORIGIN "Set origin"
|
||||
#endif
|
||||
#ifndef MSG_PREHEAT_PLA
|
||||
#define MSG_PREHEAT_PLA "Preheat PLA"
|
||||
#endif
|
||||
#ifndef MSG_PREHEAT_PLA_N
|
||||
#define MSG_PREHEAT_PLA_N MSG_PREHEAT_PLA " "
|
||||
#endif
|
||||
#ifndef MSG_PREHEAT_PLA_ALL
|
||||
#define MSG_PREHEAT_PLA_ALL MSG_PREHEAT_PLA " All"
|
||||
#endif
|
||||
#ifndef MSG_PREHEAT_PLA_BEDONLY
|
||||
#define MSG_PREHEAT_PLA_BEDONLY MSG_PREHEAT_PLA " Bed"
|
||||
#endif
|
||||
#ifndef MSG_PREHEAT_PLA_SETTINGS
|
||||
#define MSG_PREHEAT_PLA_SETTINGS MSG_PREHEAT_PLA " conf"
|
||||
#endif
|
||||
#ifndef MSG_PREHEAT_ABS
|
||||
#define MSG_PREHEAT_ABS "Preheat ABS"
|
||||
#endif
|
||||
#ifndef MSG_PREHEAT_ABS_N
|
||||
#define MSG_PREHEAT_ABS_N MSG_PREHEAT_ABS " "
|
||||
#endif
|
||||
#ifndef MSG_PREHEAT_ABS_ALL
|
||||
#define MSG_PREHEAT_ABS_ALL MSG_PREHEAT_ABS " All"
|
||||
#endif
|
||||
#ifndef MSG_PREHEAT_ABS_BEDONLY
|
||||
#define MSG_PREHEAT_ABS_BEDONLY MSG_PREHEAT_ABS " Bed"
|
||||
#endif
|
||||
#ifndef MSG_PREHEAT_ABS_SETTINGS
|
||||
#define MSG_PREHEAT_ABS_SETTINGS MSG_PREHEAT_ABS " conf"
|
||||
#endif
|
||||
#ifndef MSG_H1
|
||||
#define MSG_H1 "1"
|
||||
#endif
|
||||
#ifndef MSG_H2
|
||||
#define MSG_H2 "2"
|
||||
#endif
|
||||
#ifndef MSG_H3
|
||||
#define MSG_H3 "3"
|
||||
#endif
|
||||
#ifndef MSG_H4
|
||||
#define MSG_H4 "4"
|
||||
#endif
|
||||
#ifndef MSG_COOLDOWN
|
||||
#define MSG_COOLDOWN "Cooldown"
|
||||
#endif
|
||||
#ifndef MSG_SWITCH_PS_ON
|
||||
#define MSG_SWITCH_PS_ON "Switch power on"
|
||||
#endif
|
||||
#ifndef MSG_SWITCH_PS_OFF
|
||||
#define MSG_SWITCH_PS_OFF "Switch power off"
|
||||
#endif
|
||||
#ifndef MSG_EXTRUDE
|
||||
#define MSG_EXTRUDE "Extrude"
|
||||
#endif
|
||||
#ifndef MSG_RETRACT
|
||||
#define MSG_RETRACT "Retract"
|
||||
#endif
|
||||
#ifndef MSG_MOVE_AXIS
|
||||
#define MSG_MOVE_AXIS "Move axis"
|
||||
#endif
|
||||
#ifndef MSG_MOVE_X
|
||||
#define MSG_MOVE_X "Move X"
|
||||
#endif
|
||||
#ifndef MSG_MOVE_Y
|
||||
#define MSG_MOVE_Y "Move Y"
|
||||
#endif
|
||||
#ifndef MSG_MOVE_Z
|
||||
#define MSG_MOVE_Z "Move Z"
|
||||
#endif
|
||||
#ifndef MSG_MOVE_E
|
||||
#define MSG_MOVE_E "Extruder"
|
||||
#endif
|
||||
#ifndef MSG_MOVE_01MM
|
||||
#define MSG_MOVE_01MM "Move 0.1mm"
|
||||
#endif
|
||||
#ifndef MSG_MOVE_1MM
|
||||
#define MSG_MOVE_1MM "Move 1mm"
|
||||
#endif
|
||||
#ifndef MSG_MOVE_10MM
|
||||
#define MSG_MOVE_10MM "Move 10mm"
|
||||
#endif
|
||||
#ifndef MSG_SPEED
|
||||
#define MSG_SPEED "Speed"
|
||||
#endif
|
||||
#ifndef MSG_NOZZLE
|
||||
#define MSG_NOZZLE "Nozzle"
|
||||
#endif
|
||||
#ifndef MSG_N2
|
||||
#define MSG_N2 " 2"
|
||||
#endif
|
||||
#ifndef MSG_N3
|
||||
#define MSG_N3 " 3"
|
||||
#endif
|
||||
#ifndef MSG_N4
|
||||
#define MSG_N4 " 4"
|
||||
#endif
|
||||
#ifndef MSG_BED
|
||||
#define MSG_BED "Bed"
|
||||
#endif
|
||||
#ifndef MSG_FAN_SPEED
|
||||
#define MSG_FAN_SPEED "Fan speed"
|
||||
#endif
|
||||
#ifndef MSG_FLOW
|
||||
#define MSG_FLOW "Flow"
|
||||
#endif
|
||||
#ifndef MSG_F0
|
||||
#define MSG_F0 " 0"
|
||||
#endif
|
||||
#ifndef MSG_F1
|
||||
#define MSG_F1 " 1"
|
||||
#endif
|
||||
#ifndef MSG_F2
|
||||
#define MSG_F2 " 2"
|
||||
#endif
|
||||
#ifndef MSG_F3
|
||||
#define MSG_F3 " 3"
|
||||
#endif
|
||||
#ifndef MSG_CONTROL
|
||||
#define MSG_CONTROL "Control"
|
||||
#endif
|
||||
#ifndef MSG_MIN
|
||||
#define MSG_MIN " " STR_THERMOMETER " Min"
|
||||
#endif
|
||||
#ifndef MSG_MAX
|
||||
#define MSG_MAX " " STR_THERMOMETER " Max"
|
||||
#endif
|
||||
#ifndef MSG_FACTOR
|
||||
#define MSG_FACTOR " " STR_THERMOMETER " Fact"
|
||||
#endif
|
||||
#ifndef MSG_AUTOTEMP
|
||||
#define MSG_AUTOTEMP "Autotemp"
|
||||
#endif
|
||||
#ifndef MSG_ON
|
||||
#define MSG_ON "On "
|
||||
#endif
|
||||
#ifndef MSG_OFF
|
||||
#define MSG_OFF "Off"
|
||||
#endif
|
||||
#ifndef MSG_PID_P
|
||||
#define MSG_PID_P "PID-P"
|
||||
#endif
|
||||
#ifndef MSG_PID_I
|
||||
#define MSG_PID_I "PID-I"
|
||||
#endif
|
||||
#ifndef MSG_PID_D
|
||||
#define MSG_PID_D "PID-D"
|
||||
#endif
|
||||
#ifndef MSG_PID_C
|
||||
#define MSG_PID_C "PID-C"
|
||||
#endif
|
||||
#ifndef MSG_E2
|
||||
#define MSG_E2 " E2"
|
||||
#endif
|
||||
#ifndef MSG_E3
|
||||
#define MSG_E3 " E3"
|
||||
#endif
|
||||
#ifndef MSG_E4
|
||||
#define MSG_E4 " E4"
|
||||
#endif
|
||||
#ifndef MSG_ACC
|
||||
#define MSG_ACC "Accel"
|
||||
#endif
|
||||
#ifndef MSG_VXY_JERK
|
||||
#define MSG_VXY_JERK "Vxy-jerk"
|
||||
#endif
|
||||
#ifndef MSG_VZ_JERK
|
||||
#define MSG_VZ_JERK "Vz-jerk"
|
||||
#endif
|
||||
#ifndef MSG_VE_JERK
|
||||
#define MSG_VE_JERK "Ve-jerk"
|
||||
#endif
|
||||
#ifndef MSG_VMAX
|
||||
#define MSG_VMAX "Vmax "
|
||||
#endif
|
||||
#ifndef MSG_X
|
||||
#define MSG_X "x"
|
||||
#endif
|
||||
#ifndef MSG_Y
|
||||
#define MSG_Y "y"
|
||||
#endif
|
||||
#ifndef MSG_Z
|
||||
#define MSG_Z "z"
|
||||
#endif
|
||||
#ifndef MSG_E
|
||||
#define MSG_E "e"
|
||||
#endif
|
||||
#ifndef MSG_VMIN
|
||||
#define MSG_VMIN "Vmin"
|
||||
#endif
|
||||
#ifndef MSG_VTRAV_MIN
|
||||
#define MSG_VTRAV_MIN "VTrav min"
|
||||
#endif
|
||||
#ifndef MSG_AMAX
|
||||
#define MSG_AMAX "Amax "
|
||||
#endif
|
||||
#ifndef MSG_A_RETRACT
|
||||
#define MSG_A_RETRACT "A-retract"
|
||||
#endif
|
||||
#ifndef MSG_XSTEPS
|
||||
#define MSG_XSTEPS "Xsteps/mm"
|
||||
#endif
|
||||
#ifndef MSG_YSTEPS
|
||||
#define MSG_YSTEPS "Ysteps/mm"
|
||||
#endif
|
||||
#ifndef MSG_ZSTEPS
|
||||
#define MSG_ZSTEPS "Zsteps/mm"
|
||||
#endif
|
||||
#ifndef MSG_ESTEPS
|
||||
#define MSG_ESTEPS "Esteps/mm"
|
||||
#endif
|
||||
#ifndef MSG_TEMPERATURE
|
||||
#define MSG_TEMPERATURE "Temperature"
|
||||
#endif
|
||||
#ifndef MSG_MOTION
|
||||
#define MSG_MOTION "Motion"
|
||||
#endif
|
||||
#ifndef MSG_VOLUMETRIC
|
||||
#define MSG_VOLUMETRIC "Filament"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3
|
||||
#endif
|
||||
#ifndef MSG_VOLUMETRIC_ENABLED
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3
|
||||
#endif
|
||||
#ifndef MSG_FILAMENT_SIZE_EXTRUDER_0
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1"
|
||||
#endif
|
||||
#ifndef MSG_FILAMENT_SIZE_EXTRUDER_1
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2"
|
||||
#endif
|
||||
#ifndef MSG_FILAMENT_SIZE_EXTRUDER_2
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3"
|
||||
#endif
|
||||
#ifndef MSG_FILAMENT_SIZE_EXTRUDER_3
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_3 "Fil. Dia. 4"
|
||||
#endif
|
||||
#ifndef MSG_CONTRAST
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#endif
|
||||
#ifndef MSG_STORE_EPROM
|
||||
#define MSG_STORE_EPROM "Store memory"
|
||||
#endif
|
||||
#ifndef MSG_LOAD_EPROM
|
||||
#define MSG_LOAD_EPROM "Load memory"
|
||||
#endif
|
||||
#ifndef MSG_RESTORE_FAILSAFE
|
||||
#define MSG_RESTORE_FAILSAFE "Restore failsafe"
|
||||
#endif
|
||||
#ifndef MSG_REFRESH
|
||||
#define MSG_REFRESH "Refresh"
|
||||
#endif
|
||||
#ifndef MSG_WATCH
|
||||
#define MSG_WATCH "Info screen"
|
||||
#endif
|
||||
#ifndef MSG_PREPARE
|
||||
#define MSG_PREPARE "Prepare"
|
||||
#endif
|
||||
#ifndef MSG_TUNE
|
||||
#define MSG_TUNE "Tune"
|
||||
#endif
|
||||
#ifndef MSG_PAUSE_PRINT
|
||||
#define MSG_PAUSE_PRINT "Pause print"
|
||||
#endif
|
||||
#ifndef MSG_RESUME_PRINT
|
||||
#define MSG_RESUME_PRINT "Resume print"
|
||||
#endif
|
||||
#ifndef MSG_STOP_PRINT
|
||||
#define MSG_STOP_PRINT "Stop print"
|
||||
#endif
|
||||
#ifndef MSG_CARD_MENU
|
||||
#define MSG_CARD_MENU "Print from SD"
|
||||
#endif
|
||||
#ifndef MSG_NO_CARD
|
||||
#define MSG_NO_CARD "No SD card"
|
||||
#endif
|
||||
#ifndef MSG_DWELL
|
||||
#define MSG_DWELL "Sleep..."
|
||||
#endif
|
||||
#ifndef MSG_USERWAIT
|
||||
#define MSG_USERWAIT "Wait for user..."
|
||||
#endif
|
||||
#ifndef MSG_RESUMING
|
||||
#define MSG_RESUMING "Resuming print"
|
||||
#endif
|
||||
#ifndef MSG_PRINT_ABORTED
|
||||
#define MSG_PRINT_ABORTED "Print aborted"
|
||||
#endif
|
||||
#ifndef MSG_NO_MOVE
|
||||
#define MSG_NO_MOVE "No move."
|
||||
#endif
|
||||
#ifndef MSG_KILLED
|
||||
#define MSG_KILLED "KILLED. "
|
||||
#endif
|
||||
#ifndef MSG_STOPPED
|
||||
#define MSG_STOPPED "STOPPED. "
|
||||
#endif
|
||||
#ifndef MSG_CONTROL_RETRACT
|
||||
#define MSG_CONTROL_RETRACT "Retract mm"
|
||||
#endif
|
||||
#ifndef MSG_CONTROL_RETRACT_SWAP
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Swap Re.mm"
|
||||
#endif
|
||||
#ifndef MSG_CONTROL_RETRACTF
|
||||
#define MSG_CONTROL_RETRACTF "Retract V"
|
||||
#endif
|
||||
#ifndef MSG_CONTROL_RETRACT_ZLIFT
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm"
|
||||
#endif
|
||||
#ifndef MSG_CONTROL_RETRACT_RECOVER
|
||||
#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
|
||||
#endif
|
||||
#ifndef MSG_CONTROL_RETRACT_RECOVER_SWAP
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm"
|
||||
#endif
|
||||
#ifndef MSG_CONTROL_RETRACT_RECOVERF
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
|
||||
#endif
|
||||
#ifndef MSG_AUTORETRACT
|
||||
#define MSG_AUTORETRACT "AutoRetr."
|
||||
#endif
|
||||
#ifndef MSG_FILAMENTCHANGE
|
||||
#define MSG_FILAMENTCHANGE "Change filament"
|
||||
#endif
|
||||
#ifndef MSG_INIT_SDCARD
|
||||
#define MSG_INIT_SDCARD "Init. SD card"
|
||||
#endif
|
||||
#ifndef MSG_CNG_SDCARD
|
||||
#define MSG_CNG_SDCARD "Change SD card"
|
||||
#endif
|
||||
#ifndef MSG_ZPROBE_OUT
|
||||
#define MSG_ZPROBE_OUT "Z probe out. bed"
|
||||
#endif
|
||||
#ifndef MSG_POSITION_UNKNOWN
|
||||
#define MSG_POSITION_UNKNOWN "Home X/Y before Z"
|
||||
#endif
|
||||
#ifndef MSG_ZPROBE_ZOFFSET
|
||||
#define MSG_ZPROBE_ZOFFSET "Z Offset"
|
||||
#endif
|
||||
#ifndef MSG_BABYSTEP_X
|
||||
#define MSG_BABYSTEP_X "Babystep X"
|
||||
#endif
|
||||
#ifndef MSG_BABYSTEP_Y
|
||||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
#endif
|
||||
#ifndef MSG_BABYSTEP_Z
|
||||
#define MSG_BABYSTEP_Z "Babystep Z"
|
||||
#endif
|
||||
#ifndef MSG_ENDSTOP_ABORT
|
||||
#define MSG_ENDSTOP_ABORT "Endstop abort"
|
||||
#endif
|
||||
#ifndef MSG_HEATING_FAILED_LCD
|
||||
#define MSG_HEATING_FAILED_LCD "Heating failed"
|
||||
#endif
|
||||
#ifndef MSG_ERR_REDUNDANT_TEMP
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP ERROR"
|
||||
#endif
|
||||
#ifndef MSG_THERMAL_RUNAWAY
|
||||
#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY"
|
||||
#endif
|
||||
#ifndef MSG_ERR_MAXTEMP
|
||||
#define MSG_ERR_MAXTEMP "Err: MAXTEMP"
|
||||
#endif
|
||||
#ifndef MSG_ERR_MINTEMP
|
||||
#define MSG_ERR_MINTEMP "Err: MINTEMP"
|
||||
#endif
|
||||
#ifndef MSG_ERR_MAXTEMP_BED
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: MAXTEMP BED"
|
||||
#endif
|
||||
|
||||
#ifdef DELTA_CALIBRATION_MENU
|
||||
#define MSG_DELTA_CALIBRATE "Delta Calibration"
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrate X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrate Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrate Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center"
|
||||
#ifndef MSG_DELTA_CALIBRATE
|
||||
#define MSG_DELTA_CALIBRATE "Delta Calibration"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_X
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrate X"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_Y
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrate Y"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_Z
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrate Z"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_CENTER
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center"
|
||||
#endif
|
||||
#endif // DELTA_CALIBRATION_MENU
|
||||
|
||||
#endif // LANGUAGE_EN_H
|
||||
|
@ -17,38 +17,38 @@
|
||||
#define MSG_AUTO_HOME "Aja referenssiin"
|
||||
#define MSG_SET_HOME_OFFSETS "Set home offsets"
|
||||
#define MSG_SET_ORIGIN "Aseta origo"
|
||||
#define MSG_PREHEAT_PLA "Esilammita PLA"
|
||||
#define MSG_PREHEAT_PLA_N "Esilammita PLA "
|
||||
#define MSG_PREHEAT_PLA_ALL "Esila. PLA Kaikki"
|
||||
#define MSG_PREHEAT_PLA_BEDONLY "Esila. PLA Alusta"
|
||||
#define MSG_PREHEAT_PLA_SETTINGS "Esilamm. PLA konf"
|
||||
#define MSG_PREHEAT_ABS "Esilammita ABS"
|
||||
#define MSG_PREHEAT_ABS_N "Esilammita ABS "
|
||||
#define MSG_PREHEAT_ABS_ALL "Esila. ABS Kaikki"
|
||||
#define MSG_PREHEAT_ABS_BEDONLY "Esila. ABS Alusta"
|
||||
#define MSG_PREHEAT_ABS_SETTINGS "Esilamm. ABS konf"
|
||||
#define MSG_COOLDOWN "Jaahdyta"
|
||||
#define MSG_SWITCH_PS_ON "Virta paalle"
|
||||
#define MSG_PREHEAT_PLA "Esil" STR_ae "mmit" STR_ae " PLA"
|
||||
#define MSG_PREHEAT_PLA_N "Esil" STR_ae "mmit" STR_ae " PLA "
|
||||
#define MSG_PREHEAT_PLA_ALL "Esil" STR_ae ". PLA Kaikki"
|
||||
#define MSG_PREHEAT_PLA_BEDONLY "Esil" STR_ae ". PLA Alusta"
|
||||
#define MSG_PREHEAT_PLA_SETTINGS "Esil" STR_ae "mm. PLA konf"
|
||||
#define MSG_PREHEAT_ABS "Esil" STR_ae "mmit" STR_ae " ABS"
|
||||
#define MSG_PREHEAT_ABS_N "Esil" STR_ae "mmit" STR_ae " ABS "
|
||||
#define MSG_PREHEAT_ABS_ALL "Esil" STR_ae ". ABS Kaikki"
|
||||
#define MSG_PREHEAT_ABS_BEDONLY "Esil" STR_ae ". ABS Alusta"
|
||||
#define MSG_PREHEAT_ABS_SETTINGS "Esil" STR_ae "mm. ABS konf"
|
||||
#define MSG_COOLDOWN "J" STR_ae "" STR_ae "hdyt" STR_ae ""
|
||||
#define MSG_SWITCH_PS_ON "Virta p" STR_ae "" STR_ae "lle"
|
||||
#define MSG_SWITCH_PS_OFF "Virta pois"
|
||||
#define MSG_EXTRUDE "Pursota"
|
||||
#define MSG_RETRACT "Veda takaisin"
|
||||
#define MSG_RETRACT "Ved" STR_ae " takaisin"
|
||||
#define MSG_MOVE_AXIS "Liikuta akseleita"
|
||||
#define MSG_MOVE_X "Move X"
|
||||
#define MSG_MOVE_Y "Move Y"
|
||||
#define MSG_MOVE_Z "Move Z"
|
||||
#define MSG_MOVE_X "Liikuta X"
|
||||
#define MSG_MOVE_Y "Liikuta Y"
|
||||
#define MSG_MOVE_Z "Liikuta Z"
|
||||
#define MSG_MOVE_E "Extruder"
|
||||
#define MSG_MOVE_01MM "Move 0.1mm"
|
||||
#define MSG_MOVE_1MM "Move 1mm"
|
||||
#define MSG_MOVE_10MM "Move 10mm"
|
||||
#define MSG_MOVE_01MM "Liikuta 0.1mm"
|
||||
#define MSG_MOVE_1MM "Liikuta 1mm"
|
||||
#define MSG_MOVE_10MM "Liikuta 10mm"
|
||||
#define MSG_SPEED "Nopeus"
|
||||
#define MSG_NOZZLE "Suutin"
|
||||
#define MSG_BED "Alusta"
|
||||
#define MSG_FAN_SPEED "Tuul. nopeus"
|
||||
#define MSG_FLOW "Virtaus"
|
||||
#define MSG_CONTROL "Kontrolli"
|
||||
#define MSG_MIN " \002 Min"
|
||||
#define MSG_MAX " \002 Max"
|
||||
#define MSG_FACTOR " \002 Kerr"
|
||||
#define MSG_MIN STR_THERMOMETER " Min"
|
||||
#define MSG_MAX STR_THERMOMETER " Max"
|
||||
#define MSG_FACTOR STR_THERMOMETER " Kerr"
|
||||
#define MSG_AUTOTEMP "Autotemp"
|
||||
#define MSG_ON "On "
|
||||
#define MSG_OFF "Off"
|
||||
@ -73,24 +73,24 @@
|
||||
#define MSG_YSTEPS "Ysteps/mm"
|
||||
#define MSG_ZSTEPS "Zsteps/mm"
|
||||
#define MSG_ESTEPS "Esteps/mm"
|
||||
#define MSG_TEMPERATURE "Lampotila"
|
||||
#define MSG_TEMPERATURE "L" STR_ae "mp" STR_oe "tila"
|
||||
#define MSG_MOTION "Liike"
|
||||
#define MSG_VOLUMETRIC "Filament"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm3"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm3"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3"
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_CONTRAST "LCD kontrasti"
|
||||
#define MSG_STORE_EPROM "Tallenna muistiin"
|
||||
#define MSG_LOAD_EPROM "Lataa muistista"
|
||||
#define MSG_RESTORE_FAILSAFE "Palauta oletus"
|
||||
#define MSG_REFRESH "Paivita"
|
||||
#define MSG_REFRESH "P" STR_ae "ivit" STR_ae ""
|
||||
#define MSG_WATCH "Seuraa"
|
||||
#define MSG_PREPARE "Valmistele"
|
||||
#define MSG_TUNE "Saada"
|
||||
#define MSG_PAUSE_PRINT "Keskeyta tulostus"
|
||||
#define MSG_TUNE "S" STR_ae "" STR_ae "d" STR_ae ""
|
||||
#define MSG_PAUSE_PRINT "Keskeyt" STR_ae " tulostus"
|
||||
#define MSG_RESUME_PRINT "Jatka tulostusta"
|
||||
#define MSG_STOP_PRINT "Pysayta tulostus"
|
||||
#define MSG_STOP_PRINT "Pys" STR_ae "yt" STR_ae " tulostus"
|
||||
#define MSG_CARD_MENU "Korttivalikko"
|
||||
#define MSG_NO_CARD "Ei korttia"
|
||||
#define MSG_DWELL "Nukkumassa..."
|
||||
@ -100,9 +100,9 @@
|
||||
#define MSG_NO_MOVE "Ei liiketta."
|
||||
#define MSG_KILLED "KILLED. "
|
||||
#define MSG_STOPPED "STOPPED. "
|
||||
#define MSG_CONTROL_RETRACT "Veda mm"
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Va. Veda mm"
|
||||
#define MSG_CONTROL_RETRACTF "Veda V"
|
||||
#define MSG_CONTROL_RETRACT "Ved" STR_ae " mm"
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Va. Ved" STR_ae " mm"
|
||||
#define MSG_CONTROL_RETRACTF "Ved" STR_ae " V"
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT "Z mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Va. UnRet +mm"
|
||||
@ -120,11 +120,11 @@
|
||||
#define MSG_ENDSTOP_ABORT "Endstop abort"
|
||||
|
||||
#ifdef DELTA_CALIBRATION_MENU
|
||||
#define MSG_DELTA_CALIBRATE "Delta Calibration"
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrate X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrate Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrate Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center"
|
||||
#define MSG_DELTA_CALIBRATE "Delta Kalibrointi"
|
||||
#define MSG_DELTA_CALIBRATE_X "Kalibroi X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Kalibroi Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Kalibroi Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Kalibroi Center"
|
||||
#endif // DELTA_CALIBRATION_MENU
|
||||
|
||||
#endif // LANGUAGE_FI_H
|
||||
#endif // LANGUAGE_FI_H
|
@ -13,7 +13,7 @@
|
||||
#define WELCOME_MSG MACHINE_NAME " Готов."
|
||||
#define MSG_SD_INSERTED "Карта вставлена"
|
||||
#define MSG_SD_REMOVED "Карта извлечена"
|
||||
#define MSG_MAIN "Меню \003"
|
||||
#define MSG_MAIN "Меню"
|
||||
#define MSG_AUTOSTART "Автостарт"
|
||||
#define MSG_DISABLE_STEPPERS "Выкл. двигатели"
|
||||
#define MSG_AUTO_HOME "Парковка"
|
||||
@ -43,14 +43,14 @@
|
||||
#define MSG_MOVE_1MM "Move 1mm"
|
||||
#define MSG_MOVE_10MM "Move 10mm"
|
||||
#define MSG_SPEED "Скорость"
|
||||
#define MSG_NOZZLE "\002 Фильера"
|
||||
#define MSG_BED "\002 Кровать"
|
||||
#define MSG_NOZZLE LCD_STR_THERMOMETER " Фильера"
|
||||
#define MSG_BED LCD_STR_THERMOMETER " Кровать"
|
||||
#define MSG_FAN_SPEED "Куллер"
|
||||
#define MSG_FLOW "Поток"
|
||||
#define MSG_CONTROL "Настройки \003"
|
||||
#define MSG_MIN "\002 Минимум"
|
||||
#define MSG_MAX "\002 Максимум"
|
||||
#define MSG_FACTOR "\002 Фактор"
|
||||
#define MSG_CONTROL "Настройки"
|
||||
#define MSG_MIN LCD_STR_THERMOMETER " Минимум"
|
||||
#define MSG_MAX LCD_STR_THERMOMETER " Максимум"
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER " Фактор"
|
||||
#define MSG_AUTOTEMP "Autotemp"
|
||||
#define MSG_ON "Вкл. "
|
||||
#define MSG_OFF "Выкл. "
|
||||
@ -75,10 +75,10 @@
|
||||
#define MSG_YSTEPS "Y шаг/mm"
|
||||
#define MSG_ZSTEPS "Z шаг/mm"
|
||||
#define MSG_ESTEPS "E шаг/mm"
|
||||
#define MSG_TEMPERATURE "Температура \x7E"
|
||||
#define MSG_MOTION "Скорости \x7E"
|
||||
#define MSG_TEMPERATURE "Температура"
|
||||
#define MSG_MOTION "Скорости"
|
||||
#define MSG_VOLUMETRIC "Filament"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm3"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm3"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3"
|
||||
@ -86,14 +86,14 @@
|
||||
#define MSG_STORE_EPROM "Сохранить в EPROM"
|
||||
#define MSG_LOAD_EPROM "Загруз. из EPROM"
|
||||
#define MSG_RESTORE_FAILSAFE "Сброс настроек"
|
||||
#define MSG_REFRESH "\004Обновить"
|
||||
#define MSG_WATCH "Обзор \003"
|
||||
#define MSG_PREPARE "Действия \x7E"
|
||||
#define MSG_TUNE "Настройки \x7E"
|
||||
#define MSG_REFRESH LCD_STR_REFRESH "Обновить"
|
||||
#define MSG_WATCH "Обзор"
|
||||
#define MSG_PREPARE "Действия"
|
||||
#define MSG_TUNE "Настройки"
|
||||
#define MSG_PAUSE_PRINT "Продолжить печать"
|
||||
#define MSG_RESUME_PRINT "возобн. печать"
|
||||
#define MSG_STOP_PRINT "Остановить печать"
|
||||
#define MSG_CARD_MENU "Меню карты \x7E"
|
||||
#define MSG_CARD_MENU "Меню карты"
|
||||
#define MSG_NO_CARD "Нет карты"
|
||||
#define MSG_DWELL "Сон..."
|
||||
#define MSG_USERWAIT "Ожиданиие"
|
||||
|
@ -36,7 +36,7 @@
|
||||
#include "pins_SETHI.h"
|
||||
#elif MB(RAMPS_OLD)
|
||||
#include "pins_RAMPS_OLD.h"
|
||||
#elif IS_RAMPS
|
||||
#elif MB(RAMPS_13_EFB) || MB(RAMPS_13_EEB) || MB(RAMPS_13_EFF) || MB(RAMPS_13_EEF)
|
||||
#include "pins_RAMPS_13.h"
|
||||
#elif MB(DUEMILANOVE_328P)
|
||||
#include "pins_DUEMILANOVE_328P.h"
|
||||
@ -110,6 +110,10 @@
|
||||
#include "pins_WITBOX.h"
|
||||
#elif MB(HEPHESTOS)
|
||||
#include "pins_HEPHESTOS.h"
|
||||
#elif MB(BAM_DICE)
|
||||
#include "pins_RAMPS_13.h"
|
||||
#elif MB(BAM_DICE_DUE)
|
||||
#include "pins_BAM_DICE_DUE.h"
|
||||
#elif MB(99)
|
||||
#include "pins_99.h"
|
||||
#else
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
#include "pins_RAMPS_13.h"
|
||||
|
||||
#define Z_ENABLE_PIN 63
|
||||
|
||||
#define X_MAX_PIN 2
|
||||
#define Y_MAX_PIN 15
|
||||
#define Z_MAX_PIN -1
|
||||
|
@ -3,3 +3,11 @@
|
||||
*/
|
||||
|
||||
#include "pins_RAMPS_13.h"
|
||||
|
||||
#define FAN_PIN 9 // (Sprinter config)
|
||||
#define HEATER_1_PIN -1
|
||||
|
||||
#ifdef TEMP_STAT_LEDS
|
||||
#define STAT_LED_RED 6
|
||||
#define STAT_LED_BLUE 11
|
||||
#endif
|
||||
|
@ -4,6 +4,9 @@
|
||||
|
||||
#include "pins_RAMPS_13.h"
|
||||
|
||||
#define FAN_PIN 9 // (Sprinter config)
|
||||
#define BEEPER 33
|
||||
|
||||
#define E2_STEP_PIN 23
|
||||
#define E2_DIR_PIN 25
|
||||
#define E2_ENABLE_PIN 40
|
||||
@ -16,15 +19,16 @@
|
||||
#define E4_DIR_PIN 37
|
||||
#define E4_ENABLE_PIN 42
|
||||
|
||||
#define HEATER_1_PIN -1
|
||||
#define HEATER_2_PIN 16
|
||||
#define HEATER_3_PIN 17
|
||||
#define HEATER_4_PIN 4
|
||||
#define HEATER_5_PIN 5
|
||||
#define HEATER_6_PIN 6
|
||||
#define HEATER_4_PIN 4
|
||||
#define HEATER_5_PIN 5
|
||||
#define HEATER_6_PIN 6
|
||||
#define HEATER_7_PIN 11
|
||||
|
||||
#define TEMP_2_PIN 12 // ANALOG NUMBERING
|
||||
#define TEMP_3_PIN 11 // ANALOG NUMBERING
|
||||
#define TEMP_4_PIN 10 // ANALOG NUMBERING
|
||||
#define TC1 4 // ANALOG NUMBERING Thermo couple on Azteeg X3Pro
|
||||
#define TC2 5 // ANALOG NUMBERING Thermo couple on Azteeg X3Pro
|
||||
#define TC1 4 // ANALOG NUMBERING Thermo couple on Azteeg X3Pro
|
||||
#define TC2 5 // ANALOG NUMBERING Thermo couple on Azteeg X3Pro
|
||||
|
11
Marlin/pins_BAM_DICE_DUE.h
Normal file
11
Marlin/pins_BAM_DICE_DUE.h
Normal file
@ -0,0 +1,11 @@
|
||||
/**
|
||||
* BAM&DICE Due (Arduino Mega) pin assignments
|
||||
*/
|
||||
|
||||
#include "pins_RAMPS_13.h"
|
||||
|
||||
#define FAN_PIN 9 // (Sprinter config)
|
||||
#define HEATER_1_PIN -1
|
||||
|
||||
#define TEMP_0_PIN 9 // ANALOG NUMBERING
|
||||
#define TEMP_1_PIN 11 // ANALOG NUMBERING
|
@ -87,9 +87,3 @@
|
||||
|
||||
// Cheaptronic v1.0 does not use this port
|
||||
#define SDCARDDETECT -1
|
||||
|
||||
// Encoder rotation values
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
|
@ -74,12 +74,6 @@
|
||||
#define BLEN_B 1
|
||||
#define BLEN_A 0
|
||||
|
||||
//encoder rotation values
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
|
||||
#endif // RA_CONTROL_PANEL
|
||||
|
||||
#ifdef RA_DISCO
|
||||
|
@ -3,3 +3,6 @@
|
||||
*/
|
||||
|
||||
#include "pins_RAMPS_13.h"
|
||||
|
||||
#define FAN_PIN 9 // (Sprinter config)
|
||||
#define HEATER_1_PIN -1
|
||||
|
@ -83,10 +83,4 @@
|
||||
|
||||
#define SDCARDDETECT -1 // Ramps does not use this port
|
||||
|
||||
//encoder rotation values
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
|
||||
#endif // ULTRA_LCD && NEWPANEL
|
||||
|
@ -80,9 +80,3 @@
|
||||
#define BLEN_A 0
|
||||
|
||||
#define SDCARDDETECT -1 // Megatronics does not use this port
|
||||
|
||||
// Encoder rotation values
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
|
@ -95,9 +95,3 @@
|
||||
#define BLEN_A 0
|
||||
|
||||
#define SDCARDDETECT -1 // Megatronics does not use this port
|
||||
|
||||
// Encoder rotation values
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
|
@ -8,6 +8,20 @@
|
||||
|
||||
#define LARGE_FLASH true
|
||||
|
||||
// Servo support
|
||||
#ifdef NUM_SERVOS
|
||||
#define SERVO0_PIN 46 //AUX3-6
|
||||
#if NUM_SERVOS > 1
|
||||
#define SERVO1_PIN 47 //AUX3-5
|
||||
#if NUM_SERVOS > 2
|
||||
#define SERVO2_PIN 48 //AUX3-4
|
||||
#if NUM_SERVOS > 3
|
||||
#define SERVO2_PIN 49 //AUX3-3
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define X_STEP_PIN 58
|
||||
#define X_DIR_PIN 57
|
||||
#define X_ENABLE_PIN 59
|
||||
@ -81,9 +95,3 @@
|
||||
#define BLEN_A 0
|
||||
|
||||
#define SDCARDDETECT -1 // Megatronics does not use this port
|
||||
|
||||
// Encoder rotation values
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
|
@ -116,11 +116,6 @@
|
||||
|
||||
#define SDCARDDETECT 81 // Ramps does not use this port
|
||||
|
||||
//encoder rotation values
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
#else //!NEWPANEL - old style panel with shift register
|
||||
//arduino pin witch triggers an piezzo beeper
|
||||
#define BEEPER 33 No Beeper added
|
||||
@ -138,12 +133,6 @@
|
||||
#define LCD_PINS_D6 27
|
||||
#define LCD_PINS_D7 29
|
||||
|
||||
//encoder rotation values
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
|
||||
//bits in the shift register that carry the buttons for:
|
||||
// left up center down right red
|
||||
#define BL_LE 7
|
||||
|
@ -7,10 +7,8 @@
|
||||
* RAMPS_13_EEB (Extruder, Extruder, Bed)
|
||||
* RAMPS_13_EFF (Extruder, Fan, Fan)
|
||||
* RAMPS_13_EEF (Extruder, Extruder, Fan)
|
||||
* 3DRAG
|
||||
* K8200
|
||||
* AZTEEG_X3
|
||||
* AZTEEG_X3_PRO
|
||||
*
|
||||
* Other pins_MYBOARD.h files may override these defaults
|
||||
*/
|
||||
|
||||
#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
|
||||
@ -63,7 +61,7 @@
|
||||
#define FILWIDTH_PIN 5
|
||||
#endif
|
||||
|
||||
#if MB(RAMPS_13_EFB) || MB(RAMPS_13_EFF) || MB(AZTEEG_X3) || MB(AZTEEG_X3_PRO) || MB(WITBOX) || MB(HEPHESTOS)
|
||||
#if MB(RAMPS_13_EFB) || MB(RAMPS_13_EFF)
|
||||
#define FAN_PIN 9 // (Sprinter config)
|
||||
#if MB(RAMPS_13_EFF)
|
||||
#define CONTROLLERFAN_PIN -1 // Pin used for the fan to cool controller
|
||||
@ -88,7 +86,7 @@
|
||||
#define HEATER_0_PIN 10 // EXTRUDER 1
|
||||
#endif
|
||||
|
||||
#if MB(RAMPS_13_EFB) || MB(AZTEEG_X3) || MB(WITBOX) || MB(HEPHESTOS)
|
||||
#if MB(RAMPS_13_EFB)
|
||||
#define HEATER_1_PIN -1
|
||||
#else
|
||||
#define HEATER_1_PIN 9 // EXTRUDER 2 (FAN On Sprinter)
|
||||
@ -110,40 +108,36 @@
|
||||
|
||||
#ifdef NUM_SERVOS
|
||||
#define SERVO0_PIN 11
|
||||
|
||||
#if NUM_SERVOS > 1
|
||||
#define SERVO1_PIN 6
|
||||
#endif
|
||||
|
||||
#if NUM_SERVOS > 2
|
||||
#define SERVO2_PIN 5
|
||||
#endif
|
||||
|
||||
#if NUM_SERVOS > 3
|
||||
#define SERVO3_PIN 4
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if MB(AZTEEG_X3_PRO)
|
||||
#define BEEPER 33
|
||||
#endif
|
||||
|
||||
#ifdef TEMP_STAT_LEDS
|
||||
#if MB(AZTEEG_X3)
|
||||
#define STAT_LED_RED 6
|
||||
#define STAT_LED_BLUE 11
|
||||
#define SERVO1_PIN 6
|
||||
#if NUM_SERVOS > 2
|
||||
#define SERVO2_PIN 5
|
||||
#if NUM_SERVOS > 3
|
||||
#define SERVO3_PIN 4
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef ULTRA_LCD
|
||||
|
||||
#ifdef NEWPANEL
|
||||
#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
|
||||
#define LCD_PINS_D7 29
|
||||
#ifdef PANEL_ONE
|
||||
#define LCD_PINS_RS 40
|
||||
#define LCD_PINS_ENABLE 42
|
||||
#define LCD_PINS_D4 65
|
||||
#define LCD_PINS_D5 66
|
||||
#define LCD_PINS_D6 44
|
||||
#define LCD_PINS_D7 64
|
||||
#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
|
||||
#define LCD_PINS_D7 29
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
#define BEEPER 37
|
||||
@ -178,6 +172,10 @@
|
||||
#define SHIFT_OUT 40 // shift register
|
||||
#define SHIFT_CLK 44 // shift register
|
||||
#define SHIFT_LD 42 // shift register
|
||||
#elif defined(PANEL_ONE)
|
||||
#define BTN_EN1 59 // AUX2 PIN 3
|
||||
#define BTN_EN2 63 // AUX2 PIN 4
|
||||
#define BTN_ENC 49 // AUX3 PIN 7
|
||||
#else
|
||||
#define BTN_EN1 37
|
||||
#define BTN_EN2 35
|
||||
|
@ -6,6 +6,10 @@
|
||||
#error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
|
||||
#endif
|
||||
|
||||
#if EXTRUDERS > 3
|
||||
#error RUMBA supports up to 3 extruders. Comment this line to keep going.
|
||||
#endif
|
||||
|
||||
#define X_STEP_PIN 17
|
||||
#define X_DIR_PIN 16
|
||||
#define X_ENABLE_PIN 48
|
||||
|
@ -3,3 +3,6 @@
|
||||
*/
|
||||
|
||||
#include "pins_RAMPS_13.h"
|
||||
|
||||
#define FAN_PIN 9 // (Sprinter config)
|
||||
#define HEATER_1_PIN -1
|
||||
|
@ -629,13 +629,21 @@ block->steps_y = labs((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-positi
|
||||
block->direction_bits |= (1<<Y_AXIS);
|
||||
}
|
||||
#else
|
||||
if (target[X_AXIS] < position[X_AXIS])
|
||||
{
|
||||
block->direction_bits |= (1<<X_HEAD); //AlexBorro: Save the real Extruder (head) direction in X Axis
|
||||
}
|
||||
if (target[Y_AXIS] < position[Y_AXIS])
|
||||
{
|
||||
block->direction_bits |= (1<<Y_HEAD); //AlexBorro: Save the real Extruder (head) direction in Y Axis
|
||||
}
|
||||
if ((target[X_AXIS]-position[X_AXIS]) + (target[Y_AXIS]-position[Y_AXIS]) < 0)
|
||||
{
|
||||
block->direction_bits |= (1<<X_AXIS);
|
||||
block->direction_bits |= (1<<X_AXIS); //AlexBorro: Motor A direction (Incorrectly implemented as X_AXIS)
|
||||
}
|
||||
if ((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-position[Y_AXIS]) < 0)
|
||||
{
|
||||
block->direction_bits |= (1<<Y_AXIS);
|
||||
block->direction_bits |= (1<<Y_AXIS); //AlexBorro: Motor B direction (Incorrectly implemented as Y_AXIS)
|
||||
}
|
||||
#endif
|
||||
if (target[Z_AXIS] < position[Z_AXIS])
|
||||
|
@ -43,7 +43,7 @@ block_t *current_block; // A pointer to the block currently being traced
|
||||
//===========================================================================
|
||||
//=============================private variables ============================
|
||||
//===========================================================================
|
||||
//static makes it inpossible to be called from outside of this file by extern.!
|
||||
//static makes it impossible to be called from outside of this file by extern.!
|
||||
|
||||
// Variables used by The Stepper Driver Interrupt
|
||||
static unsigned char out_bits; // The next stepping-bits to be output
|
||||
@ -187,7 +187,7 @@ void checkHitEndstops()
|
||||
SERIAL_ECHOPAIR(" Z:",(float)endstops_trigsteps[Z_AXIS]/axis_steps_per_unit[Z_AXIS]);
|
||||
LCD_MESSAGEPGM(MSG_ENDSTOPS_HIT "Z");
|
||||
}
|
||||
SERIAL_ECHOLN("");
|
||||
SERIAL_EOL;
|
||||
endstop_x_hit=false;
|
||||
endstop_y_hit=false;
|
||||
endstop_z_hit=false;
|
||||
@ -399,85 +399,84 @@ ISR(TIMER1_COMPA_vect)
|
||||
count_direction[Y_AXIS]=1;
|
||||
}
|
||||
|
||||
// Set direction en check limit switches
|
||||
#ifndef COREXY
|
||||
if ((out_bits & (1<<X_AXIS)) != 0) { // stepping along -X axis
|
||||
#else
|
||||
if ((((out_bits & (1<<X_AXIS)) != 0)&&(out_bits & (1<<Y_AXIS)) != 0)) { //-X occurs for -A and -B
|
||||
#endif
|
||||
CHECK_ENDSTOPS
|
||||
{
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
||||
if ((current_block->active_extruder == 0 && X_HOME_DIR == -1)
|
||||
|| (current_block->active_extruder != 0 && X2_HOME_DIR == -1))
|
||||
#endif
|
||||
{
|
||||
#if defined(X_MIN_PIN) && X_MIN_PIN > -1
|
||||
bool x_min_endstop=(READ(X_MIN_PIN) != X_MIN_ENDSTOP_INVERTING);
|
||||
if(x_min_endstop && old_x_min_endstop && (current_block->steps_x > 0)) {
|
||||
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
||||
endstop_x_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
if(check_endstops) // check X and Y Endstops
|
||||
{
|
||||
#ifndef COREXY
|
||||
if ((out_bits & (1<<X_AXIS)) != 0) // stepping along -X axis (regular cartesians bot)
|
||||
#else
|
||||
if (!((current_block->steps_x == current_block->steps_y) && ((out_bits & (1<<X_AXIS))>>X_AXIS != (out_bits & (1<<Y_AXIS))>>Y_AXIS))) // AlexBorro: If DeltaX == -DeltaY, the movement is only in Y axis
|
||||
if ((out_bits & (1<<X_HEAD)) != 0) //AlexBorro: Head direction in -X axis for CoreXY bots.
|
||||
#endif
|
||||
{ // -direction
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
||||
if ((current_block->active_extruder == 0 && X_HOME_DIR == -1) || (current_block->active_extruder != 0 && X2_HOME_DIR == -1))
|
||||
#endif
|
||||
{
|
||||
#if defined(X_MIN_PIN) && X_MIN_PIN > -1
|
||||
bool x_min_endstop=(READ(X_MIN_PIN) != X_MIN_ENDSTOP_INVERTING);
|
||||
if(x_min_endstop && old_x_min_endstop && (current_block->steps_x > 0))
|
||||
{
|
||||
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
||||
endstop_x_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
}
|
||||
old_x_min_endstop = x_min_endstop;
|
||||
#endif
|
||||
}
|
||||
old_x_min_endstop = x_min_endstop;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
else { // +direction
|
||||
CHECK_ENDSTOPS
|
||||
{
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
||||
if ((current_block->active_extruder == 0 && X_HOME_DIR == 1)
|
||||
|| (current_block->active_extruder != 0 && X2_HOME_DIR == 1))
|
||||
#endif
|
||||
{
|
||||
#if defined(X_MAX_PIN) && X_MAX_PIN > -1
|
||||
bool x_max_endstop=(READ(X_MAX_PIN) != X_MAX_ENDSTOP_INVERTING);
|
||||
if(x_max_endstop && old_x_max_endstop && (current_block->steps_x > 0)){
|
||||
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
||||
endstop_x_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
else
|
||||
{ // +direction
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
||||
if ((current_block->active_extruder == 0 && X_HOME_DIR == 1) || (current_block->active_extruder != 0 && X2_HOME_DIR == 1))
|
||||
#endif
|
||||
{
|
||||
#if defined(X_MAX_PIN) && X_MAX_PIN > -1
|
||||
bool x_max_endstop=(READ(X_MAX_PIN) != X_MAX_ENDSTOP_INVERTING);
|
||||
if(x_max_endstop && old_x_max_endstop && (current_block->steps_x > 0))
|
||||
{
|
||||
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
||||
endstop_x_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
}
|
||||
old_x_max_endstop = x_max_endstop;
|
||||
#endif
|
||||
}
|
||||
old_x_max_endstop = x_max_endstop;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef COREXY
|
||||
if ((out_bits & (1<<Y_AXIS)) != 0) { // -direction
|
||||
#else
|
||||
if ((((out_bits & (1<<X_AXIS)) != 0)&&(out_bits & (1<<Y_AXIS)) == 0)) { // -Y occurs for -A and +B
|
||||
#endif
|
||||
CHECK_ENDSTOPS
|
||||
{
|
||||
#if defined(Y_MIN_PIN) && Y_MIN_PIN > -1
|
||||
bool y_min_endstop=(READ(Y_MIN_PIN) != Y_MIN_ENDSTOP_INVERTING);
|
||||
if(y_min_endstop && old_y_min_endstop && (current_block->steps_y > 0)) {
|
||||
endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS];
|
||||
endstop_y_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
}
|
||||
old_y_min_endstop = y_min_endstop;
|
||||
#ifndef COREXY
|
||||
if ((out_bits & (1<<Y_AXIS)) != 0) // -direction
|
||||
#else
|
||||
if (!((current_block->steps_x == current_block->steps_y) && ((out_bits & (1<<X_AXIS))>>X_AXIS == (out_bits & (1<<Y_AXIS))>>Y_AXIS))) // AlexBorro: If DeltaX == DeltaY, the movement is only in X axis
|
||||
if ((out_bits & (1<<Y_HEAD)) != 0) //AlexBorro: Head direction in -Y axis for CoreXY bots.
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else { // +direction
|
||||
CHECK_ENDSTOPS
|
||||
{
|
||||
#if defined(Y_MAX_PIN) && Y_MAX_PIN > -1
|
||||
bool y_max_endstop=(READ(Y_MAX_PIN) != Y_MAX_ENDSTOP_INVERTING);
|
||||
if(y_max_endstop && old_y_max_endstop && (current_block->steps_y > 0)){
|
||||
endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS];
|
||||
endstop_y_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
}
|
||||
old_y_max_endstop = y_max_endstop;
|
||||
#endif
|
||||
}
|
||||
{ // -direction
|
||||
#if defined(Y_MIN_PIN) && Y_MIN_PIN > -1
|
||||
bool y_min_endstop=(READ(Y_MIN_PIN) != Y_MIN_ENDSTOP_INVERTING);
|
||||
if(y_min_endstop && old_y_min_endstop && (current_block->steps_y > 0))
|
||||
{
|
||||
endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS];
|
||||
endstop_y_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
}
|
||||
old_y_min_endstop = y_min_endstop;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{ // +direction
|
||||
#if defined(Y_MAX_PIN) && Y_MAX_PIN > -1
|
||||
bool y_max_endstop=(READ(Y_MAX_PIN) != Y_MAX_ENDSTOP_INVERTING);
|
||||
if(y_max_endstop && old_y_max_endstop && (current_block->steps_y > 0))
|
||||
{
|
||||
endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS];
|
||||
endstop_y_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
}
|
||||
old_y_max_endstop = y_max_endstop;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if ((out_bits & (1<<Z_AXIS)) != 0) { // -direction
|
||||
@ -960,51 +959,41 @@ void st_init()
|
||||
|
||||
//Initialize Step Pins
|
||||
#if defined(X_STEP_PIN) && (X_STEP_PIN > -1)
|
||||
SET_OUTPUT(X_STEP_PIN);
|
||||
WRITE(X_STEP_PIN,INVERT_X_STEP_PIN);
|
||||
OUT_WRITE(X_STEP_PIN,INVERT_X_STEP_PIN);
|
||||
disable_x();
|
||||
#endif
|
||||
#if defined(X2_STEP_PIN) && (X2_STEP_PIN > -1)
|
||||
SET_OUTPUT(X2_STEP_PIN);
|
||||
WRITE(X2_STEP_PIN,INVERT_X_STEP_PIN);
|
||||
OUT_WRITE(X2_STEP_PIN,INVERT_X_STEP_PIN);
|
||||
disable_x();
|
||||
#endif
|
||||
#if defined(Y_STEP_PIN) && (Y_STEP_PIN > -1)
|
||||
SET_OUTPUT(Y_STEP_PIN);
|
||||
WRITE(Y_STEP_PIN,INVERT_Y_STEP_PIN);
|
||||
OUT_WRITE(Y_STEP_PIN,INVERT_Y_STEP_PIN);
|
||||
#if defined(Y_DUAL_STEPPER_DRIVERS) && defined(Y2_STEP_PIN) && (Y2_STEP_PIN > -1)
|
||||
SET_OUTPUT(Y2_STEP_PIN);
|
||||
WRITE(Y2_STEP_PIN,INVERT_Y_STEP_PIN);
|
||||
OUT_WRITE(Y2_STEP_PIN,INVERT_Y_STEP_PIN);
|
||||
#endif
|
||||
disable_y();
|
||||
#endif
|
||||
#if defined(Z_STEP_PIN) && (Z_STEP_PIN > -1)
|
||||
SET_OUTPUT(Z_STEP_PIN);
|
||||
WRITE(Z_STEP_PIN,INVERT_Z_STEP_PIN);
|
||||
OUT_WRITE(Z_STEP_PIN,INVERT_Z_STEP_PIN);
|
||||
#if defined(Z_DUAL_STEPPER_DRIVERS) && defined(Z2_STEP_PIN) && (Z2_STEP_PIN > -1)
|
||||
SET_OUTPUT(Z2_STEP_PIN);
|
||||
WRITE(Z2_STEP_PIN,INVERT_Z_STEP_PIN);
|
||||
OUT_WRITE(Z2_STEP_PIN,INVERT_Z_STEP_PIN);
|
||||
#endif
|
||||
disable_z();
|
||||
#endif
|
||||
#if defined(E0_STEP_PIN) && (E0_STEP_PIN > -1)
|
||||
SET_OUTPUT(E0_STEP_PIN);
|
||||
WRITE(E0_STEP_PIN,INVERT_E_STEP_PIN);
|
||||
OUT_WRITE(E0_STEP_PIN,INVERT_E_STEP_PIN);
|
||||
disable_e0();
|
||||
#endif
|
||||
#if defined(E1_STEP_PIN) && (E1_STEP_PIN > -1)
|
||||
SET_OUTPUT(E1_STEP_PIN);
|
||||
WRITE(E1_STEP_PIN,INVERT_E_STEP_PIN);
|
||||
OUT_WRITE(E1_STEP_PIN,INVERT_E_STEP_PIN);
|
||||
disable_e1();
|
||||
#endif
|
||||
#if defined(E2_STEP_PIN) && (E2_STEP_PIN > -1)
|
||||
SET_OUTPUT(E2_STEP_PIN);
|
||||
WRITE(E2_STEP_PIN,INVERT_E_STEP_PIN);
|
||||
OUT_WRITE(E2_STEP_PIN,INVERT_E_STEP_PIN);
|
||||
disable_e2();
|
||||
#endif
|
||||
#if defined(E3_STEP_PIN) && (E3_STEP_PIN > -1)
|
||||
SET_OUTPUT(E3_STEP_PIN);
|
||||
WRITE(E3_STEP_PIN,INVERT_E_STEP_PIN);
|
||||
OUT_WRITE(E3_STEP_PIN,INVERT_E_STEP_PIN);
|
||||
disable_e3();
|
||||
#endif
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -85,55 +85,25 @@ extern float current_temperature_bed;
|
||||
//inline so that there is no performance decrease.
|
||||
//deg=degreeCelsius
|
||||
|
||||
FORCE_INLINE float degHotend(uint8_t extruder) {
|
||||
return current_temperature[extruder];
|
||||
};
|
||||
FORCE_INLINE float degHotend(uint8_t extruder) { return current_temperature[extruder]; }
|
||||
FORCE_INLINE float degBed() { return current_temperature_bed; }
|
||||
|
||||
#ifdef SHOW_TEMP_ADC_VALUES
|
||||
FORCE_INLINE float rawHotendTemp(uint8_t extruder) {
|
||||
return current_temperature_raw[extruder];
|
||||
};
|
||||
|
||||
FORCE_INLINE float rawBedTemp() {
|
||||
return current_temperature_bed_raw;
|
||||
};
|
||||
FORCE_INLINE float rawHotendTemp(uint8_t extruder) { return current_temperature_raw[extruder]; }
|
||||
FORCE_INLINE float rawBedTemp() { return current_temperature_bed_raw; }
|
||||
#endif
|
||||
|
||||
FORCE_INLINE float degBed() {
|
||||
return current_temperature_bed;
|
||||
};
|
||||
FORCE_INLINE float degTargetHotend(uint8_t extruder) { return target_temperature[extruder]; }
|
||||
FORCE_INLINE float degTargetBed() { return target_temperature_bed; }
|
||||
|
||||
FORCE_INLINE float degTargetHotend(uint8_t extruder) {
|
||||
return target_temperature[extruder];
|
||||
};
|
||||
FORCE_INLINE void setTargetHotend(const float &celsius, uint8_t extruder) { target_temperature[extruder] = celsius; }
|
||||
FORCE_INLINE void setTargetBed(const float &celsius) { target_temperature_bed = celsius; }
|
||||
|
||||
FORCE_INLINE float degTargetBed() {
|
||||
return target_temperature_bed;
|
||||
};
|
||||
FORCE_INLINE bool isHeatingHotend(uint8_t extruder) { return target_temperature[extruder] > current_temperature[extruder]; }
|
||||
FORCE_INLINE bool isHeatingBed() { return target_temperature_bed > current_temperature_bed; }
|
||||
|
||||
FORCE_INLINE void setTargetHotend(const float &celsius, uint8_t extruder) {
|
||||
target_temperature[extruder] = celsius;
|
||||
};
|
||||
|
||||
FORCE_INLINE void setTargetBed(const float &celsius) {
|
||||
target_temperature_bed = celsius;
|
||||
};
|
||||
|
||||
FORCE_INLINE bool isHeatingHotend(uint8_t extruder){
|
||||
return target_temperature[extruder] > current_temperature[extruder];
|
||||
};
|
||||
|
||||
FORCE_INLINE bool isHeatingBed() {
|
||||
return target_temperature_bed > current_temperature_bed;
|
||||
};
|
||||
|
||||
FORCE_INLINE bool isCoolingHotend(uint8_t extruder) {
|
||||
return target_temperature[extruder] < current_temperature[extruder];
|
||||
};
|
||||
|
||||
FORCE_INLINE bool isCoolingBed() {
|
||||
return target_temperature_bed < current_temperature_bed;
|
||||
};
|
||||
FORCE_INLINE bool isCoolingHotend(uint8_t extruder) { return target_temperature[extruder] < current_temperature[extruder]; }
|
||||
FORCE_INLINE bool isCoolingBed() { return target_temperature_bed < current_temperature_bed; }
|
||||
|
||||
#define degHotend0() degHotend(0)
|
||||
#define degTargetHotend0() degTargetHotend(0)
|
||||
@ -141,38 +111,36 @@ FORCE_INLINE bool isCoolingBed() {
|
||||
#define isHeatingHotend0() isHeatingHotend(0)
|
||||
#define isCoolingHotend0() isCoolingHotend(0)
|
||||
#if EXTRUDERS > 1
|
||||
#define degHotend1() degHotend(1)
|
||||
#define degTargetHotend1() degTargetHotend(1)
|
||||
#define setTargetHotend1(_celsius) setTargetHotend((_celsius), 1)
|
||||
#define isHeatingHotend1() isHeatingHotend(1)
|
||||
#define isCoolingHotend1() isCoolingHotend(1)
|
||||
#define degHotend1() degHotend(1)
|
||||
#define degTargetHotend1() degTargetHotend(1)
|
||||
#define setTargetHotend1(_celsius) setTargetHotend((_celsius), 1)
|
||||
#define isHeatingHotend1() isHeatingHotend(1)
|
||||
#define isCoolingHotend1() isCoolingHotend(1)
|
||||
#else
|
||||
#define setTargetHotend1(_celsius) do{}while(0)
|
||||
#define setTargetHotend1(_celsius) do{}while(0)
|
||||
#endif
|
||||
#if EXTRUDERS > 2
|
||||
#define degHotend2() degHotend(2)
|
||||
#define degTargetHotend2() degTargetHotend(2)
|
||||
#define setTargetHotend2(_celsius) setTargetHotend((_celsius), 2)
|
||||
#define isHeatingHotend2() isHeatingHotend(2)
|
||||
#define isCoolingHotend2() isCoolingHotend(2)
|
||||
#define degHotend2() degHotend(2)
|
||||
#define degTargetHotend2() degTargetHotend(2)
|
||||
#define setTargetHotend2(_celsius) setTargetHotend((_celsius), 2)
|
||||
#define isHeatingHotend2() isHeatingHotend(2)
|
||||
#define isCoolingHotend2() isCoolingHotend(2)
|
||||
#else
|
||||
#define setTargetHotend2(_celsius) do{}while(0)
|
||||
#define setTargetHotend2(_celsius) do{}while(0)
|
||||
#endif
|
||||
#if EXTRUDERS > 3
|
||||
#define degHotend3() degHotend(3)
|
||||
#define degTargetHotend3() degTargetHotend(3)
|
||||
#define setTargetHotend3(_celsius) setTargetHotend((_celsius), 3)
|
||||
#define isHeatingHotend3() isHeatingHotend(3)
|
||||
#define isCoolingHotend3() isCoolingHotend(3)
|
||||
#define degHotend3() degHotend(3)
|
||||
#define degTargetHotend3() degTargetHotend(3)
|
||||
#define setTargetHotend3(_celsius) setTargetHotend((_celsius), 3)
|
||||
#define isHeatingHotend3() isHeatingHotend(3)
|
||||
#define isCoolingHotend3() isCoolingHotend(3)
|
||||
#else
|
||||
#define setTargetHotend3(_celsius) do{}while(0)
|
||||
#define setTargetHotend3(_celsius) do{}while(0)
|
||||
#endif
|
||||
#if EXTRUDERS > 4
|
||||
#error Invalid number of extruders
|
||||
#error Invalid number of extruders
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
int getHeaterPower(int heater);
|
||||
void disable_heater();
|
||||
void setWatch();
|
||||
@ -189,15 +157,14 @@ static bool thermal_runaway = false;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
FORCE_INLINE void autotempShutdown(){
|
||||
#ifdef AUTOTEMP
|
||||
if(autotemp_enabled)
|
||||
{
|
||||
autotemp_enabled=false;
|
||||
if(degTargetHotend(active_extruder)>autotemp_min)
|
||||
setTargetHotend(0,active_extruder);
|
||||
}
|
||||
#endif
|
||||
FORCE_INLINE void autotempShutdown() {
|
||||
#ifdef AUTOTEMP
|
||||
if (autotemp_enabled) {
|
||||
autotemp_enabled = false;
|
||||
if (degTargetHotend(active_extruder) > autotemp_min)
|
||||
setTargetHotend(0, active_extruder);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void PID_autotune(float temp, int extruder, int ncycles);
|
||||
|
@ -1095,6 +1095,29 @@ const short temptable_1047[][2] PROGMEM = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if (THERMISTORHEATER_0 == 999) || (THERMISTORHEATER_1 == 999) || (THERMISTORHEATER_2 == 999) || (THERMISTORHEATER_3 == 999) || (THERMISTORBED == 999) //User defined table
|
||||
// Dummy Thermistor table.. It will ALWAYS read a fixed value.
|
||||
#ifndef DUMMY_THERMISTOR_999_VALUE
|
||||
#define DUMMY_THERMISTOR_999_VALUE 25
|
||||
#endif
|
||||
const short temptable_999[][2] PROGMEM = {
|
||||
{1*OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE},
|
||||
{1023*OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE}
|
||||
};
|
||||
#endif
|
||||
|
||||
#if (THERMISTORHEATER_0 == 998) || (THERMISTORHEATER_1 == 998) || (THERMISTORHEATER_2 == 998) || (THERMISTORHEATER_3 == 998) || (THERMISTORBED == 998) //User defined table
|
||||
// Dummy Thermistor table.. It will ALWAYS read a fixed value.
|
||||
#ifndef DUMMY_THERMISTOR_998_VALUE
|
||||
#define DUMMY_THERMISTOR_998_VALUE 25
|
||||
#endif
|
||||
const short temptable_998[][2] PROGMEM = {
|
||||
{1*OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE},
|
||||
{1023*OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
#define _TT_NAME(_N) temptable_ ## _N
|
||||
#define TT_NAME(_N) _TT_NAME(_N)
|
||||
|
||||
|
1790
Marlin/ultralcd.cpp
1790
Marlin/ultralcd.cpp
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,8 @@
|
||||
#include "Marlin.h"
|
||||
|
||||
#ifdef ULTRA_LCD
|
||||
|
||||
int lcd_strlen(char *s);
|
||||
int lcd_strlen_P(const char *s);
|
||||
void lcd_update();
|
||||
void lcd_init();
|
||||
void lcd_setstatus(const char* message);
|
||||
|
@ -123,17 +123,6 @@
|
||||
#define LCD_CLICKED (buttons&(B_MI|B_ST))
|
||||
#endif
|
||||
|
||||
////////////////////////
|
||||
// Setup Rotary Encoder Bit Values (for two pin encoders to indicate movement)
|
||||
// These values are independent of which pins are used for EN_A and EN_B indications
|
||||
// The rotary encoder part is also independent to the chipset used for the LCD
|
||||
#if defined(EN_A) && defined(EN_B)
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
#endif
|
||||
|
||||
#endif //ULTIPANEL
|
||||
|
||||
////////////////////////////////////
|
||||
@ -636,7 +625,7 @@ static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, c
|
||||
{
|
||||
lcd.print(c);
|
||||
pstr++;
|
||||
n--;
|
||||
if ((pgm_read_byte(pstr) & 0xc0) != 0x80) n--;
|
||||
}
|
||||
while(n--)
|
||||
lcd.print(' ');
|
||||
@ -648,9 +637,9 @@ static void lcd_implementation_drawmenu_setting_edit_generic(uint8_t row, const
|
||||
char c;
|
||||
//Use all characters in narrow LCDs
|
||||
#if LCD_WIDTH < 20
|
||||
uint8_t n = LCD_WIDTH - 1 - 1 - strlen(data);
|
||||
uint8_t n = LCD_WIDTH - 1 - 1 - lcd_strlen(data);
|
||||
#else
|
||||
uint8_t n = LCD_WIDTH - 1 - 2 - strlen(data);
|
||||
uint8_t n = LCD_WIDTH - 1 - 2 - lcd_strlen(data);
|
||||
#endif
|
||||
lcd.setCursor(0, row);
|
||||
lcd.print(pre_char);
|
||||
@ -658,7 +647,7 @@ static void lcd_implementation_drawmenu_setting_edit_generic(uint8_t row, const
|
||||
{
|
||||
lcd.print(c);
|
||||
pstr++;
|
||||
n--;
|
||||
if ((pgm_read_byte(pstr) & 0xc0) != 0x80) n--;
|
||||
}
|
||||
lcd.print(':');
|
||||
while(n--)
|
||||
@ -670,9 +659,9 @@ static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, cons
|
||||
char c;
|
||||
//Use all characters in narrow LCDs
|
||||
#if LCD_WIDTH < 20
|
||||
uint8_t n = LCD_WIDTH - 1 - 1 - strlen_P(data);
|
||||
uint8_t n = LCD_WIDTH - 1 - 1 - lcd_strlen_P(data);
|
||||
#else
|
||||
uint8_t n = LCD_WIDTH - 1 - 2 - strlen_P(data);
|
||||
uint8_t n = LCD_WIDTH - 1 - 2 - lcd_strlen_P(data);
|
||||
#endif
|
||||
lcd.setCursor(0, row);
|
||||
lcd.print(pre_char);
|
||||
@ -680,7 +669,7 @@ static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, cons
|
||||
{
|
||||
lcd.print(c);
|
||||
pstr++;
|
||||
n--;
|
||||
if ((pgm_read_byte(pstr) & 0xc0) != 0x80) n--;
|
||||
}
|
||||
lcd.print(':');
|
||||
while(n--)
|
||||
@ -733,9 +722,9 @@ void lcd_implementation_drawedit(const char* pstr, char* value)
|
||||
lcd_printPGM(pstr);
|
||||
lcd.print(':');
|
||||
#if LCD_WIDTH < 20
|
||||
lcd.setCursor(LCD_WIDTH - strlen(value), 1);
|
||||
lcd.setCursor(LCD_WIDTH - lcd_strlen(value), 1);
|
||||
#else
|
||||
lcd.setCursor(LCD_WIDTH -1 - strlen(value), 1);
|
||||
lcd.setCursor(LCD_WIDTH -1 - lcd_strlen(value), 1);
|
||||
#endif
|
||||
lcd.print(value);
|
||||
}
|
||||
@ -832,32 +821,28 @@ static void lcd_implementation_drawmenu_sddirectory(uint8_t row, const char* pst
|
||||
|
||||
static void lcd_implementation_quick_feedback()
|
||||
{
|
||||
#ifdef LCD_USE_I2C_BUZZER
|
||||
#if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS)
|
||||
lcd_buzz(1000/6,100);
|
||||
#else
|
||||
lcd_buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS,LCD_FEEDBACK_FREQUENCY_HZ);
|
||||
#endif
|
||||
#elif defined(BEEPER) && BEEPER > -1
|
||||
SET_OUTPUT(BEEPER);
|
||||
#if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS)
|
||||
for(int8_t i=0;i<10;i++)
|
||||
{
|
||||
WRITE(BEEPER,HIGH);
|
||||
delayMicroseconds(100);
|
||||
WRITE(BEEPER,LOW);
|
||||
delayMicroseconds(100);
|
||||
}
|
||||
#ifdef LCD_USE_I2C_BUZZER
|
||||
#if defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS) && defined(LCD_FEEDBACK_FREQUENCY_HZ)
|
||||
lcd_buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ);
|
||||
#else
|
||||
for(int8_t i=0;i<(LCD_FEEDBACK_FREQUENCY_DURATION_MS / (1000 / LCD_FEEDBACK_FREQUENCY_HZ));i++)
|
||||
{
|
||||
WRITE(BEEPER,HIGH);
|
||||
delayMicroseconds(1000000 / LCD_FEEDBACK_FREQUENCY_HZ / 2);
|
||||
WRITE(BEEPER,LOW);
|
||||
delayMicroseconds(1000000 / LCD_FEEDBACK_FREQUENCY_HZ / 2);
|
||||
}
|
||||
lcd_buzz(1000/6, 100);
|
||||
#endif
|
||||
#endif
|
||||
#elif defined(BEEPER) && BEEPER > -1
|
||||
SET_OUTPUT(BEEPER);
|
||||
#if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS)
|
||||
const unsigned int delay = 100;
|
||||
uint8_t i = 10;
|
||||
#else
|
||||
const unsigned int delay = 1000000 / LCD_FEEDBACK_FREQUENCY_HZ / 2;
|
||||
int8_t i = LCD_FEEDBACK_FREQUENCY_DURATION_MS * LCD_FEEDBACK_FREQUENCY_HZ / 1000;
|
||||
#endif
|
||||
while (i--) {
|
||||
WRITE(BEEPER,HIGH);
|
||||
delayMicroseconds(delay);
|
||||
WRITE(BEEPER,LOW);
|
||||
delayMicroseconds(delay);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef LCD_HAS_STATUS_INDICATORS
|
||||
|
@ -47,12 +47,9 @@ uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo
|
||||
{
|
||||
case U8G_DEV_MSG_INIT:
|
||||
{
|
||||
SET_OUTPUT(ST7920_CS_PIN);
|
||||
WRITE(ST7920_CS_PIN,0);
|
||||
SET_OUTPUT(ST7920_DAT_PIN);
|
||||
WRITE(ST7920_DAT_PIN,0);
|
||||
SET_OUTPUT(ST7920_CLK_PIN);
|
||||
WRITE(ST7920_CLK_PIN,1);
|
||||
OUT_WRITE(ST7920_CS_PIN,LOW);
|
||||
OUT_WRITE(ST7920_DAT_PIN,LOW);
|
||||
OUT_WRITE(ST7920_CLK_PIN,HIGH);
|
||||
|
||||
ST7920_CS();
|
||||
u8g_Delay(120); //initial delay for boot up
|
||||
|
Loading…
Reference in New Issue
Block a user