Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
MarlinKimbra
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
machinery
MarlinKimbra
Commits
e1465c4e
Commit
e1465c4e
authored
Feb 24, 2015
by
MagoKimbra
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix
parent
a74796c5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
748 additions
and
1001 deletions
+748
-1001
Marlin_main.cpp
MarlinKimbra/Marlin_main.cpp
+7
-27
ultralcd.cpp
MarlinKimbra/ultralcd.cpp
+741
-974
No files found.
MarlinKimbra/Marlin_main.cpp
View file @
e1465c4e
...
...
@@ -6382,33 +6382,13 @@ bool setTargetedHotend(int code)
}
float
calculate_volumetric_multiplier
(
float
diameter
)
{
float
area
=
.0
;
float
radius
=
.0
;
radius
=
diameter
*
.5
;
if
(
!
volumetric_enabled
||
radius
==
0
)
{
area
=
1
;
}
else
{
area
=
M_PI
*
pow
(
radius
,
2
);
}
return
1.0
/
area
;
float
calculate_volumetric_multiplier
(
float
diameter
)
{
if
(
!
volumetric_enabled
||
diameter
==
0
)
return
1.0
;
float
d2
=
diameter
*
0.5
;
return
1.0
/
(
M_PI
*
d2
*
d2
);
}
void
calculate_volumetric_multipliers
()
{
volumetric_multiplier
[
0
]
=
calculate_volumetric_multiplier
(
filament_size
[
0
]);
#if EXTRUDERS > 1
volumetric_multiplier
[
1
]
=
calculate_volumetric_multiplier
(
filament_size
[
1
]);
#if EXTRUDERS > 2
volumetric_multiplier
[
2
]
=
calculate_volumetric_multiplier
(
filament_size
[
2
]);
#if EXTRUDERS > 3
volumetric_multiplier
[
3
]
=
calculate_volumetric_multiplier
(
filament_size
[
3
]);
#endif //EXTRUDERS > 3
#endif //EXTRUDERS > 2
#endif //EXTRUDERS > 1
void
calculate_volumetric_multipliers
()
{
for
(
int
i
=
0
;
i
<
EXTRUDERS
;
i
++
)
volumetric_multiplier
[
i
]
=
calculate_volumetric_multiplier
(
filament_size
[
i
]);
}
MarlinKimbra/ultralcd.cpp
View file @
e1465c4e
...
...
@@ -50,8 +50,6 @@ char lcd_status_message[LCD_WIDTH+1] = WELCOME_MSG;
#include "ultralcd_implementation_hitachi_HD44780.h"
#endif
/** forward declarations **/
void
copy_and_scalePID_i
();
void
copy_and_scalePID_d
();
...
...
@@ -275,15 +273,15 @@ static void lcd_status_screen()
#endif
#endif //LCD_PROGRESS_BAR
if
(
lcd_status_update_delay
)
lcd_status_update_delay
--
;
else
lcdDrawUpdate
=
1
;
if
(
lcd_status_update_delay
)
lcd_status_update_delay
--
;
else
lcdDrawUpdate
=
1
;
if
(
lcdDrawUpdate
)
{
lcd_implementation_status_screen
();
lcd_status_update_delay
=
10
;
/* redraw the main screen every second. This is easier then trying keep track of all things that change on the screen */
}
if
(
lcdDrawUpdate
)
{
lcd_implementation_status_screen
();
lcd_status_update_delay
=
10
;
/* redraw the main screen every second. This is easier then trying keep track of all things that change on the screen */
}
#ifdef ULTIPANEL
...
...
@@ -359,88 +357,87 @@ static void lcd_sdcard_pause() { card.pauseSDPrint(); }
static
void
lcd_sdcard_resume
()
{
card
.
startFileprint
();
}
static
void
lcd_sdcard_stop
()
{
card
.
sdprinting
=
false
;
card
.
closefile
();
quickStop
();
if
(
SD_FINISHED_STEPPERRELEASE
)
{
enquecommands_P
(
PSTR
(
SD_FINISHED_RELEASECOMMAND
));
}
autotempShutdown
();
static
void
lcd_sdcard_stop
()
{
card
.
sdprinting
=
false
;
card
.
closefile
();
quickStop
();
if
(
SD_FINISHED_STEPPERRELEASE
)
{
enquecommands_P
(
PSTR
(
SD_FINISHED_RELEASECOMMAND
));
}
autotempShutdown
();
cancel_heatup
=
true
;
cancel_heatup
=
true
;
lcd_setstatus
(
MSG_PRINT_ABORTED
);
lcd_setstatus
(
MSG_PRINT_ABORTED
);
}
/* Menu implementation */
static
void
lcd_main_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_WATCH
,
lcd_status_screen
);
if
(
movesplanned
()
||
IS_SD_PRINTING
)
{
MENU_ITEM
(
submenu
,
MSG_TUNE
,
lcd_tune_menu
);
}
else
{
MENU_ITEM
(
submenu
,
MSG_PREPARE
,
lcd_prepare_menu
);
#ifdef DELTA
MENU_ITEM
(
submenu
,
MSG_DELTA_CALIBRATE
,
lcd_delta_calibrate_menu
);
#endif // DELTA
static
void
lcd_main_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_WATCH
,
lcd_status_screen
);
if
(
movesplanned
()
||
IS_SD_PRINTING
)
{
MENU_ITEM
(
submenu
,
MSG_TUNE
,
lcd_tune_menu
);
}
else
{
MENU_ITEM
(
submenu
,
MSG_PREPARE
,
lcd_prepare_menu
);
#ifdef DELTA
MENU_ITEM
(
submenu
,
MSG_DELTA_CALIBRATE
,
lcd_delta_calibrate_menu
);
#endif // DELTA
}
MENU_ITEM
(
submenu
,
MSG_CONTROL
,
lcd_control_menu
);
#ifdef SDSUPPORT
if
(
card
.
cardOK
)
{
if
(
card
.
isFileOpen
())
{
if
(
card
.
sdprinting
)
MENU_ITEM
(
function
,
MSG_PAUSE_PRINT
,
lcd_sdcard_pause
);
else
MENU_ITEM
(
function
,
MSG_RESUME_PRINT
,
lcd_sdcard_resume
);
MENU_ITEM
(
function
,
MSG_STOP_PRINT
,
lcd_sdcard_stop
);
}
else
{
MENU_ITEM
(
submenu
,
MSG_CARD_MENU
,
lcd_sdcard_menu
);
#if SDCARDDETECT < 1
MENU_ITEM
(
gcode
,
MSG_CNG_SDCARD
,
PSTR
(
"M21"
));
// SD-card changed by user
#endif
}
}
MENU_ITEM
(
submenu
,
MSG_CONTROL
,
lcd_control_menu
);
#ifdef SDSUPPORT
if
(
card
.
cardOK
)
{
if
(
card
.
isFileOpen
())
{
if
(
card
.
sdprinting
)
MENU_ITEM
(
function
,
MSG_PAUSE_PRINT
,
lcd_sdcard_pause
);
else
MENU_ITEM
(
function
,
MSG_RESUME_PRINT
,
lcd_sdcard_resume
);
MENU_ITEM
(
function
,
MSG_STOP_PRINT
,
lcd_sdcard_stop
);
}
else
{
MENU_ITEM
(
submenu
,
MSG_CARD_MENU
,
lcd_sdcard_menu
);
#if SDCARDDETECT < 1
MENU_ITEM
(
gcode
,
MSG_CNG_SDCARD
,
PSTR
(
"M21"
));
// SD-card changed by user
#endif
}
}
else
{
MENU_ITEM
(
submenu
,
MSG_NO_CARD
,
lcd_sdcard_menu
);
#if SDCARDDETECT < 1
else
{
MENU_ITEM
(
submenu
,
MSG_NO_CARD
,
lcd_sdcard_menu
);
#if SDCARDDETECT < 1
MENU_ITEM
(
gcode
,
MSG_INIT_SDCARD
,
PSTR
(
"M21"
));
// Manually initialize the SD-card via user interface
#endif
#endif
}
#endif
MENU_ITEM
(
submenu
,
MSG_CONFIG
,
lcd_config_menu
);
END_MENU
();
#endif //SDSUPPORT
MENU_ITEM
(
submenu
,
MSG_CONFIG
,
lcd_config_menu
);
END_MENU
();
}
#ifdef SDSUPPORT
static
void
lcd_autostart_sd
()
{
card
.
autostart_index
=
0
;
static
void
lcd_autostart_sd
()
{
card
.
autostart_index
=
0
;
card
.
setroot
();
card
.
checkautostart
(
true
);
}
}
#endif
void
lcd_set_home_offsets
()
{
for
(
int8_t
i
=
0
;
i
<
NUM_AXIS
;
i
++
)
{
if
(
i
!=
E_AXIS
)
{
add_homing
[
i
]
-=
current_position
[
i
];
current_position
[
i
]
=
0.0
;
}
void
lcd_set_home_offsets
()
{
for
(
int8_t
i
=
0
;
i
<
NUM_AXIS
;
i
++
)
{
if
(
i
!=
E_AXIS
)
{
add_homing
[
i
]
-=
current_position
[
i
];
current_position
[
i
]
=
0.0
;
}
plan_set_position
(
0.0
,
0.0
,
0.0
,
current_position
[
E_AXIS
]);
}
plan_set_position
(
0.0
,
0.0
,
0.0
,
current_position
[
E_AXIS
]);
// Audio feedback
enquecommands_P
(
PSTR
(
"M300 S659 P200
\n
M300 S698 P200"
));
lcd_return_to_status
();
// Audio feedback
enquecommands_P
(
PSTR
(
"M300 S659 P200
\n
M300 S698 P200"
));
lcd_return_to_status
();
}
#ifdef BABYSTEPPING
static
void
_lcd_babystep
(
int
axis
,
const
char
*
msg
)
{
if
(
encoderPosition
!=
0
)
{
babystepsTodo
[
axis
]
+=
(
int
)
encoderPosition
;
...
...
@@ -453,419 +450,271 @@ void lcd_set_home_offsets()
static
void
lcd_babystep_x
()
{
_lcd_babystep
(
X_AXIS
,
PSTR
(
MSG_BABYSTEPPING_X
));
}
static
void
lcd_babystep_y
()
{
_lcd_babystep
(
Y_AXIS
,
PSTR
(
MSG_BABYSTEPPING_Y
));
}
static
void
lcd_babystep_z
()
{
_lcd_babystep
(
Z_AXIS
,
PSTR
(
MSG_BABYSTEPPING_Z
));
}
#endif //BABYSTEPPING
static
void
lcd_tune_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
MENU_ITEM_EDIT
(
int3
,
MSG_SPEED
,
&
feedmultiply
,
10
,
999
);
#if TEMP_SENSOR_0 != 0
static
void
lcd_tune_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
MENU_ITEM_EDIT
(
int3
,
MSG_SPEED
,
&
feedmultiply
,
10
,
999
);
#if TEMP_SENSOR_0 != 0
MENU_MULTIPLIER_ITEM_EDIT
(
int3
,
MSG_NOZZLE
,
&
target_temperature
[
0
],
0
,
HEATER_0_MAXTEMP
-
15
);
#endif
#ifndef SINGLENOZZLE
#if TEMP_SENSOR_1 != 0
#endif
#if TEMP_SENSOR_1 != 0
MENU_MULTIPLIER_ITEM_EDIT
(
int3
,
MSG_NOZZLE
" 2"
,
&
target_temperature
[
1
],
0
,
HEATER_1_MAXTEMP
-
15
);
#endif
#if TEMP_SENSOR_2 != 0
#endif
#if TEMP_SENSOR_2 != 0
MENU_MULTIPLIER_ITEM_EDIT
(
int3
,
MSG_NOZZLE
" 3"
,
&
target_temperature
[
2
],
0
,
HEATER_2_MAXTEMP
-
15
);
#endif
#if TEMP_SENSOR_3 != 0
#endif
#if TEMP_SENSOR_3 != 0
MENU_MULTIPLIER_ITEM_EDIT
(
int3
,
MSG_NOZZLE
" 4"
,
&
target_temperature
[
3
],
0
,
HEATER_3_MAXTEMP
-
15
);
#endif
#endif // !SINGLENOZZLE
#if TEMP_SENSOR_BED != 0
#endif
#if TEMP_SENSOR_BED != 0
MENU_MULTIPLIER_ITEM_EDIT
(
int3
,
MSG_BED
,
&
target_temperature_bed
,
0
,
BED_MAXTEMP
-
15
);
#endif
MENU
_ITEM_EDIT
(
int3
,
MSG_FAN_SPEED
,
&
fanSpeed
,
0
,
255
);
MENU_ITEM_EDIT
(
int3
,
MSG_FLOW
" 0"
,
&
extruder_multiplier
[
0
],
10
,
999
);
#if TEMP_SENSOR_1 != 0
#endif
MENU_MULTIPLIER
_ITEM_EDIT
(
int3
,
MSG_FAN_SPEED
,
&
fanSpeed
,
0
,
255
);
MENU_ITEM_EDIT
(
int3
,
MSG_FLOW
" 0"
,
&
extruder_multiplier
[
0
],
10
,
999
);
#if TEMP_SENSOR_1 != 0
MENU_ITEM_EDIT
(
int3
,
MSG_FLOW
" 1"
,
&
extruder_multiplier
[
1
],
10
,
999
);
#endif
#if TEMP_SENSOR_2 != 0
#endif
#if TEMP_SENSOR_2 != 0
MENU_ITEM_EDIT
(
int3
,
MSG_FLOW
" 2"
,
&
extruder_multiplier
[
2
],
10
,
999
);
#endif
#if TEMP_SENSOR_3 != 0
#endif
#if TEMP_SENSOR_3 != 0
MENU_ITEM_EDIT
(
int3
,
MSG_FLOW
" 3"
,
&
extruder_multiplier
[
3
],
10
,
999
);
#endif
#endif
#ifdef BABYSTEPPING
#ifdef BABYSTEPPING
#ifdef BABYSTEP_XY
MENU_ITEM
(
submenu
,
MSG_BABYSTEP_X
,
lcd_babystep_x
);
MENU_ITEM
(
submenu
,
MSG_BABYSTEP_Y
,
lcd_babystep_y
);
#endif //BABYSTEP_XY
MENU_ITEM
(
submenu
,
MSG_BABYSTEP_Z
,
lcd_babystep_z
);
#endif
#ifdef FILAMENTCHANGEENABLE
#endif
#ifdef FILAMENTCHANGEENABLE
MENU_ITEM
(
gcode
,
MSG_FILAMENTCHANGE
,
PSTR
(
"M600"
));
#endif
END_MENU
();
#endif
END_MENU
();
}
#if defined(EASY_LOAD)
static
void
lcd_extrude
(
float
length
,
float
feedrate
)
{
current_position
[
E_AXIS
]
+=
length
;
#ifdef DELTA
calculate_delta
(
current_position
);
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
current_position
[
E_AXIS
],
feedrate
,
active_extruder
,
active_driver
);
#else
plan_buffer_line
(
current_position
[
X_AXIS
],
current_position
[
Y_AXIS
],
current_position
[
Z_AXIS
],
current_position
[
E_AXIS
],
feedrate
,
active_extruder
,
active_driver
);
#endif
}
static
void
lcd_purge
()
{
lcd_extrude
(
LCD_PURGE_LENGTH
,
LCD_PURGE_FEEDRATE
);}
static
void
lcd_retract
()
{
lcd_extrude
(
-
LCD_RETRACT_LENGTH
,
LCD_RETRACT_FEEDRATE
);}
static
void
lcd_easy_load
()
{
allow_lengthy_extrude_once
=
true
;
lcd_extrude
(
BOWDEN_LENGTH
,
LCD_LOAD_FEEDRATE
);
lcd_return_to_status
();
}
static
void
lcd_easy_unload
()
{
allow_lengthy_extrude_once
=
true
;
lcd_extrude
(
-
BOWDEN_LENGTH
,
LCD_UNLOAD_FEEDRATE
);
lcd_return_to_status
();
}
#endif // EASY_LOAD
void
lcd_preheat_pla0
()
{
setTargetHotend0
(
plaPreheatHotendTemp
);
setTargetBed
(
plaPreheatHPBTemp
);
fanSpeed
=
plaPreheatFanSpeed
;
static
void
lcd_extrude
(
float
length
,
float
feedrate
)
{
current_position
[
E_AXIS
]
+=
length
;
#ifdef DELTA
calculate_delta
(
current_position
);
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
current_position
[
E_AXIS
],
feedrate
,
active_extruder
,
active_driver
);
#else
plan_buffer_line
(
current_position
[
X_AXIS
],
current_position
[
Y_AXIS
],
current_position
[
Z_AXIS
],
current_position
[
E_AXIS
],
feedrate
,
active_extruder
,
active_driver
);
#endif
}
static
void
lcd_purge
()
{
lcd_extrude
(
LCD_PURGE_LENGTH
,
LCD_PURGE_FEEDRATE
);}
static
void
lcd_retract
()
{
lcd_extrude
(
-
LCD_RETRACT_LENGTH
,
LCD_RETRACT_FEEDRATE
);}
static
void
lcd_easy_load
()
{
allow_lengthy_extrude_once
=
true
;
lcd_extrude
(
BOWDEN_LENGTH
,
LCD_LOAD_FEEDRATE
);
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_abs0
()
{
setTargetHotend0
(
absPreheatHotendTemp
);
setTargetBed
(
absPreheatHPBTemp
);
fanSpeed
=
absPreheatFanSpeed
;
}
static
void
lcd_easy_unload
()
{
allow_lengthy_extrude_once
=
true
;
lcd_extrude
(
-
BOWDEN_LENGTH
,
LCD_UNLOAD_FEEDRATE
);
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
}
#endif //EASY_LOAD
void
lcd_preheat_gum0
()
{
setTargetHotend0
(
gumPreheatHotendTemp
);
setTargetBed
(
gumPreheatHPBTemp
);
fanSpeed
=
gumPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
void
_lcd_preheat
(
int
endnum
,
const
float
temph
,
const
float
tempb
,
const
int
fan
)
{
if
(
temph
>
0
)
setTargetHotend
(
temph
,
endnum
);
setTargetBed
(
tempb
);
fanSpeed
=
fan
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_pla0
()
{
_lcd_preheat
(
0
,
plaPreheatHotendTemp
,
plaPreheatHPBTemp
,
plaPreheatFanSpeed
);
}
void
lcd_preheat_abs0
()
{
_lcd_preheat
(
0
,
absPreheatHotendTemp
,
absPreheatHPBTemp
,
absPreheatFanSpeed
);
}
void
lcd_preheat_gum0
()
{
_lcd_preheat
(
0
,
gumPreheatHotendTemp
,
gumPreheatHPBTemp
,
gumPreheatFanSpeed
);
}
#ifndef SINGLENOZZLE
#if TEMP_SENSOR_1 != 0 //2nd extruder preheat
void
lcd_preheat_pla1
()
{
setTargetHotend1
(
plaPreheatHotendTemp
);
setTargetBed
(
plaPreheatHPBTemp
);
fanSpeed
=
plaPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_abs1
()
{
setTargetHotend1
(
absPreheatHotendTemp
);
setTargetBed
(
absPreheatHPBTemp
);
fanSpeed
=
absPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_gum1
()
{
setTargetHotend1
(
gumPreheatHotendTemp
);
setTargetBed
(
gumPreheatHPBTemp
);
fanSpeed
=
gumPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_pla1
()
{
_lcd_preheat
(
1
,
plaPreheatHotendTemp
,
plaPreheatHPBTemp
,
plaPreheatFanSpeed
);
}
void
lcd_preheat_abs1
()
{
_lcd_preheat
(
1
,
absPreheatHotendTemp
,
absPreheatHPBTemp
,
absPreheatFanSpeed
);
}
void
lcd_preheat_gum1
()
{
_lcd_preheat
(
1
,
gumPreheatHotendTemp
,
gumPreheatHPBTemp
,
gumPreheatFanSpeed
);
}
#endif //2nd extruder preheat
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
void
lcd_preheat_pla2
()
{
setTargetHotend2
(
plaPreheatHotendTemp
);
setTargetBed
(
plaPreheatHPBTemp
);
fanSpeed
=
plaPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_abs2
()
{
setTargetHotend2
(
absPreheatHotendTemp
);
setTargetBed
(
absPreheatHPBTemp
);
fanSpeed
=
absPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_gum2
()
{
setTargetHotend2
(
gumPreheatHotendTemp
);
setTargetBed
(
gumPreheatHPBTemp
);
fanSpeed
=
gumPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_pla2
()
{
_lcd_preheat
(
2
,
plaPreheatHotendTemp
,
plaPreheatHPBTemp
,
plaPreheatFanSpeed
);
}
void
lcd_preheat_abs2
()
{
_lcd_preheat
(
2
,
absPreheatHotendTemp
,
absPreheatHPBTemp
,
absPreheatFanSpeed
);
}
void
lcd_preheat_gum2
()
{
_lcd_preheat
(
2
,
gumPreheatHotendTemp
,
gumPreheatHPBTemp
,
gumPreheatFanSpeed
);
}
#endif //3 extruder preheat
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
void
lcd_preheat_pla3
()
{
setTargetHotend3
(
plaPreheatHotendTemp
);
setTargetBed
(
plaPreheatHPBTemp
);
fanSpeed
=
plaPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_abs3
()
{
setTargetHotend3
(
absPreheatHotendTemp
);
setTargetBed
(
absPreheatHPBTemp
);
fanSpeed
=
absPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_gum3
()
{
setTargetHotend3
(
gumPreheatHotendTemp
);
setTargetBed
(
gumPreheatHPBTemp
);
fanSpeed
=
gumPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_pla3
()
{
_lcd_preheat
(
3
,
plaPreheatHotendTemp
,
plaPreheatHPBTemp
,
plaPreheatFanSpeed
);
}
void
lcd_preheat_abs3
()
{
_lcd_preheat
(
3
,
absPreheatHotendTemp
,
absPreheatHPBTemp
,
absPreheatFanSpeed
);
}
void
lcd_preheat_gum3
()
{
_lcd_preheat
(
3
,
gumPreheatHotendTemp
,
gumPreheatHPBTemp
,
gumPreheatFanSpeed
);
}
#endif //4 extruder preheat
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //more than one extruder present
void
lcd_preheat_pla0123
()
{
void
lcd_preheat_pla0123
()
{
setTargetHotend0
(
plaPreheatHotendTemp
);
setTargetHotend1
(
plaPreheatHotendTemp
);
setTargetHotend2
(
plaPreheatHotendTemp
);
setTargetHotend3
(
plaPreheatHotendTemp
);
setTargetBed
(
plaPreheatHPBTemp
);
fanSpeed
=
plaPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_abs0123
()
{
_lcd_preheat
(
3
,
plaPreheatHotendTemp
,
plaPreheatHPBTemp
,
plaPreheatFanSpeed
);
}
void
lcd_preheat_abs0123
()
{
setTargetHotend0
(
absPreheatHotendTemp
);
setTargetHotend1
(
absPreheatHotendTemp
);
setTargetHotend2
(
absPreheatHotendTemp
);
setTargetHotend3
(
absPreheatHotendTemp
);
setTargetBed
(
absPreheatHPBTemp
);
fanSpeed
=
absPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_gum0123
()
{
_lcd_preheat
(
3
,
absPreheatHotendTemp
,
absPreheatHPBTemp
,
absPreheatFanSpeed
);
}
void
lcd_preheat_gum0123
()
{
setTargetHotend0
(
gumPreheatHotendTemp
);
setTargetHotend1
(
gumPreheatHotendTemp
);
setTargetHotend2
(
gumPreheatHotendTemp
);
setTargetHotend3
(
gumPreheatHotendTemp
);
setTargetBed
(
gumPreheatHPBTemp
);
fanSpeed
=
gumPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
_lcd_preheat
(
3
,
gumPreheatHotendTemp
,
gumPreheatHPBTemp
,
gumPreheatFanSpeed
);
}
#endif //more than one extruder present
#endif // !SINGLENOZZLE
void
lcd_preheat_pla_bedonly
()
{
setTargetBed
(
plaPreheatHPBTemp
);
fanSpeed
=
plaPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_pla_bedonly
()
{
_lcd_preheat
(
0
,
0
,
plaPreheatHPBTemp
,
plaPreheatFanSpeed
);
}
void
lcd_preheat_abs_bedonly
()
{
_lcd_preheat
(
0
,
0
,
absPreheatHPBTemp
,
absPreheatFanSpeed
);
}
void
lcd_preheat_gum_bedonly
()
{
_lcd_preheat
(
0
,
0
,
gumPreheatHPBTemp
,
gumPreheatFanSpeed
);
}
void
lcd_preheat_abs_bedonly
()
{
setTargetBed
(
absPreheatHPBTemp
);
fanSpeed
=
absPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_gum_bedonly
()
{
setTargetBed
(
gumPreheatHPBTemp
);
fanSpeed
=
gumPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
static
void
lcd_preheat_pla_menu
()
{
static
void
lcd_preheat_pla_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_PREPARE
,
lcd_prepare_menu
);
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA
" 1"
,
lcd_preheat_pla0
);
#ifndef SINGLENOZZLE
#if TEMP_SENSOR_1 != 0 //2 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA
" 2"
,
lcd_preheat_pla1
);
#endif //2 extruder preheat
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA
" 3"
,
lcd_preheat_pla2
);
#endif //3 extruder preheat
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA
" 4"
,
lcd_preheat_pla3
);
#endif //4 extruder preheat
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA_ALL
,
lcd_preheat_pla0123
);
#endif //all extruder preheat
#endif // !SINGLENOZZLE
#if TEMP_SENSOR_BED != 0
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA_BEDONLY
,
lcd_preheat_pla_bedonly
);
#endif
#if TEMP_SENSOR_1 != 0 //2 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA
" 2"
,
lcd_preheat_pla1
);
#endif //2 extruder preheat
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA
" 3"
,
lcd_preheat_pla2
);
#endif //3 extruder preheat
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA
" 4"
,
lcd_preheat_pla3
);
#endif //4 extruder preheat
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA_ALL
,
lcd_preheat_pla0123
);
#endif //all extruder preheat
#if TEMP_SENSOR_BED != 0
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA_BEDONLY
,
lcd_preheat_pla_bedonly
);
#endif
END_MENU
();
}
static
void
lcd_preheat_abs_menu
()
{
static
void
lcd_preheat_abs_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_PREPARE
,
lcd_prepare_menu
);
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS
" 1"
,
lcd_preheat_abs0
);
#ifndef SINGLENOZZLE
#if TEMP_SENSOR_1 != 0 //2 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS
" 2"
,
lcd_preheat_abs1
);
#endif //2 extruder preheat
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS
" 3"
,
lcd_preheat_abs2
);
#endif //3 extruder preheat
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS
" 4"
,
lcd_preheat_abs3
);
#endif //4 extruder preheat
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS_ALL
,
lcd_preheat_abs0123
);
#endif //all extruder preheat
#endif // !SINGLENOZZLE
#if TEMP_SENSOR_BED != 0
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS_BEDONLY
,
lcd_preheat_abs_bedonly
);
#endif
#if TEMP_SENSOR_1 != 0 //2 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS
" 2"
,
lcd_preheat_abs1
);
#endif //2 extruder preheat
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS
" 3"
,
lcd_preheat_abs2
);
#endif //3 extruder preheat
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS
" 4"
,
lcd_preheat_abs3
);
#endif //4 extruder preheat
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS_ALL
,
lcd_preheat_abs0123
);
#endif //all extruder preheat
#if TEMP_SENSOR_BED != 0
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS_BEDONLY
,
lcd_preheat_abs_bedonly
);
#endif
END_MENU
();
}
static
void
lcd_preheat_gum_menu
()
{
static
void
lcd_preheat_gum_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_PREPARE
,
lcd_prepare_menu
);
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM
" 1"
,
lcd_preheat_gum0
);
#ifndef SINGLENOZZLE
#if TEMP_SENSOR_1 != 0 //2 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM
" 2"
,
lcd_preheat_gum1
);
#endif //2 extruder preheat
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM
" 3"
,
lcd_preheat_gum2
);
#endif //3 extruder preheat
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM
" 4"
,
lcd_preheat_gum3
);
#endif //all extruder preheat
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM_ALL
,
lcd_preheat_gum0123
);
#endif //all extruder preheat
#endif // !SINGLENOZZLE
#if TEMP_SENSOR_BED != 0
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM_BEDONLY
,
lcd_preheat_gum_bedonly
);
#endif
#if TEMP_SENSOR_1 != 0 //2 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM
" 2"
,
lcd_preheat_gum1
);
#endif //2 extruder preheat
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM
" 3"
,
lcd_preheat_gum2
);
#endif //3 extruder preheat
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM
" 4"
,
lcd_preheat_gum3
);
#endif //all extruder preheat
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM_ALL
,
lcd_preheat_gum0123
);
#endif //all extruder preheat
#if TEMP_SENSOR_BED != 0
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM_BEDONLY
,
lcd_preheat_gum_bedonly
);
#endif
END_MENU
();
}
void
lcd_cooldown
()
{
setTargetHotend0
(
0
);
setTargetHotend1
(
0
);
setTargetHotend2
(
0
);
setTargetHotend3
(
0
);
setTargetBed
(
0
);
fanSpeed
=
0
;
lcd_return_to_status
();
void
lcd_cooldown
()
{
setTargetHotend0
(
0
);
setTargetHotend1
(
0
);
setTargetHotend2
(
0
);
setTargetHotend3
(
0
);
setTargetBed
(
0
);
fanSpeed
=
0
;
lcd_return_to_status
();
}
static
void
lcd_prepare_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
#ifdef SDSUPPORT
static
void
lcd_prepare_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
#ifdef SDSUPPORT
#ifdef MENU_ADDAUTOSTART
MENU_ITEM
(
function
,
MSG_AUTOSTART
,
lcd_autostart_sd
);
#endif
#endif
MENU_ITEM
(
gcode
,
MSG_DISABLE_STEPPERS
,
PSTR
(
"M84"
));
MENU_ITEM
(
gcode
,
MSG_AUTO_HOME
,
PSTR
(
"G28"
));
#ifndef DELTA
#endif
MENU_ITEM
(
gcode
,
MSG_DISABLE_STEPPERS
,
PSTR
(
"M84"
));
MENU_ITEM
(
gcode
,
MSG_AUTO_HOME
,
PSTR
(
"G28"
));
#ifndef DELTA
MENU_ITEM
(
gcode
,
MSG_BED_SETTING
,
PSTR
(
"G28 M"
));
#endif
MENU_ITEM
(
function
,
MSG_SET_HOME_OFFSETS
,
lcd_set_home_offsets
);
//MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0"));
//Add Preset menu for LASER setting '14. 7. 22
#ifdef LASERBEAM
#endif
MENU_ITEM
(
function
,
MSG_SET_HOME_OFFSETS
,
lcd_set_home_offsets
);
//MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0"));
//Add Preset menu for LASER setting '14. 7. 22
#ifdef LASERBEAM
MENU_ITEM_EDIT
(
int3
,
MSG_LASER
,
&
laser_ttl_modulation
,
0
,
255
);
if
(
laser_ttl_modulation
==
0
)
{
WRITE
(
LASER_PWR_PIN
,
LOW
);
}
else
{
WRITE
(
LASER_PWR_PIN
,
HIGH
);
}
#endif
#if TEMP_SENSOR_0 != 0
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_BED != 0
MENU_ITEM
(
submenu
,
MSG_PREHEAT_PLA
,
lcd_preheat_pla_menu
);
MENU_ITEM
(
submenu
,
MSG_PREHEAT_ABS
,
lcd_preheat_abs_menu
);
MENU_ITEM
(
submenu
,
MSG_PREHEAT_GUM
,
lcd_preheat_gum_menu
);
#else
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA
,
lcd_preheat_pla0
);
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS
,
lcd_preheat_abs0
);
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM
,
lcd_preheat_gum0
);
#endif
#endif
MENU_ITEM
(
function
,
MSG_COOLDOWN
,
lcd_cooldown
);
#if defined(EASY_LOAD)
#if TEMP_SENSOR_0 != 0
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_BED != 0
MENU_ITEM
(
submenu
,
MSG_PREHEAT_PLA
,
lcd_preheat_pla_menu
);
MENU_ITEM
(
submenu
,
MSG_PREHEAT_ABS
,
lcd_preheat_abs_menu
);
MENU_ITEM
(
submenu
,
MSG_PREHEAT_GUM
,
lcd_preheat_gum_menu
);
#else
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA
,
lcd_preheat_pla0
);
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS
,
lcd_preheat_abs0
);
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM
,
lcd_preheat_gum0
);
#endif
#endif
MENU_ITEM
(
function
,
MSG_COOLDOWN
,
lcd_cooldown
);
#if defined(EASY_LOAD)
MENU_ITEM
(
function
,
MSG_E_BOWDEN_LENGTH
,
lcd_easy_load
);
MENU_ITEM
(
function
,
MSG_R_BOWDEN_LENGTH
,
lcd_easy_unload
);
MENU_ITEM
(
function
,
MSG_PURGE_XMM
,
lcd_purge
);
MENU_ITEM
(
function
,
MSG_RETRACT_XMM
,
lcd_retract
);
#endif // EASY_LOAD
#if defined(POWER_SUPPLY) && POWER_SUPPLY > 0 && defined(PS_ON_PIN) && PS_ON_PIN > -1
if
(
powersupply
)
{
MENU_ITEM
(
gcode
,
MSG_SWITCH_PS_OFF
,
PSTR
(
"M81"
));
}
else
{
MENU_ITEM
(
gcode
,
MSG_SWITCH_PS_ON
,
PSTR
(
"M80"
));
#endif // EASY_LOAD
#if defined(POWER_SUPPLY) && POWER_SUPPLY > 0 && defined(PS_ON_PIN) && PS_ON_PIN > -1
if
(
powersupply
)
{
MENU_ITEM
(
gcode
,
MSG_SWITCH_PS_OFF
,
PSTR
(
"M81"
));
}
#endif
MENU_ITEM
(
submenu
,
MSG_MOVE_AXIS
,
lcd_move_menu
);
END_MENU
();
else
{
MENU_ITEM
(
gcode
,
MSG_SWITCH_PS_ON
,
PSTR
(
"M80"
));
}
#endif
MENU_ITEM
(
submenu
,
MSG_MOVE_AXIS
,
lcd_move_menu
);
END_MENU
();
}
#ifdef DELTA
static
void
lcd_delta_calibrate_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
MENU_ITEM
(
gcode
,
MSG_AUTO_HOME
,
PSTR
(
"G28"
));
MENU_ITEM
(
gcode
,
MSG_DELTA_CALIBRATE_X
,
PSTR
(
"G0 F8000 X-77.94 Y-45 Z0"
));
MENU_ITEM
(
gcode
,
MSG_DELTA_CALIBRATE_Y
,
PSTR
(
"G0 F8000 X77.94 Y-45 Z0"
));
MENU_ITEM
(
gcode
,
MSG_DELTA_CALIBRATE_Z
,
PSTR
(
"G0 F8000 X0 Y90 Z0"
));
MENU_ITEM
(
gcode
,
MSG_DELTA_CALIBRATE_CENTER
,
PSTR
(
"G0 F8000 X0 Y0 Z0"
));
END_MENU
();
static
void
lcd_delta_calibrate_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
MENU_ITEM
(
gcode
,
MSG_AUTO_HOME
,
PSTR
(
"G28"
));
MENU_ITEM
(
gcode
,
MSG_DELTA_CALIBRATE_X
,
PSTR
(
"G0 F8000 X-77.94 Y-45 Z0"
));
MENU_ITEM
(
gcode
,
MSG_DELTA_CALIBRATE_Y
,
PSTR
(
"G0 F8000 X77.94 Y-45 Z0"
));
MENU_ITEM
(
gcode
,
MSG_DELTA_CALIBRATE_Z
,
PSTR
(
"G0 F8000 X0 Y90 Z0"
));
MENU_ITEM
(
gcode
,
MSG_DELTA_CALIBRATE_CENTER
,
PSTR
(
"G0 F8000 X0 Y0 Z0"
));
END_MENU
();
}
#endif // DELTA
...
...
@@ -894,88 +743,75 @@ static void lcd_move_x() { _lcd_move(PSTR("X"), X_AXIS, X_MIN_POS, X_MAX_POS); }
static
void
lcd_move_y
()
{
_lcd_move
(
PSTR
(
"Y"
),
Y_AXIS
,
Y_MIN_POS
,
Y_MAX_POS
);
}
static
void
lcd_move_z
()
{
_lcd_move
(
PSTR
(
"Z"
),
Z_AXIS
,
Z_MIN_POS
,
Z_MAX_POS
);
}
static
void
lcd_move_e
()
{
if
(
encoderPosition
!=
0
)
{
current_position
[
E_AXIS
]
+=
float
((
int
)
encoderPosition
)
*
move_menu_scale
;
encoderPosition
=
0
;
#ifdef DELTA
calculate_delta
(
current_position
);
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
current_position
[
E_AXIS
],
manual_feedrate
[
E_AXIS
]
/
60
,
active_extruder
,
active_driver
);
#else
plan_buffer_line
(
current_position
[
X_AXIS
],
current_position
[
Y_AXIS
],
current_position
[
Z_AXIS
],
current_position
[
E_AXIS
],
manual_feedrate
[
E_AXIS
]
/
60
,
active_extruder
,
active_driver
);
#endif
lcdDrawUpdate
=
1
;
}
if
(
lcdDrawUpdate
)
{
lcd_implementation_drawedit
(
PSTR
(
"Extruder"
),
ftostr31
(
current_position
[
E_AXIS
]));
}
if
(
LCD_CLICKED
)
lcd_goto_menu
(
lcd_move_menu_axis
);
static
void
lcd_move_e
()
{
if
(
encoderPosition
!=
0
)
{
current_position
[
E_AXIS
]
+=
float
((
int
)
encoderPosition
)
*
move_menu_scale
;
encoderPosition
=
0
;
#ifdef DELTA
calculate_delta
(
current_position
);
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
current_position
[
E_AXIS
],
manual_feedrate
[
E_AXIS
]
/
60
,
active_extruder
,
active_driver
);
#else
plan_buffer_line
(
current_position
[
X_AXIS
],
current_position
[
Y_AXIS
],
current_position
[
Z_AXIS
],
current_position
[
E_AXIS
],
manual_feedrate
[
E_AXIS
]
/
60
,
active_extruder
,
active_driver
);
#endif
lcdDrawUpdate
=
1
;
}
if
(
lcdDrawUpdate
)
lcd_implementation_drawedit
(
PSTR
(
"Extruder"
),
ftostr31
(
current_position
[
E_AXIS
]));
if
(
LCD_CLICKED
)
lcd_goto_menu
(
lcd_move_menu_axis
);
}
static
void
lcd_move_menu_axis
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MOVE_AXIS
,
lcd_move_menu
);
MENU_ITEM
(
submenu
,
MSG_MOVE_X
,
lcd_move_x
);
MENU_ITEM
(
submenu
,
MSG_MOVE_Y
,
lcd_move_y
);
if
(
move_menu_scale
<
10.0
)
{
MENU_ITEM
(
submenu
,
MSG_MOVE_Z
,
lcd_move_z
);
MENU_ITEM
(
submenu
,
MSG_MOVE_E
,
lcd_move_e
);
}
END_MENU
();
static
void
lcd_move_menu_axis
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MOVE_AXIS
,
lcd_move_menu
);
MENU_ITEM
(
submenu
,
MSG_MOVE_X
,
lcd_move_x
);
MENU_ITEM
(
submenu
,
MSG_MOVE_Y
,
lcd_move_y
);
if
(
move_menu_scale
<
10.0
)
{
MENU_ITEM
(
submenu
,
MSG_MOVE_Z
,
lcd_move_z
);
MENU_ITEM
(
submenu
,
MSG_MOVE_E
,
lcd_move_e
);
}
END_MENU
();
}
static
void
lcd_move_menu_10mm
()
{
move_menu_scale
=
10.0
;
lcd_move_menu_axis
();
static
void
lcd_move_menu_10mm
()
{
move_menu_scale
=
10.0
;
lcd_move_menu_axis
();
}
static
void
lcd_move_menu_1mm
()
{
move_menu_scale
=
1.0
;
lcd_move_menu_axis
();
static
void
lcd_move_menu_1mm
()
{
move_menu_scale
=
1.0
;
lcd_move_menu_axis
();
}
static
void
lcd_move_menu_01mm
()
{
move_menu_scale
=
0.1
;
lcd_move_menu_axis
();
static
void
lcd_move_menu_01mm
()
{
move_menu_scale
=
0.1
;
lcd_move_menu_axis
();
}
static
void
lcd_move_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_PREPARE
,
lcd_prepare_menu
);
MENU_ITEM
(
submenu
,
MSG_MOVE_10MM
,
lcd_move_menu_10mm
);
MENU_ITEM
(
submenu
,
MSG_MOVE_1MM
,
lcd_move_menu_1mm
);
MENU_ITEM
(
submenu
,
MSG_MOVE_01MM
,
lcd_move_menu_01mm
);
//TODO:X,Y,Z,E
END_MENU
();
static
void
lcd_move_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_PREPARE
,
lcd_prepare_menu
);
MENU_ITEM
(
submenu
,
MSG_MOVE_10MM
,
lcd_move_menu_10mm
);
MENU_ITEM
(
submenu
,
MSG_MOVE_1MM
,
lcd_move_menu_1mm
);
MENU_ITEM
(
submenu
,
MSG_MOVE_01MM
,
lcd_move_menu_01mm
);
//TODO:X,Y,Z,E
END_MENU
();
}
static
void
lcd_control_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
MENU_ITEM
(
submenu
,
MSG_TEMPERATURE
,
lcd_control_temperature_menu
);
MENU_ITEM
(
submenu
,
MSG_MOTION
,
lcd_control_motion_menu
);
MENU_ITEM
(
submenu
,
MSG_VOLUMETRIC
,
lcd_control_volumetric_menu
);
static
void
lcd_control_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
MENU_ITEM
(
submenu
,
MSG_TEMPERATURE
,
lcd_control_temperature_menu
);
MENU_ITEM
(
submenu
,
MSG_MOTION
,
lcd_control_motion_menu
);
MENU_ITEM
(
submenu
,
MSG_VOLUMETRIC
,
lcd_control_volumetric_menu
);
#ifdef DOGLCD
// MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63);
#ifdef DOGLCD
// MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63);
MENU_ITEM
(
submenu
,
MSG_CONTRAST
,
lcd_set_contrast
);
#endif
#ifdef FWRETRACT
#endif
#ifdef FWRETRACT
MENU_ITEM
(
submenu
,
MSG_RETRACT
,
lcd_control_retract_menu
);
#endif
END_MENU
();
#endif
END_MENU
();
}
static
void
config_baudrate
()
{
static
void
config_baudrate
()
{
if
(
baudrate_position
<
0
){
for
(
int8_t
p
=
0
;
p
<
8
;
p
++
){
if
(
baudrates
[
p
]
==
baudrate
)
baudrate_position
=
p
;
...
...
@@ -1003,21 +839,19 @@ static void config_baudrate()
}
}
static
void
lcd_config_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
MENU_ITEM
(
submenu
,
MSG_BAUDRATE
,
config_baudrate
);
#ifdef EEPROM_SETTINGS
static
void
lcd_config_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
MENU_ITEM
(
submenu
,
MSG_BAUDRATE
,
config_baudrate
);
#ifdef EEPROM_SETTINGS
MENU_ITEM
(
function
,
MSG_STORE_EPROM
,
Config_StoreSettings
);
MENU_ITEM
(
function
,
MSG_LOAD_EPROM
,
Config_RetrieveSettings
);
#endif
MENU_ITEM
(
function
,
MSG_RESTORE_FAILSAFE
,
Config_ResetDefault
);
END_MENU
();
#endif
MENU_ITEM
(
function
,
MSG_RESTORE_FAILSAFE
,
Config_ResetDefault
);
END_MENU
();
}
static
void
lcd_control_temperature_menu
()
{
static
void
lcd_control_temperature_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_CONTROL
,
lcd_control_menu
);
#if TEMP_SENSOR_0 != 0
...
...
@@ -1092,42 +926,39 @@ static void lcd_control_temperature_menu()
END_MENU
();
}
static
void
lcd_control_temperature_preheat_pla_settings_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_TEMPERATURE
,
lcd_control_temperature_menu
);
MENU_ITEM_EDIT
(
int3
,
MSG_FAN_SPEED
,
&
plaPreheatFanSpeed
,
0
,
255
);
#if TEMP_SENSOR_0 != 0
static
void
lcd_control_temperature_preheat_pla_settings_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_TEMPERATURE
,
lcd_control_temperature_menu
);
MENU_ITEM_EDIT
(
int3
,
MSG_FAN_SPEED
,
&
plaPreheatFanSpeed
,
0
,
255
);
#if TEMP_SENSOR_0 != 0
MENU_ITEM_EDIT
(
int3
,
MSG_NOZZLE
,
&
plaPreheatHotendTemp
,
0
,
HEATER_0_MAXTEMP
-
15
);
#endif
#if TEMP_SENSOR_BED != 0
#endif
#if TEMP_SENSOR_BED != 0
MENU_ITEM_EDIT
(
int3
,
MSG_BED
,
&
plaPreheatHPBTemp
,
0
,
BED_MAXTEMP
-
15
);
#endif
#ifdef EEPROM_SETTINGS
#endif
#ifdef EEPROM_SETTINGS
MENU_ITEM
(
function
,
MSG_STORE_EPROM
,
Config_StoreSettings
);
#endif
END_MENU
();
#endif
END_MENU
();
}
static
void
lcd_control_temperature_preheat_abs_settings_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_TEMPERATURE
,
lcd_control_temperature_menu
);
MENU_ITEM_EDIT
(
int3
,
MSG_FAN_SPEED
,
&
absPreheatFanSpeed
,
0
,
255
);
#if TEMP_SENSOR_0 != 0
static
void
lcd_control_temperature_preheat_abs_settings_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_TEMPERATURE
,
lcd_control_temperature_menu
);
MENU_ITEM_EDIT
(
int3
,
MSG_FAN_SPEED
,
&
absPreheatFanSpeed
,
0
,
255
);
#if TEMP_SENSOR_0 != 0
MENU_ITEM_EDIT
(
int3
,
MSG_NOZZLE
,
&
absPreheatHotendTemp
,
0
,
HEATER_0_MAXTEMP
-
15
);
#endif
#if TEMP_SENSOR_BED != 0
#endif
#if TEMP_SENSOR_BED != 0
MENU_ITEM_EDIT
(
int3
,
MSG_BED
,
&
absPreheatHPBTemp
,
0
,
BED_MAXTEMP
-
15
);
#endif
#ifdef EEPROM_SETTINGS
#endif
#ifdef EEPROM_SETTINGS
MENU_ITEM
(
function
,
MSG_STORE_EPROM
,
Config_StoreSettings
);
#endif
END_MENU
();
#endif
END_MENU
();
}
static
void
lcd_control_temperature_preheat_gum_settings_menu
()
{
static
void
lcd_control_temperature_preheat_gum_settings_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_TEMPERATURE
,
lcd_control_temperature_menu
);
MENU_ITEM_EDIT
(
int3
,
MSG_FAN_SPEED
,
&
gumPreheatFanSpeed
,
0
,
255
);
...
...
@@ -1143,49 +974,48 @@ static void lcd_control_temperature_preheat_gum_settings_menu()
END_MENU
();
}
static
void
lcd_control_motion_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_CONTROL
,
lcd_control_menu
);
#ifdef ENABLE_AUTO_BED_LEVELING
static
void
lcd_control_motion_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_CONTROL
,
lcd_control_menu
);
#ifdef ENABLE_AUTO_BED_LEVELING
MENU_ITEM_EDIT
(
float32
,
MSG_ZPROBE_ZOFFSET
,
&
zprobe_zoffset
,
0.5
,
50
);
#endif
MENU_ITEM_EDIT
(
float5
,
MSG_ACC
,
&
acceleration
,
500
,
99000
);
MENU_ITEM_EDIT
(
float3
,
MSG_VXY_JERK
,
&
max_xy_jerk
,
1
,
990
);
MENU_ITEM_EDIT
(
float52
,
MSG_VZ_JERK
,
&
max_z_jerk
,
0.1
,
990
);
MENU_ITEM_EDIT
(
float3
,
MSG_VE_JERK
,
&
max_e_jerk
,
1
,
990
);
MENU_ITEM_EDIT
(
float3
,
MSG_VMAX
MSG_X
,
&
max_feedrate
[
X_AXIS
],
1
,
999
);
MENU_ITEM_EDIT
(
float3
,
MSG_VMAX
MSG_Y
,
&
max_feedrate
[
Y_AXIS
],
1
,
999
);
MENU_ITEM_EDIT
(
float3
,
MSG_VMAX
MSG_Z
,
&
max_feedrate
[
Z_AXIS
],
1
,
999
);
MENU_ITEM_EDIT
(
float3
,
MSG_VMAX
MSG_E
,
&
max_feedrate
[
E_AXIS
],
1
,
999
);
MENU_ITEM_EDIT
(
float3
,
MSG_VMIN
,
&
minimumfeedrate
,
0
,
999
);
MENU_ITEM_EDIT
(
float3
,
MSG_VTRAV_MIN
,
&
mintravelfeedrate
,
0
,
999
);
MENU_ITEM_EDIT_CALLBACK
(
long5
,
MSG_AMAX
MSG_X
,
&
max_acceleration_units_per_sq_second
[
X_AXIS
],
100
,
99000
,
reset_acceleration_rates
);
MENU_ITEM_EDIT_CALLBACK
(
long5
,
MSG_AMAX
MSG_Y
,
&
max_acceleration_units_per_sq_second
[
Y_AXIS
],
100
,
99000
,
reset_acceleration_rates
);
MENU_ITEM_EDIT_CALLBACK
(
long5
,
MSG_AMAX
MSG_Z
,
&
max_acceleration_units_per_sq_second
[
Z_AXIS
],
100
,
99000
,
reset_acceleration_rates
);
MENU_ITEM_EDIT_CALLBACK
(
long5
,
MSG_AMAX
MSG_E
,
&
max_acceleration_units_per_sq_second
[
E_AXIS
],
100
,
99000
,
reset_acceleration_rates
);
MENU_ITEM_EDIT
(
float5
,
MSG_A_RETRACT
,
&
retract_acceleration
,
100
,
99000
);
MENU_ITEM_EDIT
(
float52
,
MSG_XSTEPS
,
&
axis_steps_per_unit
[
X_AXIS
],
5
,
9999
);
MENU_ITEM_EDIT
(
float52
,
MSG_YSTEPS
,
&
axis_steps_per_unit
[
Y_AXIS
],
5
,
9999
);
MENU_ITEM_EDIT
(
float51
,
MSG_ZSTEPS
,
&
axis_steps_per_unit
[
Z_AXIS
],
5
,
9999
);
MENU_ITEM_EDIT
(
float51
,
MSG_E0STEPS
,
&
axis_steps_per_unit
[
E_AXIS
+
0
],
5
,
9999
);
#if EXTRUDERS > 1
#endif
MENU_ITEM_EDIT
(
float5
,
MSG_ACC
,
&
acceleration
,
500
,
99000
);
MENU_ITEM_EDIT
(
float3
,
MSG_VXY_JERK
,
&
max_xy_jerk
,
1
,
990
);
MENU_ITEM_EDIT
(
float52
,
MSG_VZ_JERK
,
&
max_z_jerk
,
0.1
,
990
);
MENU_ITEM_EDIT
(
float3
,
MSG_VE_JERK
,
&
max_e_jerk
,
1
,
990
);
MENU_ITEM_EDIT
(
float3
,
MSG_VMAX
MSG_X
,
&
max_feedrate
[
X_AXIS
],
1
,
999
);
MENU_ITEM_EDIT
(
float3
,
MSG_VMAX
MSG_Y
,
&
max_feedrate
[
Y_AXIS
],
1
,
999
);
MENU_ITEM_EDIT
(
float3
,
MSG_VMAX
MSG_Z
,
&
max_feedrate
[
Z_AXIS
],
1
,
999
);
MENU_ITEM_EDIT
(
float3
,
MSG_VMAX
MSG_E
,
&
max_feedrate
[
E_AXIS
],
1
,
999
);
MENU_ITEM_EDIT
(
float3
,
MSG_VMIN
,
&
minimumfeedrate
,
0
,
999
);
MENU_ITEM_EDIT
(
float3
,
MSG_VTRAV_MIN
,
&
mintravelfeedrate
,
0
,
999
);
MENU_ITEM_EDIT_CALLBACK
(
long5
,
MSG_AMAX
MSG_X
,
&
max_acceleration_units_per_sq_second
[
X_AXIS
],
100
,
99000
,
reset_acceleration_rates
);
MENU_ITEM_EDIT_CALLBACK
(
long5
,
MSG_AMAX
MSG_Y
,
&
max_acceleration_units_per_sq_second
[
Y_AXIS
],
100
,
99000
,
reset_acceleration_rates
);
MENU_ITEM_EDIT_CALLBACK
(
long5
,
MSG_AMAX
MSG_Z
,
&
max_acceleration_units_per_sq_second
[
Z_AXIS
],
100
,
99000
,
reset_acceleration_rates
);
MENU_ITEM_EDIT_CALLBACK
(
long5
,
MSG_AMAX
MSG_E
,
&
max_acceleration_units_per_sq_second
[
E_AXIS
],
100
,
99000
,
reset_acceleration_rates
);
MENU_ITEM_EDIT
(
float5
,
MSG_A_RETRACT
,
&
retract_acceleration
,
100
,
99000
);
MENU_ITEM_EDIT
(
float52
,
MSG_XSTEPS
,
&
axis_steps_per_unit
[
X_AXIS
],
5
,
9999
);
MENU_ITEM_EDIT
(
float52
,
MSG_YSTEPS
,
&
axis_steps_per_unit
[
Y_AXIS
],
5
,
9999
);
MENU_ITEM_EDIT
(
float51
,
MSG_ZSTEPS
,
&
axis_steps_per_unit
[
Z_AXIS
],
5
,
9999
);
MENU_ITEM_EDIT
(
float51
,
MSG_E0STEPS
,
&
axis_steps_per_unit
[
E_AXIS
+
0
],
5
,
9999
);
#if EXTRUDERS > 1
MENU_ITEM_EDIT
(
float51
,
MSG_E1STEPS
,
&
axis_steps_per_unit
[
E_AXIS
+
1
],
5
,
9999
);
#endif
#if EXTRUDERS > 2
#endif
#if EXTRUDERS > 2
MENU_ITEM_EDIT
(
float51
,
MSG_E2STEPS
,
&
axis_steps_per_unit
[
E_AXIS
+
2
],
5
,
9999
);
#endif
#if EXTRUDERS > 3
#endif
#if EXTRUDERS > 3
MENU_ITEM_EDIT
(
float51
,
MSG_E3STEPS
,
&
axis_steps_per_unit
[
E_AXIS
+
3
],
5
,
9999
);
#endif
#ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
#endif
#ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
MENU_ITEM_EDIT
(
bool
,
MSG_ENDSTOP_ABORT
,
&
abort_on_endstop_hit
);
#endif
#ifdef SCARA
#endif
#ifdef SCARA
MENU_ITEM_EDIT
(
float74
,
MSG_XSCALE
,
&
axis_scaling
[
X_AXIS
],
0.5
,
2
);
MENU_ITEM_EDIT
(
float74
,
MSG_YSCALE
,
&
axis_scaling
[
Y_AXIS
],
0.5
,
2
);
#endif
END_MENU
();
#endif
END_MENU
();
}
static
void
lcd_control_volumetric_menu
()
...
...
@@ -1211,144 +1041,127 @@ static void lcd_control_volumetric_menu()
}
#ifdef DOGLCD
static
void
lcd_set_contrast
()
{
if
(
encoderPosition
!=
0
)
{
lcd_contrast
-=
encoderPosition
;
if
(
lcd_contrast
<
0
)
lcd_contrast
=
0
;
else
if
(
lcd_contrast
>
63
)
lcd_contrast
=
63
;
encoderPosition
=
0
;
lcdDrawUpdate
=
1
;
u8g
.
setContrast
(
lcd_contrast
);
}
if
(
lcdDrawUpdate
)
{
lcd_implementation_drawedit
(
PSTR
(
MSG_CONTRAST
),
itostr2
(
lcd_contrast
));
}
if
(
LCD_CLICKED
)
lcd_goto_menu
(
lcd_control_menu
);
static
void
lcd_set_contrast
()
{
if
(
encoderPosition
!=
0
)
{
lcd_contrast
-=
encoderPosition
;
if
(
lcd_contrast
<
0
)
lcd_contrast
=
0
;
else
if
(
lcd_contrast
>
63
)
lcd_contrast
=
63
;
encoderPosition
=
0
;
lcdDrawUpdate
=
1
;
u8g
.
setContrast
(
lcd_contrast
);
}
if
(
lcdDrawUpdate
)
lcd_implementation_drawedit
(
PSTR
(
MSG_CONTRAST
),
itostr2
(
lcd_contrast
));
if
(
LCD_CLICKED
)
lcd_goto_menu
(
lcd_control_menu
);
}
#endif
#endif //DOGLCD
#ifdef FWRETRACT
static
void
lcd_control_retract_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_CONTROL
,
lcd_control_menu
);
MENU_ITEM_EDIT
(
bool
,
MSG_AUTORETRACT
,
&
autoretract_enabled
);
MENU_ITEM_EDIT
(
float52
,
MSG_CONTROL_RETRACT
,
&
retract_length
,
0
,
100
);
#if EXTRUDERS > 1
MENU_ITEM_EDIT
(
float52
,
MSG_CONTROL_RETRACT_SWAP
,
&
retract_length_swap
,
0
,
100
);
#endif
MENU_ITEM_EDIT
(
float3
,
MSG_CONTROL_RETRACTF
,
&
retract_feedrate
,
1
,
999
);
MENU_ITEM_EDIT
(
float52
,
MSG_CONTROL_RETRACT_ZLIFT
,
&
retract_zlift
,
0
,
999
);
MENU_ITEM_EDIT
(
float52
,
MSG_CONTROL_RETRACT_RECOVER
,
&
retract_recover_length
,
0
,
100
);
#if EXTRUDERS > 1
MENU_ITEM_EDIT
(
float52
,
MSG_CONTROL_RETRACT_RECOVER_SWAP
,
&
retract_recover_length_swap
,
0
,
100
);
#endif
MENU_ITEM_EDIT
(
float3
,
MSG_CONTROL_RETRACT_RECOVERF
,
&
retract_recover_feedrate
,
1
,
999
);
END_MENU
();
static
void
lcd_control_retract_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_CONTROL
,
lcd_control_menu
);
MENU_ITEM_EDIT
(
bool
,
MSG_AUTORETRACT
,
&
autoretract_enabled
);
MENU_ITEM_EDIT
(
float52
,
MSG_CONTROL_RETRACT
,
&
retract_length
,
0
,
100
);
#if EXTRUDERS > 1
MENU_ITEM_EDIT
(
float52
,
MSG_CONTROL_RETRACT_SWAP
,
&
retract_length_swap
,
0
,
100
);
#endif
MENU_ITEM_EDIT
(
float3
,
MSG_CONTROL_RETRACTF
,
&
retract_feedrate
,
1
,
999
);
MENU_ITEM_EDIT
(
float52
,
MSG_CONTROL_RETRACT_ZLIFT
,
&
retract_zlift
,
0
,
999
);
MENU_ITEM_EDIT
(
float52
,
MSG_CONTROL_RETRACT_RECOVER
,
&
retract_recover_length
,
0
,
100
);
#if EXTRUDERS > 1
MENU_ITEM_EDIT
(
float52
,
MSG_CONTROL_RETRACT_RECOVER_SWAP
,
&
retract_recover_length_swap
,
0
,
100
);
#endif
MENU_ITEM_EDIT
(
float3
,
MSG_CONTROL_RETRACT_RECOVERF
,
&
retract_recover_feedrate
,
1
,
999
);
END_MENU
();
}
#endif //FWRETRACT
#if SDCARDDETECT == -1
static
void
lcd_sd_refresh
()
{
static
void
lcd_sd_refresh
()
{
card
.
initsd
();
currentMenuViewOffset
=
0
;
}
}
#endif
static
void
lcd_sd_updir
()
{
card
.
updir
();
currentMenuViewOffset
=
0
;
static
void
lcd_sd_updir
()
{
card
.
updir
();
currentMenuViewOffset
=
0
;
}
void
lcd_sdcard_menu
()
{
if
(
lcdDrawUpdate
==
0
&&
LCD_CLICKED
==
0
)
return
;
// nothing to do (so don't thrash the SD card)
uint16_t
fileCnt
=
card
.
getnrfilenames
();
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
card
.
getWorkDirName
();
if
(
card
.
filename
[
0
]
==
'/'
)
{
#if SDCARDDETECT == -1
MENU_ITEM
(
function
,
LCD_STR_REFRESH
MSG_REFRESH
,
lcd_sd_refresh
);
#endif
}
else
{
MENU_ITEM
(
function
,
LCD_STR_FOLDER
".."
,
lcd_sd_updir
);
}
void
lcd_sdcard_menu
()
{
if
(
lcdDrawUpdate
==
0
&&
LCD_CLICKED
==
0
)
return
;
// nothing to do (so don't thrash the SD card)
uint16_t
fileCnt
=
card
.
getnrfilenames
();
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
card
.
getWorkDirName
();
if
(
card
.
filename
[
0
]
==
'/'
)
{
#if SDCARDDETECT == -1
MENU_ITEM
(
function
,
LCD_STR_REFRESH
MSG_REFRESH
,
lcd_sd_refresh
);
#endif
}
else
{
MENU_ITEM
(
function
,
LCD_STR_FOLDER
".."
,
lcd_sd_updir
);
}
for
(
uint16_t
i
=
0
;
i
<
fileCnt
;
i
++
)
{
if
(
_menuItemNr
==
_lineNr
)
{
#ifndef SDCARD_RATHERRECENTFIRST
card
.
getfilename
(
i
);
#else
card
.
getfilename
(
fileCnt
-
1
-
i
);
#endif
if
(
card
.
filenameIsDir
)
{
MENU_ITEM
(
sddirectory
,
MSG_CARD_MENU
,
card
.
filename
,
card
.
longFilename
);
}
else
{
MENU_ITEM
(
sdfile
,
MSG_CARD_MENU
,
card
.
filename
,
card
.
longFilename
);
}
}
else
{
MENU_ITEM_DUMMY
();
}
for
(
uint16_t
i
=
0
;
i
<
fileCnt
;
i
++
)
{
if
(
_menuItemNr
==
_lineNr
)
{
#ifndef SDCARD_RATHERRECENTFIRST
card
.
getfilename
(
i
);
#else
card
.
getfilename
(
fileCnt
-
1
-
i
);
#endif
if
(
card
.
filenameIsDir
)
MENU_ITEM
(
sddirectory
,
MSG_CARD_MENU
,
card
.
filename
,
card
.
longFilename
);
else
MENU_ITEM
(
sdfile
,
MSG_CARD_MENU
,
card
.
filename
,
card
.
longFilename
);
}
END_MENU
();
else
{
MENU_ITEM_DUMMY
();
}
}
END_MENU
();
}
#define menu_edit_type(_type, _name, _strFunc, scale) \
void menu_edit_ ## _name () \
{ \
if ((int32_t)encoderPosition < 0) encoderPosition = 0; \
if ((int32_t)encoderPosition > maxEditValue) encoderPosition = maxEditValue; \
if (lcdDrawUpdate) \
lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
if (LCD_CLICKED) \
{ \
*((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
lcd_goto_menu(prevMenu, prevEncoderPosition); \
} \
bool _menu_edit_ ## _name () { \
bool isClicked = LCD_CLICKED; \
if ((int32_t)encoderPosition < 0) encoderPosition = 0; \
if ((int32_t)encoderPosition > maxEditValue) encoderPosition = maxEditValue; \
if (lcdDrawUpdate) \
lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
if (isClicked) { \
*((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
lcd_goto_menu(prevMenu, prevEncoderPosition); \
} \
void menu_edit_callback_ ## _name () { \
menu_edit_ ## _name (); \
if (LCD_CLICKED) (*callbackFunc)(); \
} \
static void menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) \
{ \
prevMenu = currentMenu; \
prevEncoderPosition = encoderPosition; \
\
lcdDrawUpdate = 2; \
currentMenu = menu_edit_ ## _name; \
\
editLabel = pstr; \
editValue = ptr; \
minEditValue = minValue * scale; \
maxEditValue = maxValue * scale - minEditValue; \
encoderPosition = (*ptr) * scale - minEditValue; \
}\
static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, menuFunc_t callback) \
{ \
prevMenu = currentMenu; \
prevEncoderPosition = encoderPosition; \
\
lcdDrawUpdate = 2; \
currentMenu = menu_edit_callback_ ## _name; \
\
editLabel = pstr; \
editValue = ptr; \
minEditValue = minValue * scale; \
maxEditValue = maxValue * scale - minEditValue; \
encoderPosition = (*ptr) * scale - minEditValue; \
callbackFunc = callback;\
}
return isClicked; \
} \
void menu_edit_ ## _name () { _menu_edit_ ## _name(); } \
void menu_edit_callback_ ## _name () { if (_menu_edit_ ## _name ()) (*callbackFunc)(); } \
static void _menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \
prevMenu = currentMenu; \
prevEncoderPosition = encoderPosition; \
\
lcdDrawUpdate = 2; \
currentMenu = menu_edit_ ## _name; \
\
editLabel = pstr; \
editValue = ptr; \
minEditValue = minValue * scale; \
maxEditValue = maxValue * scale - minEditValue; \
encoderPosition = (*ptr) * scale - minEditValue; \
} \
static void menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \
_menu_action_setting_edit_ ## _name(pstr, ptr, minValue, maxValue); \
currentMenu = menu_edit_ ## _name; \
}\
static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, menuFunc_t callback) { \
_menu_action_setting_edit_ ## _name(pstr, ptr, minValue, maxValue); \
currentMenu = menu_edit_callback_ ## _name; \
callbackFunc = callback; \
}
menu_edit_type
(
int
,
int3
,
itostr3
,
1
)
menu_edit_type
(
float
,
float3
,
ftostr3
,
1
)
menu_edit_type
(
float
,
float32
,
ftostr32
,
100
)
...
...
@@ -1359,48 +1172,47 @@ menu_edit_type(float, float52, ftostr52, 100)
menu_edit_type
(
unsigned
long
,
long5
,
ftostr5
,
0.01
)
#ifdef REPRAPWORLD_KEYPAD
static
void
reprapworld_keypad_move_z_up
()
{
static
void
reprapworld_keypad_move_z_up
()
{
encoderPosition
=
1
;
move_menu_scale
=
REPRAPWORLD_KEYPAD_MOVE_STEP
;
lcd_move_z
();
lcd_move_z
();
}
static
void
reprapworld_keypad_move_z_down
()
{
static
void
reprapworld_keypad_move_z_down
()
{
encoderPosition
=
-
1
;
move_menu_scale
=
REPRAPWORLD_KEYPAD_MOVE_STEP
;
lcd_move_z
();
lcd_move_z
();
}
static
void
reprapworld_keypad_move_x_left
()
{
static
void
reprapworld_keypad_move_x_left
()
{
encoderPosition
=
-
1
;
move_menu_scale
=
REPRAPWORLD_KEYPAD_MOVE_STEP
;
lcd_move_x
();
lcd_move_x
();
}
static
void
reprapworld_keypad_move_x_right
()
{
static
void
reprapworld_keypad_move_x_right
()
{
encoderPosition
=
1
;
move_menu_scale
=
REPRAPWORLD_KEYPAD_MOVE_STEP
;
lcd_move_x
();
}
static
void
reprapworld_keypad_move_y_down
()
{
lcd_move_x
();
}
static
void
reprapworld_keypad_move_y_down
()
{
encoderPosition
=
1
;
move_menu_scale
=
REPRAPWORLD_KEYPAD_MOVE_STEP
;
lcd_move_y
();
}
static
void
reprapworld_keypad_move_y_up
()
{
encoderPosition
=
-
1
;
move_menu_scale
=
REPRAPWORLD_KEYPAD_MOVE_STEP
;
lcd_move_y
();
}
static
void
reprapworld_keypad_move_home
()
{
enquecommands_P
((
PSTR
(
"G28"
)));
// move all axis home
}
#endif
}
static
void
reprapworld_keypad_move_y_up
()
{
encoderPosition
=
-
1
;
move_menu_scale
=
REPRAPWORLD_KEYPAD_MOVE_STEP
;
lcd_move_y
();
}
static
void
reprapworld_keypad_move_home
()
{
enquecommands_P
((
PSTR
(
"G28"
)));
// move all axis home
}
#endif //REPRAPWORLD_KEYPAD
/** End of menus **/
static
void
lcd_quick_feedback
()
{
lcdDrawUpdate
=
2
;
blocking_enc
=
millis
()
+
500
;
lcd_implementation_quick_feedback
();
static
void
lcd_quick_feedback
()
{
lcdDrawUpdate
=
2
;
blocking_enc
=
millis
()
+
500
;
lcd_implementation_quick_feedback
();
}
/** Menu action functions **/
...
...
@@ -1408,39 +1220,33 @@ static void menu_action_back(menuFunc_t data) { lcd_goto_menu(data); }
static
void
menu_action_submenu
(
menuFunc_t
data
)
{
lcd_goto_menu
(
data
);
}
static
void
menu_action_gcode
(
const
char
*
pgcode
)
{
enquecommands_P
(
pgcode
);
}
static
void
menu_action_function
(
menuFunc_t
data
)
{
(
*
data
)();
}
static
void
menu_action_sdfile
(
const
char
*
filename
,
char
*
longFilename
)
{
char
cmd
[
30
];
char
*
c
;
sprintf_P
(
cmd
,
PSTR
(
"M23 %s"
),
filename
);
for
(
c
=
&
cmd
[
4
];
*
c
;
c
++
)
*
c
=
tolower
(
*
c
);
enquecommand
(
cmd
);
enquecommands_P
(
PSTR
(
"M24"
));
lcd_return_to_status
();
}
static
void
menu_action_sddirectory
(
const
char
*
filename
,
char
*
longFilename
)
{
card
.
chdir
(
filename
);
encoderPosition
=
0
;
static
void
menu_action_sdfile
(
const
char
*
filename
,
char
*
longFilename
)
{
char
cmd
[
30
];
char
*
c
;
sprintf_P
(
cmd
,
PSTR
(
"M23 %s"
),
filename
);
for
(
c
=
&
cmd
[
4
];
*
c
;
c
++
)
*
c
=
tolower
(
*
c
);
enquecommand
(
cmd
);
enquecommands_P
(
PSTR
(
"M24"
));
lcd_return_to_status
();
}
static
void
menu_action_s
etting_edit_bool
(
const
char
*
pstr
,
bool
*
ptr
)
{
*
ptr
=
!
(
*
ptr
)
;
static
void
menu_action_s
ddirectory
(
const
char
*
filename
,
char
*
longFilename
)
{
card
.
chdir
(
filename
);
encoderPosition
=
0
;
}
static
void
menu_action_setting_edit_
callback_bool
(
const
char
*
pstr
,
bool
*
ptr
,
menuFunc_t
callback
)
{
menu_action_setting_edit_bool
(
pstr
,
ptr
);
(
*
callback
)();
static
void
menu_action_setting_edit_
bool
(
const
char
*
pstr
,
bool
*
ptr
)
{
*
ptr
=
!
(
*
ptr
);
}
static
void
menu_action_setting_edit_callback_bool
(
const
char
*
pstr
,
bool
*
ptr
,
menuFunc_t
callback
)
{
menu_action_setting_edit_bool
(
pstr
,
ptr
);
(
*
callback
)();
}
#endif//ULTIPANEL
#endif //ULTIPANEL
/** LCD API **/
void
lcd_init
()
{
lcd_implementation_init
();
void
lcd_init
()
{
lcd_implementation_init
();
#ifdef NEWPANEL
#ifdef NEWPANEL
SET_INPUT
(
BTN_EN1
);
SET_INPUT
(
BTN_EN2
);
WRITE
(
BTN_EN1
,
HIGH
);
...
...
@@ -1475,182 +1281,166 @@ void lcd_init()
#endif // SR_LCD_2W_NL
#endif//!NEWPANEL
#if defined
(SDSUPPORT) && defined(SDCARDDETECT) && (SDCARDDETECT > 0)
pinMode
(
SDCARDDETECT
,
INPUT
);
#if defined
(SDSUPPORT) && defined(SDCARDDETECT) && (SDCARDDETECT > 0)
pinMode
(
SDCARDDETECT
,
INPUT
);
WRITE
(
SDCARDDETECT
,
HIGH
);
lcd_oldcardstatus
=
IS_SD_INSERTED
;
#endif//(SDCARDDETECT > 0)
#ifdef LCD_HAS_SLOW_BUTTONS
#endif //(SDCARDDETECT > 0)
#ifdef LCD_HAS_SLOW_BUTTONS
slow_buttons
=
0
;
#endif
lcd_buttons_update
();
#ifdef ULTIPANEL
#endif
lcd_buttons_update
();
#ifdef ULTIPANEL
encoderDiff
=
0
;
#endif
#endif
}
int
lcd_strlen
(
char
*
s
)
{
int
i
=
0
,
j
=
0
;
while
(
s
[
i
])
{
if
((
s
[
i
]
&
0xc0
)
!=
0x80
)
j
++
;
i
++
;
}
return
j
;
int
i
=
0
,
j
=
0
;
while
(
s
[
i
])
{
if
((
s
[
i
]
&
0xc0
)
!=
0x80
)
j
++
;
i
++
;
}
return
j
;
}
int
lcd_strlen_P
(
const
char
*
s
)
{
int
j
=
0
;
while
(
pgm_read_byte
(
s
))
{
if
((
pgm_read_byte
(
s
)
&
0xc0
)
!=
0x80
)
j
++
;
s
++
;
}
return
j
;
int
j
=
0
;
while
(
pgm_read_byte
(
s
))
{
if
((
pgm_read_byte
(
s
)
&
0xc0
)
!=
0x80
)
j
++
;
s
++
;
}
return
j
;
}
void
lcd_update
()
{
static
unsigned
long
timeoutToStatus
=
0
;
void
lcd_update
()
{
static
unsigned
long
timeoutToStatus
=
0
;
#ifdef LCD_HAS_SLOW_BUTTONS
#ifdef LCD_HAS_SLOW_BUTTONS
slow_buttons
=
lcd_implementation_read_slow_buttons
();
// buttons which take too long to read in interrupt context
#endif
#endif
lcd_buttons_update
();
lcd_buttons_update
();
#if (SDCARDDETECT > 0)
if
((
IS_SD_INSERTED
!=
lcd_oldcardstatus
&&
lcd_detected
()))
{
lcdDrawUpdate
=
2
;
lcd_oldcardstatus
=
IS_SD_INSERTED
;
lcd_implementation_init
(
// to maybe revive the LCD if static electricity killed it.
#if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) && !defined(DOGLCD)
currentMenu
==
lcd_status_screen
#endif
);
#if (SDCARDDETECT > 0)
if
(
IS_SD_INSERTED
!=
lcd_oldcardstatus
&&
lcd_detected
())
{
lcdDrawUpdate
=
2
;
lcd_oldcardstatus
=
IS_SD_INSERTED
;
lcd_implementation_init
(
// to maybe revive the LCD if static electricity killed it.
#if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) && !defined(DOGLCD)
currentMenu
==
lcd_status_screen
#endif
);
if
(
lcd_oldcardstatus
)
{
card
.
initsd
();
LCD_MESSAGEPGM
(
MSG_SD_INSERTED
);
}
else
{
card
.
release
();
LCD_MESSAGEPGM
(
MSG_SD_REMOVED
);
}
if
(
lcd_oldcardstatus
)
{
card
.
initsd
();
LCD_MESSAGEPGM
(
MSG_SD_INSERTED
);
}
else
{
card
.
release
();
LCD_MESSAGEPGM
(
MSG_SD_REMOVED
);
}
}
#endif//CARDINSERTED
#endif//CARDINSERTED
if
(
lcd_next_update_millis
<
millis
())
{
#ifdef ULTIPANEL
#ifdef REPRAPWORLD_KEYPAD
if
(
REPRAPWORLD_KEYPAD_MOVE_Z_UP
)
{
reprapworld_keypad_move_z_up
();
}
if
(
REPRAPWORLD_KEYPAD_MOVE_Z_DOWN
)
{
reprapworld_keypad_move_z_down
();
}
if
(
REPRAPWORLD_KEYPAD_MOVE_X_LEFT
)
{
reprapworld_keypad_move_x_left
();
}
if
(
REPRAPWORLD_KEYPAD_MOVE_X_RIGHT
)
{
reprapworld_keypad_move_x_right
();
}
if
(
REPRAPWORLD_KEYPAD_MOVE_Y_DOWN
)
{
reprapworld_keypad_move_y_down
();
}
if
(
REPRAPWORLD_KEYPAD_MOVE_Y_UP
)
{
reprapworld_keypad_move_y_up
();
}
if
(
REPRAPWORLD_KEYPAD_MOVE_HOME
)
{
reprapworld_keypad_move_home
();
}
#endif
if
(
abs
(
encoderDiff
)
>=
ENCODER_PULSES_PER_STEP
)
{
int32_t
encoderMultiplier
=
1
;
#ifdef ENCODER_RATE_MULTIPLIER
if
(
encoderRateMultiplierEnabled
)
{
int32_t
encoderMovementSteps
=
abs
(
encoderDiff
)
/
ENCODER_PULSES_PER_STEP
;
if
(
lastEncoderMovementMillis
!=
0
)
{
// Note that the rate is always calculated between to passes through the
// loop and that the abs of the encoderDiff value is tracked.
float
encoderStepRate
=
(
float
)(
encoderMovementSteps
)
/
((
float
)(
millis
()
-
lastEncoderMovementMillis
))
*
1000.0
;
if
(
encoderStepRate
>=
ENCODER_100X_STEPS_PER_SEC
)
encoderMultiplier
=
100
;
else
if
(
encoderStepRate
>=
ENCODER_10X_STEPS_PER_SEC
)
encoderMultiplier
=
10
;
#ifdef ENCODER_RATE_MULTIPLIER_DEBUG
SERIAL_ECHO_START
;
SERIAL_ECHO
(
"Enc Step Rate: "
);
SERIAL_ECHO
(
encoderStepRate
);
SERIAL_ECHO
(
" Multiplier: "
);
SERIAL_ECHO
(
encoderMultiplier
);
SERIAL_ECHO
(
" ENCODER_10X_STEPS_PER_SEC: "
);
SERIAL_ECHO
(
ENCODER_10X_STEPS_PER_SEC
);
SERIAL_ECHO
(
" ENCODER_100X_STEPS_PER_SEC: "
);
SERIAL_ECHOLN
(
ENCODER_100X_STEPS_PER_SEC
);
#endif //ENCODER_RATE_MULTIPLIER_DEBUG
}
long
ms
=
millis
();
if
(
ms
>
lcd_next_update_millis
)
{
lastEncoderMovementMillis
=
millis
();
}
#endif //ENCODER_RATE_MULTIPLIER
#ifdef ULTIPANEL
lcdDrawUpdate
=
1
;
encoderPosition
+=
(
encoderDiff
*
encoderMultiplier
)
/
ENCODER_PULSES_PER_STEP
;
encoderDiff
=
0
;
timeoutToStatus
=
millis
()
+
LCD_TIMEOUT_TO_STATUS
;
#ifdef REPRAPWORLD_KEYPAD
if
(
REPRAPWORLD_KEYPAD_MOVE_Z_UP
)
reprapworld_keypad_move_z_up
();
if
(
REPRAPWORLD_KEYPAD_MOVE_Z_DOWN
)
reprapworld_keypad_move_z_down
();
if
(
REPRAPWORLD_KEYPAD_MOVE_X_LEFT
)
reprapworld_keypad_move_x_left
();
if
(
REPRAPWORLD_KEYPAD_MOVE_X_RIGHT
)
reprapworld_keypad_move_x_right
();
if
(
REPRAPWORLD_KEYPAD_MOVE_Y_DOWN
)
reprapworld_keypad_move_y_down
();
if
(
REPRAPWORLD_KEYPAD_MOVE_Y_UP
)
reprapworld_keypad_move_y_up
();
if
(
REPRAPWORLD_KEYPAD_MOVE_HOME
)
reprapworld_keypad_move_home
();
#endif
bool
encoderPastThreshold
=
(
abs
(
encoderDiff
)
>=
ENCODER_PULSES_PER_STEP
);
if
(
encoderPastThreshold
||
LCD_CLICKED
)
{
if
(
encoderPastThreshold
)
{
int32_t
encoderMultiplier
=
1
;
#ifdef ENCODER_RATE_MULTIPLIER
if
(
encoderRateMultiplierEnabled
)
{
int32_t
encoderMovementSteps
=
abs
(
encoderDiff
)
/
ENCODER_PULSES_PER_STEP
;
if
(
lastEncoderMovementMillis
!=
0
)
{
// Note that the rate is always calculated between to passes through the
// loop and that the abs of the encoderDiff value is tracked.
float
encoderStepRate
=
(
float
)(
encoderMovementSteps
)
/
((
float
)(
ms
-
lastEncoderMovementMillis
))
*
1000.0
;
if
(
encoderStepRate
>=
ENCODER_100X_STEPS_PER_SEC
)
encoderMultiplier
=
100
;
else
if
(
encoderStepRate
>=
ENCODER_10X_STEPS_PER_SEC
)
encoderMultiplier
=
10
;
#ifdef ENCODER_RATE_MULTIPLIER_DEBUG
SERIAL_ECHO_START
;
SERIAL_ECHO
(
"Enc Step Rate: "
);
SERIAL_ECHO
(
encoderStepRate
);
SERIAL_ECHO
(
" Multiplier: "
);
SERIAL_ECHO
(
encoderMultiplier
);
SERIAL_ECHO
(
" ENCODER_10X_STEPS_PER_SEC: "
);
SERIAL_ECHO
(
ENCODER_10X_STEPS_PER_SEC
);
SERIAL_ECHO
(
" ENCODER_100X_STEPS_PER_SEC: "
);
SERIAL_ECHOLN
(
ENCODER_100X_STEPS_PER_SEC
);
#endif //ENCODER_RATE_MULTIPLIER_DEBUG
}
lastEncoderMovementMillis
=
ms
;
}
#endif //ENCODER_RATE_MULTIPLIER
lcdDrawUpdate
=
1
;
encoderPosition
+=
(
encoderDiff
*
encoderMultiplier
)
/
ENCODER_PULSES_PER_STEP
;
encoderDiff
=
0
;
}
if
(
LCD_CLICKED
)
timeoutToStatus
=
millis
()
+
LCD_TIMEOUT_TO_STATUS
;
#endif//ULTIPANEL
#ifdef DOGLCD // Changes due to different driver architecture of the DOGM display
blink
++
;
// Variable for fan animation and alive dot
u8g
.
firstPage
();
do
{
u8g
.
setFont
(
FONT_MENU
);
u8g
.
setPrintPos
(
125
,
0
);
if
(
blink
%
2
)
u8g
.
setColorIndex
(
1
);
else
u8g
.
setColorIndex
(
0
);
// Set color for the alive dot
u8g
.
drawPixel
(
127
,
63
);
// draw alive dot
u8g
.
setColorIndex
(
1
);
// black on white
(
*
currentMenu
)();
if
(
!
lcdDrawUpdate
)
break
;
// Terminate display update, when nothing new to draw. This must be done before the last dogm.next()
}
while
(
u8g
.
nextPage
()
);
#else
timeoutToStatus
=
ms
+
LCD_TIMEOUT_TO_STATUS
;
}
#endif //ULTIPANEL
#ifdef DOGLCD // Changes due to different driver architecture of the DOGM display
blink
++
;
// Variable for fan animation and alive dot
u8g
.
firstPage
();
do
{
u8g
.
setFont
(
FONT_MENU
);
u8g
.
setPrintPos
(
125
,
0
);
if
(
blink
%
2
)
u8g
.
setColorIndex
(
1
);
else
u8g
.
setColorIndex
(
0
);
// Set color for the alive dot
u8g
.
drawPixel
(
127
,
63
);
// draw alive dot
u8g
.
setColorIndex
(
1
);
// black on white
(
*
currentMenu
)();
#endif
if
(
!
lcdDrawUpdate
)
break
;
// Terminate display update, when nothing new to draw. This must be done before the last dogm.next()
}
while
(
u8g
.
nextPage
()
);
#else
(
*
currentMenu
)();
#endif
#ifdef LCD_HAS_STATUS_INDICATORS
lcd_implementation_update_indicators
();
#endif
#ifdef LCD_HAS_STATUS_INDICATORS
lcd_implementation_update_indicators
();
#endif
#ifdef ULTIPANEL
if
(
timeoutToStatus
<
millis
()
&&
currentMenu
!=
lcd_status_screen
)
{
lcd_return_to_status
()
;
lcdDrawUpdate
=
2
;
}
#endif//ULTIPANEL
if
(
lcdDrawUpdate
==
2
)
lcd_implementation_clear
();
if
(
lcdDrawUpdate
)
lcdDrawUpdate
--
;
lcd_next_update_millis
=
millis
()
+
LCD_UPDATE_INTERVAL
;
}
#ifdef ULTIPANEL
if
(
currentMenu
!=
lcd_status_screen
&&
millis
()
>
timeoutToStatus
)
{
lcd_return_to_status
();
lcdDrawUpdate
=
2
;
}
#endif //ULTIPANEL
if
(
lcdDrawUpdate
==
2
)
lcd_implementation_clear
();
if
(
lcdDrawUpdate
)
lcdDrawUpdate
--
;
lcd_next_update_millis
=
millis
()
+
LCD_UPDATE_INTERVAL
;
}
}
void
lcd_ignore_click
(
bool
b
)
{
ignore_click
=
b
;
wait_for_unclick
=
false
;
void
lcd_ignore_click
(
bool
b
)
{
ignore_click
=
b
;
wait_for_unclick
=
false
;
}
void
lcd_finishstatus
()
{
...
...
@@ -1673,150 +1463,127 @@ void lcd_finishstatus() {
message_millis
=
millis
();
//get status message to show up for a while
#endif
}
void
lcd_setstatus
(
const
char
*
message
)
{
if
(
lcd_status_message_level
>
0
)
return
;
strncpy
(
lcd_status_message
,
message
,
LCD_WIDTH
);
lcd_finishstatus
();
void
lcd_setstatus
(
const
char
*
message
)
{
if
(
lcd_status_message_level
>
0
)
return
;
strncpy
(
lcd_status_message
,
message
,
LCD_WIDTH
);
lcd_finishstatus
();
}
void
lcd_setstatuspgm
(
const
char
*
message
)
{
if
(
lcd_status_message_level
>
0
)
return
;
strncpy_P
(
lcd_status_message
,
message
,
LCD_WIDTH
);
lcd_finishstatus
();
void
lcd_setstatuspgm
(
const
char
*
message
)
{
if
(
lcd_status_message_level
>
0
)
return
;
strncpy_P
(
lcd_status_message
,
message
,
LCD_WIDTH
);
lcd_finishstatus
();
}
void
lcd_setalertstatuspgm
(
const
char
*
message
)
{
lcd_setstatuspgm
(
message
);
lcd_status_message_level
=
1
;
#ifdef ULTIPANEL
void
lcd_setalertstatuspgm
(
const
char
*
message
)
{
lcd_setstatuspgm
(
message
);
lcd_status_message_level
=
1
;
#ifdef ULTIPANEL
lcd_return_to_status
();
#endif//ULTIPANEL
}
void
lcd_reset_alert_level
()
{
lcd_status_message_level
=
0
;
#endif
}
void
lcd_reset_alert_level
()
{
lcd_status_message_level
=
0
;
}
#ifdef DOGLCD
void
lcd_setcontrast
(
uint8_t
value
)
{
void
lcd_setcontrast
(
uint8_t
value
)
{
lcd_contrast
=
value
&
63
;
u8g
.
setContrast
(
lcd_contrast
);
}
}
#endif
#ifdef ULTIPANEL
/* Warning: This function is called from interrupt context */
void
lcd_buttons_update
()
{
#ifdef NEWPANEL
uint8_t
newbutton
=
0
;
#ifdef INVERT_ROTARY_SWITCH
if
(
READ
(
BTN_EN1
)
==
0
)
newbutton
|=
EN_B
;
if
(
READ
(
BTN_EN2
)
==
0
)
newbutton
|=
EN_A
;
#else
if
(
READ
(
BTN_EN1
)
==
0
)
newbutton
|=
EN_A
;
if
(
READ
(
BTN_EN2
)
==
0
)
newbutton
|=
EN_B
;
#endif
void
lcd_buttons_update
()
{
#ifdef NEWPANEL
uint8_t
newbutton
=
0
;
#ifdef INVERT_ROTARY_SWITCH
if
(
READ
(
BTN_EN1
)
==
0
)
newbutton
|=
EN_B
;
if
(
READ
(
BTN_EN2
)
==
0
)
newbutton
|=
EN_A
;
#else
if
(
READ
(
BTN_EN1
)
==
0
)
newbutton
|=
EN_A
;
if
(
READ
(
BTN_EN2
)
==
0
)
newbutton
|=
EN_B
;
#endif
#if BTN_ENC > 0
if
((
blocking_enc
<
millis
())
&&
(
READ
(
BTN_ENC
)
==
0
))
newbutton
|=
EN_C
;
if
(
millis
()
>
blocking_enc
&&
READ
(
BTN_ENC
)
==
0
)
newbutton
|=
EN_C
;
#endif
buttons
=
newbutton
;
#ifdef LCD_HAS_SLOW_BUTTONS
buttons
|=
slow_buttons
;
buttons
|=
slow_buttons
;
#endif
#ifdef REPRAPWORLD_KEYPAD
// for the reprapworld_keypad
uint8_t
newbutton_reprapworld_keypad
=
0
;
WRITE
(
SHIFT_LD
,
LOW
);
WRITE
(
SHIFT_LD
,
HIGH
);
for
(
int8_t
i
=
0
;
i
<
8
;
i
++
)
{
newbutton_reprapworld_keypad
=
newbutton_reprapworld_keypad
>>
1
;
if
(
READ
(
SHIFT_OUT
))
newbutton_reprapworld_keypad
|=
(
1
<<
7
);
WRITE
(
SHIFT_CLK
,
HIGH
);
WRITE
(
SHIFT_CLK
,
LOW
);
WRITE
(
SHIFT_LD
,
LOW
);
WRITE
(
SHIFT_LD
,
HIGH
);
for
(
int8_t
i
=
0
;
i
<
8
;
i
++
)
{
newbutton_reprapworld_keypad
>>=
1
;
if
(
READ
(
SHIFT_OUT
))
newbutton_reprapworld_keypad
|=
(
1
<<
7
);
WRITE
(
SHIFT_CLK
,
HIGH
);
WRITE
(
SHIFT_CLK
,
LOW
);
}
buttons_reprapworld_keypad
=~
newbutton_reprapworld_keypad
;
//invert it, because a pressed switch produces a logical 0
#endif
#else //read it from the shift register
uint8_t
newbutton
=
0
;
WRITE
(
SHIFT_LD
,
LOW
);
WRITE
(
SHIFT_LD
,
HIGH
);
unsigned
char
tmp_buttons
=
0
;
for
(
int8_t
i
=
0
;
i
<
8
;
i
++
)
{
newbutton
=
newbutton
>>
1
;
if
(
READ
(
SHIFT_OUT
))
newbutton
|=
(
1
<<
7
);
WRITE
(
SHIFT_CLK
,
HIGH
);
WRITE
(
SHIFT_CLK
,
LOW
);
#endif
#else //read it from the shift register
uint8_t
newbutton
=
0
;
WRITE
(
SHIFT_LD
,
LOW
);
WRITE
(
SHIFT_LD
,
HIGH
);
unsigned
char
tmp_buttons
=
0
;
for
(
int8_t
i
=
0
;
i
<
8
;
i
++
)
{
newbutton
>>=
1
;
if
(
READ
(
SHIFT_OUT
))
newbutton
|=
(
1
<<
7
);
WRITE
(
SHIFT_CLK
,
HIGH
);
WRITE
(
SHIFT_CLK
,
LOW
);
}
buttons
=~
newbutton
;
//invert it, because a pressed switch produces a logical 0
#endif//!NEWPANEL
//manage encoder rotation
uint8_t
enc
=
0
;
if
(
buttons
&
EN_A
)
enc
|=
B01
;
if
(
buttons
&
EN_B
)
enc
|=
B10
;
if
(
enc
!=
lastEncoderBits
)
{
switch
(
enc
)
{
case
encrot0
:
if
(
lastEncoderBits
==
encrot3
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot1
)
encoderDiff
--
;
break
;
case
encrot1
:
if
(
lastEncoderBits
==
encrot0
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot2
)
encoderDiff
--
;
break
;
case
encrot2
:
if
(
lastEncoderBits
==
encrot1
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot3
)
encoderDiff
--
;
break
;
case
encrot3
:
if
(
lastEncoderBits
==
encrot2
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot0
)
encoderDiff
--
;
break
;
}
buttons
=
~
newbutton
;
//invert it, because a pressed switch produces a logical 0
#endif //!NEWPANEL
//manage encoder rotation
uint8_t
enc
=
0
;
if
(
buttons
&
EN_A
)
enc
|=
B01
;
if
(
buttons
&
EN_B
)
enc
|=
B10
;
if
(
enc
!=
lastEncoderBits
)
{
switch
(
enc
)
{
case
encrot0
:
if
(
lastEncoderBits
==
encrot3
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot1
)
encoderDiff
--
;
break
;
case
encrot1
:
if
(
lastEncoderBits
==
encrot0
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot2
)
encoderDiff
--
;
break
;
case
encrot2
:
if
(
lastEncoderBits
==
encrot1
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot3
)
encoderDiff
--
;
break
;
case
encrot3
:
if
(
lastEncoderBits
==
encrot2
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot0
)
encoderDiff
--
;
break
;
}
lastEncoderBits
=
enc
;
}
lastEncoderBits
=
enc
;
}
bool
lcd_detected
(
void
)
{
#if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE)
return
lcd
.
LcdDetected
()
==
1
;
#else
return
true
;
#endif
bool
lcd_detected
(
void
)
{
#if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE)
return
lcd
.
LcdDetected
()
==
1
;
#else
return
true
;
#endif
}
void
lcd_buzz
(
long
duration
,
uint16_t
freq
)
{
#ifdef LCD_USE_I2C_BUZZER
lcd
.
buzz
(
duration
,
freq
);
#endif
void
lcd_buzz
(
long
duration
,
uint16_t
freq
)
{
#ifdef LCD_USE_I2C_BUZZER
lcd
.
buzz
(
duration
,
freq
);
#endif
}
bool
lcd_clicked
()
{
return
LCD_CLICKED
;
}
#endif//ULTIPANEL
bool
lcd_clicked
()
{
return
LCD_CLICKED
;
}
#endif //ULTIPANEL
/********************************/
/** Float conversion utilities **/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment