My Marlin configs for Fabrikator Mini and CTC i3 Pro B
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

nudge_nozzle_screen.cpp 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /********************
  2. * nudge_nozzle.cpp *
  3. ********************/
  4. /****************************************************************************
  5. * Written By Mark Pelletier 2017 - Aleph Objects, Inc. *
  6. * Written By Marcio Teixeira 2018 - Aleph Objects, Inc. *
  7. * *
  8. * This program is free software: you can redistribute it and/or modify *
  9. * it under the terms of the GNU General Public License as published by *
  10. * the Free Software Foundation, either version 3 of the License, or *
  11. * (at your option) any later version. *
  12. * *
  13. * This program is distributed in the hope that it will be useful, *
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of *
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
  16. * GNU General Public License for more details. *
  17. * *
  18. * To view a copy of the GNU General Public License, go to the following *
  19. * location: <http://www.gnu.org/licenses/>. *
  20. ****************************************************************************/
  21. #include "../config.h"
  22. #if BOTH(LULZBOT_TOUCH_UI, BABYSTEPPING)
  23. #include "screens.h"
  24. #include "screen_data.h"
  25. using namespace FTDI;
  26. using namespace Theme;
  27. using namespace ExtUI;
  28. void NudgeNozzleScreen::onEntry() {
  29. screen_data.NudgeNozzleScreen.show_offsets = false;
  30. #if EXTRUDERS > 1
  31. screen_data.NudgeNozzleScreen.link_nozzles = true;
  32. #endif
  33. LOOP_XYZ(i) {
  34. screen_data.NudgeNozzleScreen.rel[i] = 0;
  35. }
  36. BaseNumericAdjustmentScreen::onEntry();
  37. }
  38. void NudgeNozzleScreen::onRedraw(draw_mode_t what) {
  39. widgets_t w(what);
  40. w.precision(2, BaseNumericAdjustmentScreen::DEFAULT_MIDRANGE).units(GET_TEXTF(UNITS_MM));
  41. w.heading( GET_TEXTF(NUDGE_NOZZLE));
  42. #if ENABLED(BABYSTEP_XY)
  43. w.color(x_axis).adjuster(2, GET_TEXTF(AXIS_X), screen_data.NudgeNozzleScreen.rel[0] / getAxisSteps_per_mm(X));
  44. w.color(y_axis).adjuster(4, GET_TEXTF(AXIS_Y), screen_data.NudgeNozzleScreen.rel[1] / getAxisSteps_per_mm(Y));
  45. #endif
  46. w.color(z_axis).adjuster(6, GET_TEXTF(AXIS_Z), screen_data.NudgeNozzleScreen.rel[2] / getAxisSteps_per_mm(Z));
  47. w.increments();
  48. #if EXTRUDERS > 1
  49. w.toggle (8, GET_TEXTF(ADJUST_BOTH_NOZZLES), screen_data.NudgeNozzleScreen.link_nozzles);
  50. #endif
  51. #if EXTRUDERS > 1 || HAS_BED_PROBE
  52. w.toggle (9, GET_TEXTF(SHOW_OFFSETS), screen_data.NudgeNozzleScreen.show_offsets);
  53. if (screen_data.NudgeNozzleScreen.show_offsets) {
  54. char str[19];
  55. w.draw_mode(BOTH);
  56. w.color(other);
  57. #if HAS_BED_PROBE
  58. dtostrf(getZOffset_mm(), 4, 2, str);
  59. strcat(str, " ");
  60. strcat_P(str, GET_TEXT(UNITS_MM));
  61. w.text_field (0, GET_TEXTF(ZPROBE_ZOFFSET), str);
  62. #endif
  63. #if EXTRUDERS > 1
  64. char num1[7], num2[7], num3[7];
  65. dtostrf(getNozzleOffset_mm(X, E1), 4, 2, num1);
  66. dtostrf(getNozzleOffset_mm(Y, E1), 4, 2, num2);
  67. dtostrf(getNozzleOffset_mm(Z, E1), 4, 2, num3);
  68. sprintf_P(str, PSTR("%s; %s; %s %S"), num1, num2, num3, GET_TEXT(UNITS_MM));
  69. w.text_field (0, GET_TEXTF(TOOL_OFFSETS), str);
  70. #endif
  71. }
  72. #endif
  73. }
  74. bool NudgeNozzleScreen::onTouchHeld(uint8_t tag) {
  75. const float inc = getIncrement();
  76. #if EXTRUDERS > 1
  77. const bool link = screen_data.NudgeNozzleScreen.link_nozzles;
  78. #else
  79. constexpr bool link = true;
  80. #endif
  81. int16_t steps;
  82. switch (tag) {
  83. case 2: steps = mmToWholeSteps(inc, X); smartAdjustAxis_steps(-steps, X, link); screen_data.NudgeNozzleScreen.rel[0] -= steps; break;
  84. case 3: steps = mmToWholeSteps(inc, X); smartAdjustAxis_steps( steps, X, link); screen_data.NudgeNozzleScreen.rel[0] += steps; break;
  85. case 4: steps = mmToWholeSteps(inc, Y); smartAdjustAxis_steps(-steps, Y, link); screen_data.NudgeNozzleScreen.rel[1] -= steps; break;
  86. case 5: steps = mmToWholeSteps(inc, Y); smartAdjustAxis_steps( steps, Y, link); screen_data.NudgeNozzleScreen.rel[1] += steps; break;
  87. case 6: steps = mmToWholeSteps(inc, Z); smartAdjustAxis_steps(-steps, Z, link); screen_data.NudgeNozzleScreen.rel[2] -= steps; break;
  88. case 7: steps = mmToWholeSteps(inc, Z); smartAdjustAxis_steps( steps, Z, link); screen_data.NudgeNozzleScreen.rel[2] += steps; break;
  89. #if EXTRUDERS > 1
  90. case 8: screen_data.NudgeNozzleScreen.link_nozzles = !link; break;
  91. #endif
  92. case 9: screen_data.NudgeNozzleScreen.show_offsets = !screen_data.NudgeNozzleScreen.show_offsets; break;
  93. default:
  94. return false;
  95. }
  96. #if EXTRUDERS > 1 || HAS_BED_PROBE
  97. SaveSettingsDialogBox::settingsChanged();
  98. #endif
  99. return true;
  100. }
  101. bool NudgeNozzleScreen::onTouchEnd(uint8_t tag) {
  102. if (tag == 1) {
  103. SaveSettingsDialogBox::promptToSaveSettings();
  104. return true;
  105. } else {
  106. return BaseNumericAdjustmentScreen::onTouchEnd(tag);
  107. }
  108. }
  109. void NudgeNozzleScreen::onIdle() {
  110. reset_menu_timeout();
  111. }
  112. #endif // LULZBOT_TOUCH_UI