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
Show 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
();
...
...
@@ -359,12 +357,11 @@ static void lcd_sdcard_pause() { card.pauseSDPrint(); }
static
void
lcd_sdcard_resume
()
{
card
.
startFileprint
();
}
static
void
lcd_sdcard_stop
()
{
static
void
lcd_sdcard_stop
()
{
card
.
sdprinting
=
false
;
card
.
closefile
();
quickStop
();
if
(
SD_FINISHED_STEPPERRELEASE
)
{
if
(
SD_FINISHED_STEPPERRELEASE
)
{
enquecommands_P
(
PSTR
(
SD_FINISHED_RELEASECOMMAND
));
}
autotempShutdown
();
...
...
@@ -375,58 +372,56 @@ static void lcd_sdcard_stop()
}
/* Menu implementation */
static
void
lcd_main_menu
()
{
static
void
lcd_main_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_WATCH
,
lcd_status_screen
);
if
(
movesplanned
()
||
IS_SD_PRINTING
)
{
if
(
movesplanned
()
||
IS_SD_PRINTING
)
{
MENU_ITEM
(
submenu
,
MSG_TUNE
,
lcd_tune_menu
);
}
else
{
}
else
{
MENU_ITEM
(
submenu
,
MSG_PREPARE
,
lcd_prepare_menu
);
#ifdef DELTA
#ifdef DELTA
MENU_ITEM
(
submenu
,
MSG_DELTA_CALIBRATE
,
lcd_delta_calibrate_menu
);
#endif // DELTA
#endif // DELTA
}
MENU_ITEM
(
submenu
,
MSG_CONTROL
,
lcd_control_menu
);
#ifdef SDSUPPORT
if
(
card
.
cardOK
)
{
if
(
card
.
isFileOpen
())
{
#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
{
}
else
{
MENU_ITEM
(
submenu
,
MSG_CARD_MENU
,
lcd_sdcard_menu
);
#if SDCARDDETECT < 1
#if SDCARDDETECT < 1
MENU_ITEM
(
gcode
,
MSG_CNG_SDCARD
,
PSTR
(
"M21"
));
// SD-card changed by user
#endif
#endif
}
}
else
{
}
else
{
MENU_ITEM
(
submenu
,
MSG_NO_CARD
,
lcd_sdcard_menu
);
#if SDCARDDETECT < 1
#if SDCARDDETECT < 1
MENU_ITEM
(
gcode
,
MSG_INIT_SDCARD
,
PSTR
(
"M21"
));
// Manually initialize the SD-card via user interface
#endif
#endif
}
#endif
#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
()
{
void
lcd_set_home_offsets
()
{
for
(
int8_t
i
=
0
;
i
<
NUM_AXIS
;
i
++
)
{
if
(
i
!=
E_AXIS
)
{
add_homing
[
i
]
-=
current_position
[
i
];
...
...
@@ -440,7 +435,9 @@ void lcd_set_home_offsets()
lcd_return_to_status
();
}
#ifdef BABYSTEPPING
static
void
_lcd_babystep
(
int
axis
,
const
char
*
msg
)
{
if
(
encoderPosition
!=
0
)
{
babystepsTodo
[
axis
]
+=
(
int
)
encoderPosition
;
...
...
@@ -453,344 +450,198 @@ 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
()
{
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
#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
);
#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
#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
#endif
END_MENU
();
}
#if defined(EASY_LOAD)
static
void
lcd_extrude
(
float
length
,
float
feedrate
)
{
static
void
lcd_extrude
(
float
length
,
float
feedrate
)
{
current_position
[
E_AXIS
]
+=
length
;
#ifdef DELTA
#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
#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
()
{
#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
()
{
}
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
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
void
lcd_preheat_abs0
()
{
setTargetHotend0
(
absPreheatHotendTemp
);
setTargetBed
(
absPreheatHPBTemp
);
fanSpeed
=
absPreheatFanSpeed
;
lcd_return_to_status
();
setWatch
();
// heater sanity check timer
}
}
#endif //EASY_LOAD
void
lcd_preheat_gum0
()
{
setTargetHotend0
(
gumPreheatHotendTemp
);
setTargetBed
(
gumPreheatHPBTemp
);
fanSpeed
=
gumPreheatFanSpeed
;
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
#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
#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
#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
#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
#endif //all extruder preheat
#if TEMP_SENSOR_BED != 0
MENU_ITEM
(
function
,
MSG_PREHEAT_PLA_BEDONLY
,
lcd_preheat_pla_bedonly
);
#endif
#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
#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
#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
#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
#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
#endif //all extruder preheat
#if TEMP_SENSOR_BED != 0
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS_BEDONLY
,
lcd_preheat_abs_bedonly
);
#endif
#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
#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
#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
#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
#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
#endif //all extruder preheat
#if TEMP_SENSOR_BED != 0
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM_BEDONLY
,
lcd_preheat_gum_bedonly
);
#endif
#endif
END_MENU
();
}
void
lcd_cooldown
()
{
void
lcd_cooldown
()
{
setTargetHotend0
(
0
);
setTargetHotend1
(
0
);
setTargetHotend2
(
0
);
...
...
@@ -800,32 +651,31 @@ void lcd_cooldown()
lcd_return_to_status
();
}
static
void
lcd_prepare_menu
()
{
static
void
lcd_prepare_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
,
lcd_main_menu
);
#ifdef SDSUPPORT
#ifdef SDSUPPORT
#ifdef MENU_ADDAUTOSTART
MENU_ITEM
(
function
,
MSG_AUTOSTART
,
lcd_autostart_sd
);
#endif
#endif
#endif
MENU_ITEM
(
gcode
,
MSG_DISABLE_STEPPERS
,
PSTR
(
"M84"
));
MENU_ITEM
(
gcode
,
MSG_AUTO_HOME
,
PSTR
(
"G28"
));
#ifndef DELTA
#ifndef DELTA
MENU_ITEM
(
gcode
,
MSG_BED_SETTING
,
PSTR
(
"G28 M"
));
#endif
#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
#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
#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
);
...
...
@@ -835,29 +685,28 @@ static void lcd_prepare_menu()
MENU_ITEM
(
function
,
MSG_PREHEAT_ABS
,
lcd_preheat_abs0
);
MENU_ITEM
(
function
,
MSG_PREHEAT_GUM
,
lcd_preheat_gum0
);
#endif
#endif
#endif
MENU_ITEM
(
function
,
MSG_COOLDOWN
,
lcd_cooldown
);
#if defined(EASY_LOAD)
#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
)
{
#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
{
}
else
{
MENU_ITEM
(
gcode
,
MSG_SWITCH_PS_ON
,
PSTR
(
"M80"
));
}
#endif
#endif
MENU_ITEM
(
submenu
,
MSG_MOVE_AXIS
,
lcd_move_menu
);
END_MENU
();
}
#ifdef DELTA
static
void
lcd_delta_calibrate_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"
));
...
...
@@ -894,10 +743,8 @@ 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
)
{
static
void
lcd_move_e
()
{
if
(
encoderPosition
!=
0
)
{
current_position
[
E_AXIS
]
+=
float
((
int
)
encoderPosition
)
*
move_menu_scale
;
encoderPosition
=
0
;
#ifdef DELTA
...
...
@@ -908,45 +755,36 @@ static void lcd_move_e()
#endif
lcdDrawUpdate
=
1
;
}
if
(
lcdDrawUpdate
)
{
lcd_implementation_drawedit
(
PSTR
(
"Extruder"
),
ftostr31
(
current_position
[
E_AXIS
]));
}
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
()
{
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
)
{
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
()
{
static
void
lcd_move_menu_10mm
()
{
move_menu_scale
=
10.0
;
lcd_move_menu_axis
();
}
static
void
lcd_move_menu_1mm
()
{
static
void
lcd_move_menu_1mm
()
{
move_menu_scale
=
1.0
;
lcd_move_menu_axis
();
}
static
void
lcd_move_menu_01mm
()
{
static
void
lcd_move_menu_01mm
()
{
move_menu_scale
=
0.1
;
lcd_move_menu_axis
();
}
static
void
lcd_move_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
);
...
...
@@ -956,26 +794,24 @@ static void lcd_move_menu()
END_MENU
();
}
static
void
lcd_control_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
#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
()
{
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
#ifdef EEPROM_SETTINGS
MENU_ITEM
(
function
,
MSG_STORE_EPROM
,
Config_StoreSettings
);
MENU_ITEM
(
function
,
MSG_LOAD_EPROM
,
Config_RetrieveSettings
);
#endif
#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
()
{
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
#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
#endif
END_MENU
();
}
static
void
lcd_control_temperature_preheat_abs_settings_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
#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
#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,13 +974,12 @@ static void lcd_control_temperature_preheat_gum_settings_menu()
END_MENU
();
}
static
void
lcd_control_motion_menu
()
{
static
void
lcd_control_motion_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_CONTROL
,
lcd_control_menu
);
#ifdef ENABLE_AUTO_BED_LEVELING
#ifdef ENABLE_AUTO_BED_LEVELING
MENU_ITEM_EDIT
(
float32
,
MSG_ZPROBE_ZOFFSET
,
&
zprobe_zoffset
,
0.5
,
50
);
#endif
#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
);
...
...
@@ -1169,22 +999,22 @@ static void lcd_control_motion_menu()
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
#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
#endif
END_MENU
();
}
...
...
@@ -1211,10 +1041,9 @@ static void lcd_control_volumetric_menu()
}
#ifdef DOGLCD
static
void
lcd_set_contrast
()
{
if
(
encoderPosition
!=
0
)
{
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
;
...
...
@@ -1222,17 +1051,15 @@ static void lcd_set_contrast()
lcdDrawUpdate
=
1
;
u8g
.
setContrast
(
lcd_contrast
);
}
if
(
lcdDrawUpdate
)
{
lcd_implementation_drawedit
(
PSTR
(
MSG_CONTRAST
),
itostr2
(
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
()
{
static
void
lcd_control_retract_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_CONTROL
,
lcd_control_menu
);
MENU_ITEM_EDIT
(
bool
,
MSG_AUTORETRACT
,
&
autoretract_enabled
);
...
...
@@ -1249,54 +1076,49 @@ static void lcd_control_retract_menu()
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
()
{
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)
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
if
(
card
.
filename
[
0
]
==
'/'
)
{
#if SDCARDDETECT == -1
MENU_ITEM
(
function
,
LCD_STR_REFRESH
MSG_REFRESH
,
lcd_sd_refresh
);
#endif
}
else
{
#endif
}
else
{
MENU_ITEM
(
function
,
LCD_STR_FOLDER
".."
,
lcd_sd_updir
);
}
for
(
uint16_t
i
=
0
;
i
<
fileCnt
;
i
++
)
{
if
(
_menuItemNr
==
_lineNr
)
{
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
{
else
MENU_ITEM
(
sdfile
,
MSG_CARD_MENU
,
card
.
filename
,
card
.
longFilename
);
}
}
else
{
else
{
MENU_ITEM_DUMMY
();
}
}
...
...
@@ -1304,24 +1126,21 @@ void lcd_sdcard_menu()
}
#define menu_edit_type(_type, _name, _strFunc, scale) \
void menu_edit_ ## _name ()
\
{
\
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 (LCD_CLICKED) \
{ \
if (isClicked) { \
*((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
lcd_goto_menu(prevMenu, prevEncoderPosition); \
} \
return isClicked; \
} \
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) \
{ \
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; \
\
...
...
@@ -1333,21 +1152,15 @@ void lcd_sdcard_menu()
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) \
{ \
prevMenu = currentMenu; \
prevEncoderPosition = encoderPosition; \
\
lcdDrawUpdate = 2; \
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; \
\
editLabel = pstr; \
editValue = ptr; \
minEditValue = minValue * scale; \
maxEditValue = maxValue * scale - minEditValue; \
encoderPosition = (*ptr) * scale - minEditValue; \
callbackFunc = callback;\
callbackFunc = callback; \
}
menu_edit_type
(
int
,
int3
,
itostr3
,
1
)
menu_edit_type
(
float
,
float3
,
ftostr3
,
1
)
...
...
@@ -1392,12 +1205,11 @@ menu_edit_type(unsigned long, long5, ftostr5, 0.01)
static
void
reprapworld_keypad_move_home
()
{
enquecommands_P
((
PSTR
(
"G28"
)));
// move all axis home
}
#endif
#endif
//REPRAPWORLD_KEYPAD
/** End of menus **/
static
void
lcd_quick_feedback
()
{
static
void
lcd_quick_feedback
()
{
lcdDrawUpdate
=
2
;
blocking_enc
=
millis
()
+
500
;
lcd_implementation_quick_feedback
();
...
...
@@ -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
)
{
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
);
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
)
{
static
void
menu_action_sddirectory
(
const
char
*
filename
,
char
*
longFilename
)
{
card
.
chdir
(
filename
);
encoderPosition
=
0
;
}
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
)
{
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
()
{
void
lcd_init
()
{
lcd_implementation_init
();
#ifdef NEWPANEL
#ifdef NEWPANEL
SET_INPUT
(
BTN_EN1
);
SET_INPUT
(
BTN_EN2
);
WRITE
(
BTN_EN1
,
HIGH
);
...
...
@@ -1475,18 +1281,21 @@ 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
#endif
lcd_buttons_update
();
#ifdef ULTIPANEL
#ifdef ULTIPANEL
encoderDiff
=
0
;
#endif
#endif
}
int
lcd_strlen
(
char
*
s
)
{
...
...
@@ -1507,10 +1316,7 @@ int lcd_strlen_P(const char *s) {
return
j
;
}
void
lcd_update
()
{
void
lcd_update
()
{
static
unsigned
long
timeoutToStatus
=
0
;
#ifdef LCD_HAS_SLOW_BUTTONS
...
...
@@ -1520,8 +1326,7 @@ void lcd_update()
lcd_buttons_update
();
#if (SDCARDDETECT > 0)
if
((
IS_SD_INSERTED
!=
lcd_oldcardstatus
&&
lcd_detected
()))
{
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.
...
...
@@ -1530,47 +1335,35 @@ void lcd_update()
#endif
);
if
(
lcd_oldcardstatus
)
{
if
(
lcd_oldcardstatus
)
{
card
.
initsd
();
LCD_MESSAGEPGM
(
MSG_SD_INSERTED
);
}
else
{
else
{
card
.
release
();
LCD_MESSAGEPGM
(
MSG_SD_REMOVED
);
}
}
#endif//CARDINSERTED
if
(
lcd_next_update_millis
<
millis
())
{
#ifdef ULTIPANEL
long
ms
=
millis
();
if
(
ms
>
lcd_next_update_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
();
}
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
)
{
bool
encoderPastThreshold
=
(
abs
(
encoderDiff
)
>=
ENCODER_PULSES_PER_STEP
);
if
(
encoderPastThreshold
||
LCD_CLICKED
)
{
if
(
encoderPastThreshold
)
{
int32_t
encoderMultiplier
=
1
;
#ifdef ENCODER_RATE_MULTIPLIER
...
...
@@ -1581,8 +1374,7 @@ void lcd_update()
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
;
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
;
...
...
@@ -1600,55 +1392,53 @@ void lcd_update()
#endif //ENCODER_RATE_MULTIPLIER_DEBUG
}
lastEncoderMovementMillis
=
millis
()
;
lastEncoderMovementMillis
=
ms
;
}
#endif //ENCODER_RATE_MULTIPLIER
lcdDrawUpdate
=
1
;
encoderPosition
+=
(
encoderDiff
*
encoderMultiplier
)
/
ENCODER_PULSES_PER_STEP
;
encoderDiff
=
0
;
timeoutToStatus
=
millis
()
+
LCD_TIMEOUT_TO_STATUS
;
}
if
(
LCD_CLICKED
)
timeoutToStatus
=
millis
()
+
LCD_TIMEOUT_TO_STATUS
;
#endif//ULTIPANEL
timeoutToStatus
=
ms
+
LCD_TIMEOUT_TO_STATUS
;
}
#endif //ULTIPANEL
#ifdef DOGLCD
// Changes due to different driver architecture of the DOGM display
#ifdef DOGLCD
// Changes due to different driver architecture of the DOGM display
blink
++
;
// Variable for fan animation and alive dot
u8g
.
firstPage
();
do
{
do
{
u8g
.
setFont
(
FONT_MENU
);
u8g
.
setPrintPos
(
125
,
0
);
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
.
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
#else
(
*
currentMenu
)();
#endif
#endif
#ifdef LCD_HAS_STATUS_INDICATORS
#ifdef LCD_HAS_STATUS_INDICATORS
lcd_implementation_update_indicators
();
#endif
#endif
#ifdef ULTIPANEL
if
(
timeoutToStatus
<
millis
()
&&
currentMenu
!=
lcd_status_screen
)
{
#ifdef ULTIPANEL
if
(
currentMenu
!=
lcd_status_screen
&&
millis
()
>
timeoutToStatus
)
{
lcd_return_to_status
();
lcdDrawUpdate
=
2
;
}
#endif//ULTIPANEL
#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
)
{
void
lcd_ignore_click
(
bool
b
)
{
ignore_click
=
b
;
wait_for_unclick
=
false
;
}
...
...
@@ -1673,57 +1463,51 @@ 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
;
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
;
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
)
{
void
lcd_setalertstatuspgm
(
const
char
*
message
)
{
lcd_setstatuspgm
(
message
);
lcd_status_message_level
=
1
;
#ifdef ULTIPANEL
#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
...
...
@@ -1732,91 +1516,74 @@ void lcd_buttons_update()
#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
);
}
buttons
=~
newbutton
;
//invert it, because a pressed switch produces a logical 0
#endif//!NEWPANEL
#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
)
{
if
(
enc
!=
lastEncoderBits
)
{
switch
(
enc
)
{
case
encrot0
:
if
(
lastEncoderBits
==
encrot3
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot1
)
encoderDiff
--
;
if
(
lastEncoderBits
==
encrot3
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot1
)
encoderDiff
--
;
break
;
case
encrot1
:
if
(
lastEncoderBits
==
encrot0
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot2
)
encoderDiff
--
;
if
(
lastEncoderBits
==
encrot0
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot2
)
encoderDiff
--
;
break
;
case
encrot2
:
if
(
lastEncoderBits
==
encrot1
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot3
)
encoderDiff
--
;
if
(
lastEncoderBits
==
encrot1
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot3
)
encoderDiff
--
;
break
;
case
encrot3
:
if
(
lastEncoderBits
==
encrot2
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot0
)
encoderDiff
--
;
if
(
lastEncoderBits
==
encrot2
)
encoderDiff
++
;
else
if
(
lastEncoderBits
==
encrot0
)
encoderDiff
--
;
break
;
}
}
lastEncoderBits
=
enc
;
}
bool
lcd_detected
(
void
)
{
#if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE)
bool
lcd_detected
(
void
)
{
#if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE)
return
lcd
.
LcdDetected
()
==
1
;
#else
#else
return
true
;
#endif
#endif
}
void
lcd_buzz
(
long
duration
,
uint16_t
freq
)
{
#ifdef LCD_USE_I2C_BUZZER
void
lcd_buzz
(
long
duration
,
uint16_t
freq
)
{
#ifdef LCD_USE_I2C_BUZZER
lcd
.
buzz
(
duration
,
freq
);
#endif
#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