EXTENSIBLE_UI Joystick support (#15303)

This commit is contained in:
Marcio Teixeira
2019-09-18 18:35:03 -06:00
committed by Scott Lahteine
parent 12e0581f24
commit 7f117bfc60
10 changed files with 112 additions and 68 deletions

View File

@@ -156,9 +156,11 @@ namespace FTDI {
if (!UIData::flags.bits.touch_debouncing) {
if (tag == pressed_tag) {
// The user is holding down a button.
if (touch_timer.elapsed(1000 / TOUCH_REPEATS_PER_SECOND) && current_screen.onTouchHeld(tag)) {
current_screen.onRefresh();
if (UIData::flags.bits.touch_repeat_sound) sound.play(repeat_sound);
if (touch_timer.elapsed(1000 / TOUCH_REPEATS_PER_SECOND)) {
if (current_screen.onTouchHeld(tag)) {
current_screen.onRefresh();
if (UIData::flags.bits.touch_repeat_sound) sound.play(repeat_sound);
}
touch_timer.start();
}
}

View File

@@ -36,13 +36,7 @@ void BioConfirmHomeE::onRedraw(draw_mode_t) {
bool BioConfirmHomeE::onTouchEnd(uint8_t tag) {
switch (tag) {
case 1:
SpinnerDialogBox::enqueueAndWait_P(F(
"G112\n" /* Home extruder */
LULZBOT_AXIS_LEVELING_COMMANDS /* Level X axis */
"G0 X115 Z50 F6000\n" /* Goto loading position */
"M400\n" /* Wait for moves to finish */
"M18 X Y" /* Unlock motors */
));
SpinnerDialogBox::enqueueAndWait_P(F(LULZBOT_HOME_E_COMMANDS));
current_screen.forget();
break;
case 2:

View File

@@ -36,10 +36,7 @@ void BioConfirmHomeXYZ::onRedraw(draw_mode_t) {
bool BioConfirmHomeXYZ::onTouchEnd(uint8_t tag) {
switch (tag) {
case 1:
SpinnerDialogBox::enqueueAndWait_P(F(
"G28 X Y Z\n" /* Home all axis */
"G0 X115 Z50 F6000" /* Move to park position */
));
SpinnerDialogBox::enqueueAndWait_P(F(LULZBOT_HOME_XYZ_COMMANDS));
current_screen.forget();
break;
case 2:

View File

@@ -141,6 +141,7 @@ void BioPrintingDialogBox::setStatusMessage(const char* message) {
}
void BioPrintingDialogBox::onIdle() {
reset_menu_timeout();
if (refresh_timer.elapsed(STATUS_UPDATE_INTERVAL)) {
onRefresh();
refresh_timer.start();

View File

@@ -37,6 +37,9 @@
#define POLY(A) PolyUI::poly_reader_t(A, sizeof(A)/sizeof(A[0]))
const uint8_t shadow_depth = 5;
const float max_speed = 0.30;
const float min_speed = 0.05;
const uint8_t num_speeds = 10;
using namespace FTDI;
using namespace Theme;
@@ -248,7 +251,7 @@ void StatusScreen::onRedraw(draw_mode_t what) {
}
bool StatusScreen::onTouchStart(uint8_t) {
increment = fine_motion ? 0.25 : 1;
increment = min_speed;
return true;
}
@@ -263,6 +266,11 @@ bool StatusScreen::onTouchEnd(uint8_t tag) {
jog_xy = true;
injectCommands_P(PSTR("M17"));
}
jog(0, 0, 0);
break;
case 5:
case 6:
jog(0, 0, 0);
break;
case 9: GOTO_SCREEN(FilesScreen); break;
case 10: GOTO_SCREEN(MainMenu); break;
@@ -280,25 +288,31 @@ bool StatusScreen::onTouchEnd(uint8_t tag) {
bool StatusScreen::onTouchHeld(uint8_t tag) {
if (tag >= 1 && tag <= 4 && !jog_xy) return false;
if (ExtUI::isMoving()) return false; // Don't allow moves to accumulate
#define UI_INCREMENT_AXIS(axis) MoveAxisScreen::setManualFeedrate(axis, increment); UI_INCREMENT(AxisPosition_mm, axis);
#define UI_DECREMENT_AXIS(axis) MoveAxisScreen::setManualFeedrate(axis, increment); UI_DECREMENT(AxisPosition_mm, axis);
const float s = fine_motion ? min_speed : increment;
switch (tag) {
case 1: UI_DECREMENT_AXIS(X); break;
case 2: UI_INCREMENT_AXIS(X); break;
case 4: UI_DECREMENT_AXIS(Y); break; // NOTE: Y directions inverted because bed rather than needle moves
case 3: UI_INCREMENT_AXIS(Y); break;
case 5: UI_DECREMENT_AXIS(Z); break;
case 6: UI_INCREMENT_AXIS(Z); break;
case 7: UI_DECREMENT_AXIS(E0); break;
case 8: UI_INCREMENT_AXIS(E0); break;
default: return false;
case 1: jog(-s, 0, 0); break;
case 2: jog( s, 0, 0); break;
case 4: jog( 0, -s, 0); break; // NOTE: Y directions inverted because bed rather than needle moves
case 3: jog( 0, s, 0); break;
case 5: jog( 0, 0, -s); break;
case 6: jog( 0, 0, s); break;
case 7:
if (ExtUI::isMoving()) return false;
MoveAxisScreen::setManualFeedrate(E0, 1);
UI_INCREMENT(AxisPosition_mm, E0);
current_screen.onRefresh();
break;
case 8:
if (ExtUI::isMoving()) return false;
MoveAxisScreen::setManualFeedrate(E0, 1);
UI_DECREMENT(AxisPosition_mm, E0);
current_screen.onRefresh();
break;
default:
return false;
}
#undef UI_DECREMENT_AXIS
#undef UI_INCREMENT_AXIS
if (increment < 10 && !fine_motion)
increment += 0.5;
current_screen.onRefresh();
if (increment < max_speed)
increment += (max_speed - min_speed) / num_speeds;
return false;
}

View File

@@ -69,7 +69,7 @@ void MainMenu::onRedraw(draw_mode_t what) {
#else
#define GRID_ROWS 5
#define GRID_COLS 2
.tag(2).button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT(AUTO_HOME))
.tag(2).button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXTF(AUTO_HOME))
#if ENABLED(NOZZLE_CLEAN_FEATURE)
.enabled(1)
#else