first_lay_cal.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*
  2. * first_lay_cal.cpp
  3. *
  4. * Created on: Jun 10, 2019
  5. * Author: marek
  6. */
  7. #include "first_lay_cal.h"
  8. #include "Configuration_prusa.h"
  9. #include "language.h"
  10. #include "Marlin.h"
  11. #include "mmu.h"
  12. #include <avr/pgmspace.h>
  13. static const char cmd_preheat_0[] PROGMEM = "M107";
  14. static const char cmd_preheat_1[] PROGMEM = "M104 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP);
  15. static const char cmd_preheat_2[] PROGMEM = "M140 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP);
  16. static const char cmd_preheat_3[] PROGMEM = "M190 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP);
  17. static const char cmd_preheat_4[] PROGMEM = "M109 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP);
  18. static const char cmd_preheat_5[] PROGMEM = "G28";
  19. static const char cmd_preheat_6[] PROGMEM = "G92 E0.0";
  20. static const char * const preheat_cmd[] PROGMEM =
  21. {
  22. cmd_preheat_0,
  23. cmd_preheat_1,
  24. cmd_preheat_2,
  25. cmd_preheat_3,
  26. cmd_preheat_4,
  27. cmd_preheat_5, //call MSG_M117_V2_CALIBRATION before
  28. cmd_preheat_6,
  29. };
  30. void lay1cal_preheat()
  31. {
  32. for (uint8_t i = 0; i < (sizeof(preheat_cmd)/sizeof(preheat_cmd[0])); ++i)
  33. {
  34. if (5 == i) enquecommand_P(_T(MSG_M117_V2_CALIBRATION));
  35. enquecommand_P(static_cast<char*>(pgm_read_ptr(&preheat_cmd[i])));
  36. }
  37. }
  38. static const char cmd_intro_mmu_0[] PROGMEM = "M83";
  39. static const char cmd_intro_mmu_1[] PROGMEM = "G1 Y-3.0 F1000.0";
  40. static const char cmd_intro_mmu_2[] PROGMEM = "G1 Z0.4 F1000.0";
  41. static const char cmd_intro_mmu_3[] PROGMEM = "G1 X55.0 E32.0 F1073.0"; // call T code before
  42. static const char cmd_intro_mmu_4[] PROGMEM = "G1 X5.0 E32.0 F1800.0";
  43. static const char cmd_intro_mmu_5[] PROGMEM = "G1 X55.0 E8.0 F2000.0";
  44. static const char cmd_intro_mmu_6[] PROGMEM = "G1 Z0.3 F1000.0";
  45. static const char cmd_intro_mmu_7[] PROGMEM = "G92 E0.0";
  46. static const char cmd_intro_mmu_8[] PROGMEM = "G1 X240.0 E25.0 F2200.0";
  47. static const char cmd_intro_mmu_9[] PROGMEM = "G1 Y-2.0 F1000.0";
  48. static const char cmd_intro_mmu_10[] PROGMEM = "G1 X55.0 E25 F1400.0";
  49. static const char cmd_intro_mmu_11[] PROGMEM = "G1 Z0.20 F1000.0";
  50. static const char cmd_intro_mmu_12[] PROGMEM = "G1 X5.0 E4.0 F1000.0";
  51. static const char * const intro_mmu_cmd[] PROGMEM =
  52. {
  53. cmd_intro_mmu_0,
  54. cmd_intro_mmu_1,
  55. cmd_intro_mmu_2,
  56. cmd_intro_mmu_3, // call T code before
  57. cmd_intro_mmu_4,
  58. cmd_intro_mmu_5,
  59. cmd_intro_mmu_6,
  60. cmd_intro_mmu_7,
  61. cmd_intro_mmu_8,
  62. cmd_intro_mmu_9,
  63. cmd_intro_mmu_10,
  64. cmd_intro_mmu_11,
  65. cmd_intro_mmu_12,
  66. };
  67. void lay1cal_intro_line(char *cmd_buffer, uint8_t filament)
  68. {
  69. if (mmu_enabled)
  70. {
  71. for (uint8_t i = 0; i < (sizeof(intro_mmu_cmd)/sizeof(intro_mmu_cmd[0])); ++i)
  72. {
  73. if (3 == i)
  74. {
  75. sprintf_P(cmd_buffer, PSTR("T%d"), filament);
  76. enquecommand(cmd_buffer);
  77. }
  78. enquecommand_P(static_cast<char*>(pgm_read_ptr(&intro_mmu_cmd[i])));
  79. }
  80. }
  81. else
  82. {
  83. enquecommand_P(PSTR("G1 X60.0 E9.0 F1000.0"));
  84. enquecommand_P(PSTR("G1 X100.0 E12.5 F1000.0"));
  85. }
  86. }
  87. static const char cmd_pre_meander_0[] PROGMEM = "G92 E0.0";
  88. static const char cmd_pre_meander_1[] PROGMEM = "G21"; //set units to millimeters TODO unsupported command
  89. static const char cmd_pre_meander_2[] PROGMEM = "G90"; //use absolute coordinates
  90. static const char cmd_pre_meander_3[] PROGMEM = "M83"; //use relative distances for extrusion TODO: duplicate
  91. static const char cmd_pre_meander_4[] PROGMEM = "G1 E-1.50000 F2100.00000";
  92. static const char cmd_pre_meander_5[] PROGMEM = "G1 Z5 F7200.000";
  93. static const char cmd_pre_meander_6[] PROGMEM = "M204 S1000"; //set acceleration
  94. static const char cmd_pre_meander_7[] PROGMEM = "G1 F4000";
  95. static const char * const cmd_pre_meander[] PROGMEM =
  96. {
  97. cmd_pre_meander_0,
  98. cmd_pre_meander_1,
  99. cmd_pre_meander_2,
  100. cmd_pre_meander_3,
  101. cmd_pre_meander_4,
  102. cmd_pre_meander_5,
  103. cmd_pre_meander_6,
  104. cmd_pre_meander_7,
  105. };
  106. void lay1cal_before_meander()
  107. {
  108. for (uint8_t i = 0; i < (sizeof(cmd_pre_meander)/sizeof(cmd_pre_meander[0])); ++i)
  109. {
  110. enquecommand_P(static_cast<char*>(pgm_read_ptr(&cmd_pre_meander[i])));
  111. }
  112. }