added blanking time for button debouncing, lcd_clicked() improved, fan selftest code slightly modified
This commit is contained in:
parent
e061209fc2
commit
767d34fff8
|
|
@ -111,6 +111,7 @@ float pid_temp = DEFAULT_PID_TEMP;
|
||||||
|
|
||||||
bool long_press_active = false;
|
bool long_press_active = false;
|
||||||
long long_press_timer = millis();
|
long long_press_timer = millis();
|
||||||
|
long button_blanking_time = millis();
|
||||||
bool button_pressed = false;
|
bool button_pressed = false;
|
||||||
|
|
||||||
bool menuExiting = false;
|
bool menuExiting = false;
|
||||||
|
|
@ -4290,7 +4291,6 @@ static bool lcd_selftest_fan_dialog(int _fan)
|
||||||
lcd.setCursor(1, 3); lcd_printPGM(MSG_SELFTEST_FAN_NO);
|
lcd.setCursor(1, 3); lcd_printPGM(MSG_SELFTEST_FAN_NO);
|
||||||
|
|
||||||
int8_t enc_dif = 0;
|
int8_t enc_dif = 0;
|
||||||
bool _response = false;
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
switch (_fan)
|
switch (_fan)
|
||||||
|
|
@ -4330,13 +4330,7 @@ static bool lcd_selftest_fan_dialog(int _fan)
|
||||||
manage_heater();
|
manage_heater();
|
||||||
delay(100);
|
delay(100);
|
||||||
|
|
||||||
if (lcd_clicked())
|
} while (!lcd_clicked());
|
||||||
{
|
|
||||||
_response = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} while (!_response);
|
|
||||||
|
|
||||||
SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
|
SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
|
||||||
WRITE(EXTRUDER_0_AUTO_FAN_PIN, 0);
|
WRITE(EXTRUDER_0_AUTO_FAN_PIN, 0);
|
||||||
|
|
@ -4436,7 +4430,7 @@ static void lcd_selftest_screen_step(int _row, int _col, int _state, const char
|
||||||
static void lcd_quick_feedback()
|
static void lcd_quick_feedback()
|
||||||
{
|
{
|
||||||
lcdDrawUpdate = 2;
|
lcdDrawUpdate = 2;
|
||||||
button_pressed = false;
|
button_pressed = false;
|
||||||
lcd_implementation_quick_feedback();
|
lcd_implementation_quick_feedback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4791,36 +4785,42 @@ void lcd_buttons_update()
|
||||||
#if BTN_ENC > 0
|
#if BTN_ENC > 0
|
||||||
if (lcd_update_enabled == true) { //if we are in non-modal mode, long press can be used and short press triggers with button release
|
if (lcd_update_enabled == true) { //if we are in non-modal mode, long press can be used and short press triggers with button release
|
||||||
if (READ(BTN_ENC) == 0) { //button is pressed
|
if (READ(BTN_ENC) == 0) { //button is pressed
|
||||||
|
if (millis() > button_blanking_time) {
|
||||||
if (button_pressed == false && long_press_active == false) {
|
button_blanking_time = millis() + BUTTON_BLANKING_TIME;
|
||||||
if (currentMenu != lcd_move_z) {
|
if (button_pressed == false && long_press_active == false) {
|
||||||
savedMenu = currentMenu;
|
if (currentMenu != lcd_move_z) {
|
||||||
savedEncoderPosition = encoderPosition;
|
savedMenu = currentMenu;
|
||||||
|
savedEncoderPosition = encoderPosition;
|
||||||
|
}
|
||||||
|
long_press_timer = millis();
|
||||||
|
button_pressed = true;
|
||||||
}
|
}
|
||||||
long_press_timer = millis();
|
else {
|
||||||
button_pressed = true;
|
if (millis() - long_press_timer > LONG_PRESS_TIME) { //long press activated
|
||||||
}
|
|
||||||
else {
|
long_press_active = true;
|
||||||
if (millis() - long_press_timer > LONG_PRESS_TIME) { //long press activated
|
move_menu_scale = 1.0;
|
||||||
|
lcd_goto_menu(lcd_move_z);
|
||||||
long_press_active = true;
|
}
|
||||||
move_menu_scale = 1.0;
|
|
||||||
lcd_goto_menu(lcd_move_z);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { //button not pressed
|
else { //button not pressed
|
||||||
if (button_pressed) { //button was released
|
if (button_pressed) { //button was released
|
||||||
|
button_blanking_time = millis() + BUTTON_BLANKING_TIME;
|
||||||
|
|
||||||
if (long_press_active == false) { //button released before long press gets activated
|
if (long_press_active == false) { //button released before long press gets activated
|
||||||
if (currentMenu == lcd_move_z) {
|
if (currentMenu == lcd_move_z) {
|
||||||
//return to previously active menu and previous encoder position
|
//return to previously active menu and previous encoder position
|
||||||
lcd_goto_menu(savedMenu, savedEncoderPosition);
|
lcd_goto_menu(savedMenu, savedEncoderPosition);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
newbutton |= EN_C;
|
newbutton |= EN_C;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (currentMenu == lcd_move_z) lcd_quick_feedback();
|
||||||
//button_pressed is set back to false via lcd_quick_feedback function
|
//button_pressed is set back to false via lcd_quick_feedback function
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
long_press_active = false;
|
long_press_active = false;
|
||||||
|
|
@ -4830,6 +4830,7 @@ void lcd_buttons_update()
|
||||||
else { //we are in modal mode
|
else { //we are in modal mode
|
||||||
if (READ(BTN_ENC) == 0)
|
if (READ(BTN_ENC) == 0)
|
||||||
newbutton |= EN_C;
|
newbutton |= EN_C;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -4923,7 +4924,7 @@ void lcd_buzz(long duration, uint16_t freq)
|
||||||
bool lcd_clicked()
|
bool lcd_clicked()
|
||||||
{
|
{
|
||||||
bool clicked = LCD_CLICKED;
|
bool clicked = LCD_CLICKED;
|
||||||
button_pressed = false;
|
if(clicked) button_pressed = false;
|
||||||
return clicked;
|
return clicked;
|
||||||
}
|
}
|
||||||
#endif//ULTIPANEL
|
#endif//ULTIPANEL
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue