|
@@ -722,240 +722,248 @@ FORCE_INLINE void _draw_status_message(const bool blink) {
|
722
|
722
|
#endif
|
723
|
723
|
}
|
724
|
724
|
|
725
|
|
-/**
|
726
|
|
- * LCD_INFO_SCREEN_STYLE 0 : Classic Status Screen
|
727
|
|
- *
|
728
|
|
- * 16x2 |000/000 B000/000|
|
729
|
|
- * |0123456789012345|
|
730
|
|
- *
|
731
|
|
- * 16x4 |000/000 B000/000|
|
732
|
|
- * |SD---% Z 000.00|
|
733
|
|
- * |F---% T--:--|
|
734
|
|
- * |0123456789012345|
|
735
|
|
- *
|
736
|
|
- * 20x2 |T000/000° B000/000° |
|
737
|
|
- * |01234567890123456789|
|
738
|
|
- *
|
739
|
|
- * 20x4 |T000/000° B000/000° |
|
740
|
|
- * |X 000 Y 000 Z000.000|
|
741
|
|
- * |F---% SD---% T--:--|
|
742
|
|
- * |01234567890123456789|
|
743
|
|
- */
|
744
|
|
-static void lcd_impl_status_screen_0() {
|
745
|
|
- const bool blink = lcd_blink();
|
|
725
|
+#if LCD_INFO_SCREEN_STYLE == 0
|
|
726
|
+
|
|
727
|
+ /**
|
|
728
|
+ * LCD_INFO_SCREEN_STYLE 0 : Classic Status Screen
|
|
729
|
+ *
|
|
730
|
+ * 16x2 |000/000 B000/000|
|
|
731
|
+ * |0123456789012345|
|
|
732
|
+ *
|
|
733
|
+ * 16x4 |000/000 B000/000|
|
|
734
|
+ * |SD---% Z 000.00|
|
|
735
|
+ * |F---% T--:--|
|
|
736
|
+ * |0123456789012345|
|
|
737
|
+ *
|
|
738
|
+ * 20x2 |T000/000° B000/000° |
|
|
739
|
+ * |01234567890123456789|
|
|
740
|
+ *
|
|
741
|
+ * 20x4 |T000/000° B000/000° |
|
|
742
|
+ * |X 000 Y 000 Z000.000|
|
|
743
|
+ * |F---% SD---% T--:--|
|
|
744
|
+ * |01234567890123456789|
|
|
745
|
+ */
|
|
746
|
+
|
|
747
|
+ static void lcd_impl_status_screen_0() {
|
|
748
|
+ const bool blink = lcd_blink();
|
|
749
|
+
|
|
750
|
+ // ========== Line 1 ==========
|
|
751
|
+
|
|
752
|
+ lcd_moveto(0, 0);
|
746
|
753
|
|
747
|
|
- // ========== Line 1 ==========
|
|
754
|
+ #if LCD_WIDTH < 20
|
748
|
755
|
|
749
|
|
- lcd_moveto(0, 0);
|
|
756
|
+ //
|
|
757
|
+ // Hotend 0 Temperature
|
|
758
|
+ //
|
|
759
|
+ _draw_heater_status(0, -1, blink);
|
750
|
760
|
|
751
|
|
- #if LCD_WIDTH < 20
|
|
761
|
+ //
|
|
762
|
+ // Hotend 1 or Bed Temperature
|
|
763
|
+ //
|
|
764
|
+ #if HOTENDS > 1
|
|
765
|
+ lcd_moveto(8, 0);
|
|
766
|
+ lcd_put_wchar((char)LCD_STR_THERMOMETER[0]);
|
|
767
|
+ _draw_heater_status(1, -1, blink);
|
|
768
|
+ #elif HAS_HEATED_BED
|
|
769
|
+ lcd_moveto(8, 0);
|
|
770
|
+ lcd_put_wchar((char)LCD_BEDTEMP_CHAR);
|
|
771
|
+ _draw_heater_status(-1, -1, blink);
|
|
772
|
+ #endif
|
752
|
773
|
|
753
|
|
- //
|
754
|
|
- // Hotend 0 Temperature
|
755
|
|
- //
|
756
|
|
- _draw_heater_status(0, -1, blink);
|
|
774
|
+ #else // LCD_WIDTH >= 20
|
757
|
775
|
|
758
|
|
- //
|
759
|
|
- // Hotend 1 or Bed Temperature
|
760
|
|
- //
|
761
|
|
- #if HOTENDS > 1
|
762
|
|
- lcd_moveto(8, 0);
|
763
|
|
- lcd_put_wchar((char)LCD_STR_THERMOMETER[0]);
|
764
|
|
- _draw_heater_status(1, -1, blink);
|
765
|
|
- #elif HAS_HEATED_BED
|
766
|
|
- lcd_moveto(8, 0);
|
767
|
|
- lcd_put_wchar((char)LCD_BEDTEMP_CHAR);
|
768
|
|
- _draw_heater_status(-1, -1, blink);
|
769
|
|
- #endif
|
|
776
|
+ //
|
|
777
|
+ // Hotend 0 Temperature
|
|
778
|
+ //
|
|
779
|
+ _draw_heater_status(0, LCD_STR_THERMOMETER[0], blink);
|
770
|
780
|
|
771
|
|
- #else // LCD_WIDTH >= 20
|
|
781
|
+ //
|
|
782
|
+ // Hotend 1 or Bed Temperature
|
|
783
|
+ //
|
|
784
|
+ #if HOTENDS > 1
|
|
785
|
+ lcd_moveto(10, 0);
|
|
786
|
+ _draw_heater_status(1, LCD_STR_THERMOMETER[0], blink);
|
|
787
|
+ #elif HAS_HEATED_BED
|
|
788
|
+ lcd_moveto(10, 0);
|
|
789
|
+ _draw_bed_status(blink);
|
|
790
|
+ #endif
|
772
|
791
|
|
773
|
|
- //
|
774
|
|
- // Hotend 0 Temperature
|
775
|
|
- //
|
776
|
|
- _draw_heater_status(0, LCD_STR_THERMOMETER[0], blink);
|
|
792
|
+ #endif // LCD_WIDTH >= 20
|
777
|
793
|
|
778
|
|
- //
|
779
|
|
- // Hotend 1 or Bed Temperature
|
780
|
|
- //
|
781
|
|
- #if HOTENDS > 1
|
782
|
|
- lcd_moveto(10, 0);
|
783
|
|
- _draw_heater_status(1, LCD_STR_THERMOMETER[0], blink);
|
784
|
|
- #elif HAS_HEATED_BED
|
785
|
|
- lcd_moveto(10, 0);
|
786
|
|
- _draw_bed_status(blink);
|
787
|
|
- #endif
|
|
794
|
+ // ========== Line 2 ==========
|
788
|
795
|
|
789
|
|
- #endif // LCD_WIDTH >= 20
|
|
796
|
+ #if LCD_HEIGHT > 2
|
790
|
797
|
|
791
|
|
- // ========== Line 2 ==========
|
|
798
|
+ #if LCD_WIDTH < 20
|
792
|
799
|
|
793
|
|
- #if LCD_HEIGHT > 2
|
|
800
|
+ #if HAS_PRINT_PROGRESS
|
|
801
|
+ lcd_moveto(0, 2);
|
|
802
|
+ _draw_print_progress();
|
|
803
|
+ #endif
|
794
|
804
|
|
795
|
|
- #if LCD_WIDTH < 20
|
|
805
|
+ #else // LCD_WIDTH >= 20
|
796
|
806
|
|
797
|
|
- #if HAS_PRINT_PROGRESS
|
798
|
|
- lcd_moveto(0, 2);
|
799
|
|
- _draw_print_progress();
|
800
|
|
- #endif
|
|
807
|
+ lcd_moveto(0, 1);
|
801
|
808
|
|
802
|
|
- #else // LCD_WIDTH >= 20
|
|
809
|
+ // If the first line has two extruder temps,
|
|
810
|
+ // show more temperatures on the next line
|
803
|
811
|
|
804
|
|
- lcd_moveto(0, 1);
|
|
812
|
+ #if HOTENDS > 2 || (HOTENDS > 1 && HAS_HEATED_BED)
|
805
|
813
|
|
806
|
|
- // If the first line has two extruder temps,
|
807
|
|
- // show more temperatures on the next line
|
|
814
|
+ #if HOTENDS > 2
|
|
815
|
+ _draw_heater_status(2, LCD_STR_THERMOMETER[0], blink);
|
|
816
|
+ lcd_moveto(10, 1);
|
|
817
|
+ #endif
|
808
|
818
|
|
809
|
|
- #if HOTENDS > 2 || (HOTENDS > 1 && HAS_HEATED_BED)
|
|
819
|
+ _draw_bed_status(blink);
|
810
|
820
|
|
811
|
|
- #if HOTENDS > 2
|
812
|
|
- _draw_heater_status(2, LCD_STR_THERMOMETER[0], blink);
|
813
|
|
- lcd_moveto(10, 1);
|
814
|
|
- #endif
|
|
821
|
+ #else // HOTENDS <= 2 && (HOTENDS <= 1 || !HAS_HEATED_BED)
|
815
|
822
|
|
816
|
|
- _draw_bed_status(blink);
|
|
823
|
+ _draw_axis_value(X_AXIS, ftostr4sign(LOGICAL_X_POSITION(current_position[X_AXIS])), blink);
|
817
|
824
|
|
818
|
|
- #else // HOTENDS <= 2 && (HOTENDS <= 1 || !HAS_HEATED_BED)
|
|
825
|
+ lcd_put_wchar(' ');
|
819
|
826
|
|
820
|
|
- _draw_axis_value(X_AXIS, ftostr4sign(LOGICAL_X_POSITION(current_position[X_AXIS])), blink);
|
|
827
|
+ _draw_axis_value(Y_AXIS, ftostr4sign(LOGICAL_Y_POSITION(current_position[Y_AXIS])), blink);
|
821
|
828
|
|
822
|
|
- lcd_put_wchar(' ');
|
|
829
|
+ #endif // HOTENDS <= 2 && (HOTENDS <= 1 || !HAS_HEATED_BED)
|
823
|
830
|
|
824
|
|
- _draw_axis_value(Y_AXIS, ftostr4sign(LOGICAL_Y_POSITION(current_position[Y_AXIS])), blink);
|
|
831
|
+ #endif // LCD_WIDTH >= 20
|
825
|
832
|
|
826
|
|
- #endif // HOTENDS <= 2 && (HOTENDS <= 1 || !HAS_HEATED_BED)
|
|
833
|
+ lcd_moveto(LCD_WIDTH - 8, 1);
|
|
834
|
+ _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position[Z_AXIS])), blink);
|
827
|
835
|
|
828
|
|
- #endif // LCD_WIDTH >= 20
|
|
836
|
+ #if HAS_LEVELING && !HAS_HEATED_BED
|
|
837
|
+ lcd_put_wchar(planner.leveling_active || blink ? '_' : ' ');
|
|
838
|
+ #endif
|
829
|
839
|
|
830
|
|
- lcd_moveto(LCD_WIDTH - 8, 1);
|
831
|
|
- _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position[Z_AXIS])), blink);
|
|
840
|
+ #endif // LCD_HEIGHT > 2
|
832
|
841
|
|
833
|
|
- #if HAS_LEVELING && !HAS_HEATED_BED
|
834
|
|
- lcd_put_wchar(planner.leveling_active || blink ? '_' : ' ');
|
835
|
|
- #endif
|
|
842
|
+ // ========== Line 3 ==========
|
836
|
843
|
|
837
|
|
- #endif // LCD_HEIGHT > 2
|
|
844
|
+ #if LCD_HEIGHT > 3
|
838
|
845
|
|
839
|
|
- // ========== Line 3 ==========
|
|
846
|
+ lcd_moveto(0, 2);
|
|
847
|
+ lcd_put_wchar(LCD_FEEDRATE_CHAR);
|
|
848
|
+ lcd_put_u8str(itostr3(feedrate_percentage));
|
|
849
|
+ lcd_put_wchar('%');
|
840
|
850
|
|
841
|
|
- #if LCD_HEIGHT > 3
|
|
851
|
+ #if LCD_WIDTH >= 20 && HAS_PRINT_PROGRESS
|
|
852
|
+ lcd_moveto(7, 2);
|
|
853
|
+ _draw_print_progress();
|
|
854
|
+ #endif
|
842
|
855
|
|
843
|
|
- lcd_moveto(0, 2);
|
844
|
|
- lcd_put_wchar(LCD_FEEDRATE_CHAR);
|
845
|
|
- lcd_put_u8str(itostr3(feedrate_percentage));
|
846
|
|
- lcd_put_wchar('%');
|
|
856
|
+ char buffer[14];
|
|
857
|
+ duration_t elapsed = print_job_timer.duration();
|
|
858
|
+ uint8_t len = elapsed.toDigital(buffer);
|
847
|
859
|
|
848
|
|
- #if LCD_WIDTH >= 20 && HAS_PRINT_PROGRESS
|
849
|
|
- lcd_moveto(7, 2);
|
850
|
|
- _draw_print_progress();
|
851
|
|
- #endif
|
|
860
|
+ lcd_moveto(LCD_WIDTH - len - 1, 2);
|
|
861
|
+ lcd_put_wchar(LCD_CLOCK_CHAR);
|
|
862
|
+ lcd_put_u8str(buffer);
|
852
|
863
|
|
853
|
|
- char buffer[14];
|
854
|
|
- duration_t elapsed = print_job_timer.duration();
|
855
|
|
- uint8_t len = elapsed.toDigital(buffer);
|
|
864
|
+ #endif // LCD_HEIGHT > 3
|
856
|
865
|
|
857
|
|
- lcd_moveto(LCD_WIDTH - len - 1, 2);
|
858
|
|
- lcd_put_wchar(LCD_CLOCK_CHAR);
|
859
|
|
- lcd_put_u8str(buffer);
|
|
866
|
+ // ========= Last Line ========
|
860
|
867
|
|
861
|
|
- #endif // LCD_HEIGHT > 3
|
|
868
|
+ //
|
|
869
|
+ // Status Message (which may be a Progress Bar or Filament display)
|
|
870
|
+ //
|
|
871
|
+ _draw_status_message(blink);
|
|
872
|
+ }
|
862
|
873
|
|
863
|
|
- // ========= Last Line ========
|
|
874
|
+#elif LCD_INFO_SCREEN_STYLE == 1
|
864
|
875
|
|
865
|
|
- //
|
866
|
|
- // Status Message (which may be a Progress Bar or Filament display)
|
867
|
|
- //
|
868
|
|
- _draw_status_message(blink);
|
869
|
|
-}
|
|
876
|
+ /**
|
|
877
|
+ * LCD_INFO_SCREEN_STYLE 1 : Prusa-style Status Screen
|
|
878
|
+ *
|
|
879
|
+ * |T000/000° Z 000.00 |
|
|
880
|
+ * |B000/000° F---% |
|
|
881
|
+ * |SD---% T--:-- |
|
|
882
|
+ * |01234567890123456789|
|
|
883
|
+ *
|
|
884
|
+ * |T000/000° Z 000.00 |
|
|
885
|
+ * |T000/000° F---% |
|
|
886
|
+ * |B000/000° SD---% |
|
|
887
|
+ * |01234567890123456789|
|
|
888
|
+ */
|
870
|
889
|
|
871
|
|
-/**
|
872
|
|
- * LCD_INFO_SCREEN_STYLE 1 : Prusa-style Status Screen
|
873
|
|
- *
|
874
|
|
- * |T000/000° Z 000.00 |
|
875
|
|
- * |B000/000° F---% |
|
876
|
|
- * |SD---% T--:-- |
|
877
|
|
- * |01234567890123456789|
|
878
|
|
- *
|
879
|
|
- * |T000/000° Z 000.00 |
|
880
|
|
- * |T000/000° F---% |
|
881
|
|
- * |B000/000° SD---% |
|
882
|
|
- * |01234567890123456789|
|
883
|
|
- */
|
884
|
|
-static void lcd_impl_status_screen_1() {
|
885
|
|
- const bool blink = lcd_blink();
|
|
890
|
+ static void lcd_impl_status_screen_1() {
|
|
891
|
+ const bool blink = lcd_blink();
|
886
|
892
|
|
887
|
|
- // ========== Line 1 ==========
|
|
893
|
+ // ========== Line 1 ==========
|
888
|
894
|
|
889
|
|
- //
|
890
|
|
- // Hotend 0 Temperature
|
891
|
|
- //
|
892
|
|
- lcd_moveto(0, 0);
|
893
|
|
- _draw_heater_status(0, LCD_STR_THERMOMETER[0], blink);
|
|
895
|
+ //
|
|
896
|
+ // Hotend 0 Temperature
|
|
897
|
+ //
|
|
898
|
+ lcd_moveto(0, 0);
|
|
899
|
+ _draw_heater_status(0, LCD_STR_THERMOMETER[0], blink);
|
894
|
900
|
|
895
|
|
- //
|
896
|
|
- // Z Coordinate
|
897
|
|
- //
|
898
|
|
- lcd_moveto(LCD_WIDTH - 9, 0);
|
899
|
|
- _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position[Z_AXIS])), blink);
|
|
901
|
+ //
|
|
902
|
+ // Z Coordinate
|
|
903
|
+ //
|
|
904
|
+ lcd_moveto(LCD_WIDTH - 9, 0);
|
|
905
|
+ _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position[Z_AXIS])), blink);
|
900
|
906
|
|
901
|
|
- #if HAS_LEVELING && (HOTENDS > 1 || !HAS_HEATED_BED)
|
902
|
|
- lcd_moveto(LCD_WIDTH - 1, 0);
|
903
|
|
- lcd_put_wchar(planner.leveling_active || blink ? '_' : ' ');
|
904
|
|
- #endif
|
|
907
|
+ #if HAS_LEVELING && (HOTENDS > 1 || !HAS_HEATED_BED)
|
|
908
|
+ lcd_moveto(LCD_WIDTH - 1, 0);
|
|
909
|
+ lcd_put_wchar(planner.leveling_active || blink ? '_' : ' ');
|
|
910
|
+ #endif
|
905
|
911
|
|
906
|
|
- // ========== Line 2 ==========
|
|
912
|
+ // ========== Line 2 ==========
|
907
|
913
|
|
908
|
|
- //
|
909
|
|
- // Hotend 1 or Bed Temperature
|
910
|
|
- //
|
911
|
|
- lcd_moveto(0, 1);
|
912
|
|
- #if HOTENDS > 1
|
913
|
|
- _draw_heater_status(1, LCD_STR_THERMOMETER[0], blink);
|
914
|
|
- #elif HAS_HEATED_BED
|
915
|
|
- _draw_bed_status(blink);
|
916
|
|
- #endif
|
|
914
|
+ //
|
|
915
|
+ // Hotend 1 or Bed Temperature
|
|
916
|
+ //
|
|
917
|
+ lcd_moveto(0, 1);
|
|
918
|
+ #if HOTENDS > 1
|
|
919
|
+ _draw_heater_status(1, LCD_STR_THERMOMETER[0], blink);
|
|
920
|
+ #elif HAS_HEATED_BED
|
|
921
|
+ _draw_bed_status(blink);
|
|
922
|
+ #endif
|
917
|
923
|
|
918
|
|
- lcd_moveto(LCD_WIDTH - 9, 1);
|
919
|
|
- lcd_put_wchar(LCD_FEEDRATE_CHAR);
|
920
|
|
- lcd_put_u8str(itostr3(feedrate_percentage));
|
921
|
|
- lcd_put_wchar('%');
|
922
|
|
-
|
923
|
|
- // ========== Line 3 ==========
|
924
|
|
-
|
925
|
|
- //
|
926
|
|
- // SD Percent, Hotend 2, or Bed
|
927
|
|
- //
|
928
|
|
- lcd_moveto(0, 2);
|
929
|
|
- #if HOTENDS > 2
|
930
|
|
- _draw_heater_status(2, LCD_STR_THERMOMETER[0], blink);
|
931
|
|
- #elif HOTENDS > 1 && HAS_HEATED_BED
|
932
|
|
- _draw_bed_status(blink);
|
933
|
|
- #elif HAS_PRINT_PROGRESS
|
934
|
|
- #define DREW_PRINT_PROGRESS
|
935
|
|
- _draw_print_progress();
|
936
|
|
- #endif
|
|
924
|
+ lcd_moveto(LCD_WIDTH - 9, 1);
|
|
925
|
+ lcd_put_wchar(LCD_FEEDRATE_CHAR);
|
|
926
|
+ lcd_put_u8str(itostr3(feedrate_percentage));
|
|
927
|
+ lcd_put_wchar('%');
|
937
|
928
|
|
938
|
|
- //
|
939
|
|
- // Elapsed Time or SD Percent
|
940
|
|
- //
|
941
|
|
- lcd_moveto(LCD_WIDTH - 9, 2);
|
942
|
|
- #if HAS_PRINT_PROGRESS && !defined(DREW_PRINT_PROGRESS)
|
943
|
|
- _draw_print_progress();
|
944
|
|
- #else
|
945
|
|
- duration_t elapsed = print_job_timer.duration();
|
946
|
|
- char buffer[14];
|
947
|
|
- (void)elapsed.toDigital(buffer);
|
948
|
|
- lcd_put_wchar(LCD_CLOCK_CHAR);
|
949
|
|
- lcd_put_u8str(buffer);
|
950
|
|
- #endif
|
|
929
|
+ // ========== Line 3 ==========
|
|
930
|
+
|
|
931
|
+ //
|
|
932
|
+ // SD Percent, Hotend 2, or Bed
|
|
933
|
+ //
|
|
934
|
+ lcd_moveto(0, 2);
|
|
935
|
+ #if HOTENDS > 2
|
|
936
|
+ _draw_heater_status(2, LCD_STR_THERMOMETER[0], blink);
|
|
937
|
+ #elif HOTENDS > 1 && HAS_HEATED_BED
|
|
938
|
+ _draw_bed_status(blink);
|
|
939
|
+ #elif HAS_PRINT_PROGRESS
|
|
940
|
+ #define DREW_PRINT_PROGRESS
|
|
941
|
+ _draw_print_progress();
|
|
942
|
+ #endif
|
951
|
943
|
|
952
|
|
- // ========== Line 4 ==========
|
|
944
|
+ //
|
|
945
|
+ // Elapsed Time or SD Percent
|
|
946
|
+ //
|
|
947
|
+ lcd_moveto(LCD_WIDTH - 9, 2);
|
|
948
|
+ #if HAS_PRINT_PROGRESS && !defined(DREW_PRINT_PROGRESS)
|
|
949
|
+ _draw_print_progress();
|
|
950
|
+ #else
|
|
951
|
+ duration_t elapsed = print_job_timer.duration();
|
|
952
|
+ char buffer[14];
|
|
953
|
+ (void)elapsed.toDigital(buffer);
|
|
954
|
+ lcd_put_wchar(LCD_CLOCK_CHAR);
|
|
955
|
+ lcd_put_u8str(buffer);
|
|
956
|
+ #endif
|
953
|
957
|
|
954
|
|
- //
|
955
|
|
- // Status Message (which may be a Progress Bar or Filament display)
|
956
|
|
- //
|
957
|
|
- _draw_status_message(blink);
|
958
|
|
-}
|
|
958
|
+ // ========== Line 4 ==========
|
|
959
|
+
|
|
960
|
+ //
|
|
961
|
+ // Status Message (which may be a Progress Bar or Filament display)
|
|
962
|
+ //
|
|
963
|
+ _draw_status_message(blink);
|
|
964
|
+ }
|
|
965
|
+
|
|
966
|
+#endif
|
959
|
967
|
|
960
|
968
|
#if ENABLED(ULTIPANEL)
|
961
|
969
|
|