////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ***** Print ***** ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void Print() { if (Mode == Mode_Thread) ////////////////////////////////////////////////////////// { if (Sub_Mode_Thread == Sub_Mode_Thread_Int) snprintf(LCD_Row_1, 21, " \x50\x45\xA4\x62\xA0\x41 \xB3\xBD\x79\xBF\x70\x65\xBD\xBD\xC7\xC7 "); //РЕЗЬБА внутренняя else if (Sub_Mode_Thread == Sub_Mode_Thread_Man) snprintf(LCD_Row_1, 21, " \x50\x45\xA4\x62\xA0\x41 "); //РЕЗЬБА else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_1, 21, " \x50\x45\xA4\x62\xA0\x41 \xBD""apy\xB6\xBD""a\xC7 "); //РЕЗЬБА наружная int lenTP = strlen(Thread_Info[Thread_Step].Thread_Print); if (Sub_Mode_Thread == Sub_Mode_Thread_Int && lenTP == 4 ) snprintf(LCD_Row_2, 21, " \xC1""a\xB4 %s \xBC\xBC ", Thread_Info[Thread_Step].Thread_Print); // шаг else if (Sub_Mode_Thread == Sub_Mode_Thread_Int && lenTP == 3 ) snprintf(LCD_Row_2, 21, " \xC1""a\xB4 %s tpi ", Thread_Info[Thread_Step].Thread_Print); // шаг else if (Sub_Mode_Thread == Sub_Mode_Thread_Man && lenTP == 4 ) snprintf(LCD_Row_2, 21, " \xC1""a\xB4 %s \xBC\xBC \4\3", Thread_Info[Thread_Step].Thread_Print); // шаг в мм else if (Sub_Mode_Thread == Sub_Mode_Thread_Man && lenTP == 3 ) snprintf(LCD_Row_2, 21, " \xC1""a\xB4 %s tpi \4\3", Thread_Info[Thread_Step].Thread_Print); // шаг в tpi else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext && lenTP == 4 ) snprintf(LCD_Row_2, 21, " \xC1""a\xB4 %s \xBC\xBC ", Thread_Info[Thread_Step].Thread_Print); // шаг else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext && lenTP == 3 ) snprintf(LCD_Row_2, 21, " \xC1""a\xB4 %s tpi ", Thread_Info[Thread_Step].Thread_Print); // шаг if (Sub_Mode_Thread == Sub_Mode_Thread_Int) snprintf(LCD_Row_3, 21, "\xB3""ce\xB4""o \xBEpoxo""\xE3""o\xB3 %2d \4\3",(Thread_Info[Thread_Step].Pass - Pass_Nr+1 + PASS_FINISH + Pass_Fin) + Thr_Pass_Summ); // всего проходов else if (Sub_Mode_Thread == Sub_Mode_Thread_Man) snprintf(LCD_Row_3, 21, "max: \xE3\x6F %s \x6F\xB2/\xBC\xB8\xBD ",Thread_Info[Thread_Step].Limit_Print); // максимальные обороты else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_3, 21, "\xB3""ce\xB4""o \xBEpoxo""\xE3""o\xB3 %2d \4\3",(Thread_Info[Thread_Step].Pass - Pass_Nr+1 + PASS_FINISH + Pass_Fin) + Thr_Pass_Summ); // всего проходов if (Sub_Mode_Thread == Sub_Mode_Thread_Int) snprintf(LCD_Row_4, 21, "\xB8\xB7 \xBD\xB8""x \xC0\xB8""c\xBF""o\xB3\xC3""x%2d \1\2",PASS_FINISH + Pass_Fin); // из них чистовых else if (Sub_Mode_Thread == Sub_Mode_Thread_Man) snprintf(LCD_Row_4, 21, " %5ld \xB3\xB8\xBF\xBA""o\xB3", Rev_Count); // 0 витков else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_4, 21, "\xB8\xB7 \xBD\xB8""x \xC0\xB8""c\xBF""o\xB3\xC3""x%2d \1\2",PASS_FINISH + Pass_Fin); // из них чистовых } else if (Mode == Mode_Feed) ////////////////////////////////////////////////////////// { if (Sub_Mode_Feed == Sub_Mode_Feed_Int) {snprintf(LCD_Row_1, 21, " \x43\xA5\x48\x58\x50\x4F\x48\x48\x41\xB1 \xB3\xBD""y\xBF""p\xB8 "); // СИНХРОННАЯ внутри snprintf(LCD_Row_2, 21, "\xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); snprintf(LCD_Row_3, 21, "\xBE\x70\x6F\x78\x6F\xE3\x6F\xB3 %2d \1\2", Pass_Total-Pass_Nr+1); //проходов if (PP_X == 0)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/R %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/\6 %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/Ф: } else if (Sub_Mode_Feed == Sub_Mode_Feed_Man) {snprintf(LCD_Row_1, 21, " \x43\xA5\x48\x58\x50\x4F\x48\x48\x41\xB1 "); // СИНХРОННАЯ snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, " \xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); snprintf(LCD_Row_4, 21, " %5ld \xB3\xB8\xBF\xBA""o\xB3", Rev_Count_F); // 0 витков } else if (Sub_Mode_Feed == Sub_Mode_Feed_Ext) {snprintf(LCD_Row_1, 21, " \x43\xA5\x48\x58\x50\x4F\x48\x48\x41\xB1 c\xBD""apy\xB6\xB8 "); // СИНХРОННАЯ снаружи snprintf(LCD_Row_2, 21, "\xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); snprintf(LCD_Row_3, 21, "\xBE\x70\x6F\x78\x6F\xE3\x6F\xB3 %2d \1\2", Pass_Total-Pass_Nr+1); //проходов if (PP_X == 0)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/R %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/\6 %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/Ф: } } else if (Mode == Mode_aFeed) ////////////////////////////////////////////////////////// { if (Sub_Mode_aFeed == Sub_Mode_aFeed_Int) {snprintf(LCD_Row_1, 21, " \x41\x43\xA5\x48\x58\x50\x4F\x48\x48\x41\xB1 \xB3\xBD""y\xBF""p\xB8 "); // АСИНХРОННАЯ внутри snprintf(LCD_Row_2, 21, "\xBE""o\xE3""a\xC0""a %3d \xBC\xBC\x2F\xBC\xB8\xBD ", aFeed_mm); snprintf(LCD_Row_3, 21, "\xBE\x70\x6F\x78\x6F\xE3\x6F\xB3 %2d \1\2", Pass_Total-Pass_Nr+1); //проходов snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/R %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/R: } else if (Sub_Mode_aFeed == Sub_Mode_aFeed_Man) {snprintf(LCD_Row_1, 21, " \x41\x43\xA5\x48\x58\x50\x4F\x48\x48\x41\xB1 "); //АСИНХРОННАЯ snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, "\xBE""o\xE3""a\xC0""a %3d \xBC\xBC\x2F\xBC\xB8\xBD ", aFeed_mm); snprintf(LCD_Row_4, 21, " "); } else if (Sub_Mode_aFeed == Sub_Mode_aFeed_Ext) {snprintf(LCD_Row_1, 21, " \x41\x43\xA5\x48\x58\x50\x4F\x48\x48\x41\xB1 c\xBD""apy\xB6\xB8 "); // СИНХРОННАЯ снаружи snprintf(LCD_Row_2, 21, "\xBE""o\xE3""a\xC0""a %3d \xBC\xBC\x2F\xBC\xB8\xBD ", aFeed_mm); snprintf(LCD_Row_3, 21, "\xBE\x70\x6F\x78\x6F\xE3\x6F\xB3 %2d \1\2", Pass_Total-Pass_Nr+1); //проходов snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/R %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/R: } } else if (Mode == Mode_Cone_L) ////////////////////////////////////////////////////////////// { if (Sub_Mode_Cone == Sub_Mode_Cone_Int) {snprintf(LCD_Row_1, 21, " \x4B\x4F\x48\xA9\x43 < %s \xB3\xBD""y\xBF""p\xB8", Cone_Info[Cone_Step].Cone_Print); //конус < snprintf(LCD_Row_2, 21, "\xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); //подача snprintf(LCD_Row_3, 21, "\xBE\x70\x6F\x78\x6F\xE3\x6F\xB3 %2d \1\2", Pass_Total-Pass_Nr+1); // проходов осталось if (PP_X == 0)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/R %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/\6 %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/Ф: } else if (Sub_Mode_Cone == Sub_Mode_Cone_Man) {snprintf(LCD_Row_1, 21, " \x4B\x4F\x48\xA9\x43 < %s \4\3", Cone_Info[Cone_Step].Cone_Print); //конус < snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, "\xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); // подача snprintf(LCD_Row_4, 21, " "); } else if (Sub_Mode_Cone == Sub_Mode_Cone_Ext) {snprintf(LCD_Row_1, 21, " \x4B\x4F\x48\xA9\x43 < %sc\xBD""apy\xB6\xB8", Cone_Info[Cone_Step].Cone_Print); //конус < snprintf(LCD_Row_2, 21, "\xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); // подача snprintf(LCD_Row_3, 21, "\xBE\x70\x6F\x78\x6F\xE3\x6F\xB3 %2d \1\2", Pass_Total-Pass_Nr+1); // проходов осталось if (PP_X == 0)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/R %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/\6 %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/Ф: } } else if (Mode == Mode_Cone_R) ////////////////////////////////////////////////////////////// { if (Sub_Mode_Cone == Sub_Mode_Cone_Int) {snprintf(LCD_Row_1, 21, " \x4B\x4F\x48\xA9\x43 > %s \xB3\xBD""y\xBF""p\xB8", Cone_Info[Cone_Step].Cone_Print); //конус > snprintf(LCD_Row_2, 21, "\xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); //подача snprintf(LCD_Row_3, 21, "\xBE\x70\x6F\x78\x6F\xE3\x6F\xB3 %2d \1\2", Pass_Total-Pass_Nr+1); // проходов осталось if (PP_X == 0)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/R %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/\6 %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/Ф: } else if (Sub_Mode_Cone == Sub_Mode_Cone_Man) {snprintf(LCD_Row_1, 21, " \x4B\x4F\x48\xA9\x43 > %s \4\3", Cone_Info[Cone_Step].Cone_Print); //конус > snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, "\xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); // подача snprintf(LCD_Row_4, 21, " "); } else if (Sub_Mode_Cone == Sub_Mode_Cone_Ext) {snprintf(LCD_Row_1, 21, " \x4B\x4F\x48\xA9\x43 > %s c\xBD""apy\xB6\xB8", Cone_Info[Cone_Step].Cone_Print); //конус > snprintf(LCD_Row_2, 21, "\xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); // подача snprintf(LCD_Row_3, 21, "\xBE\x70\x6F\x78\x6F\xE3\x6F\xB3 %2d \1\2", Pass_Total-Pass_Nr+1); // проходов осталось if (PP_X == 0)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/R %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/\6 %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/Ф: } } else if (Mode == Mode_Reserve) ////////////////////////////////////////////////////////////// { snprintf(LCD_Row_1, 21, " \xAF\xBF""o\xBF "); // этот snprintf(LCD_Row_2, 21, " \xBE""y\xBD\xBA\xBF \xBC""e\xBD\xC6 "); // пункт меню snprintf(LCD_Row_3, 21, " \xB6\xE3\xB5\xBF \xBD\x6F\xB3\xC3\x78 \xB8\xE3\x65\xB9 "); // ждёт новых идей snprintf(LCD_Row_4, 21, "\xB8 \xBE""o\xBA""a \xC0\xBF""o \xB3 pe\xB7""ep\xB3""e"); // и пока что в резерве } else if (Mode == Mode_Sphere) ////////////////////////////////////////////////////////////// { if (Sub_Mode_Sphere == Sub_Mode_Sphere_Int) { snprintf(LCD_Row_1, 21, " "); snprintf(LCD_Row_2, 21, " He\xBF \xBF""a\xBA""o\xB4""o pe\xB6\xB8\xBC""a "); // Нет такого режима snprintf(LCD_Row_3, 21, " "); snprintf(LCD_Row_4, 21, " "); } else if (Sub_Mode_Sphere == Sub_Mode_Sphere_Man) { snprintf(LCD_Row_1, 21, " \xAC\x41\x50\x4F\x54\x4F\xAB\x4B\x41 "); snprintf(LCD_Row_2, 21, "\xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); snprintf(LCD_Row_3, 21, "\x70""e\xB7""e\xE5 %1d.%02d \xBC\xBC \4\3", Cutter_Width/100, Cutter_Width%100); //резец snprintf(LCD_Row_4, 21, "\xC1""a\xB4 \xBE""o Z %1d.%02d \xBC\xBC \1\2", Cutting_Width/100, Cutting_Width%100); //Шаг по Z } else if (Sub_Mode_Sphere == Sub_Mode_Sphere_Ext) { snprintf(LCD_Row_1, 21, " \xAC\x41\x50\x4F\x54\x4F\xAB\x4B\x41 \xBD""apy\xB6\xBD""a\xC7 "); snprintf(LCD_Row_2, 21, "\xBE""o\xE3""a\xC0""a %1d.%02d \xBC\xBC\x2F\x6F\xB2 ", Feed_mm/100, Feed_mm%100); snprintf(LCD_Row_3, 21, "\6 \xC1\x61\x70\x61 %2ld.%01ld \xBC\xBC \4\3", Sph_R_mm * 2 / 100, Sph_R_mm * 2 / 10 %10); snprintf(LCD_Row_4, 21, "\6 \xBD\x6F\xB6\xBA\xB8 %2ld.%01ld \xBC\xBC \1\2", Bar_R_mm*2/100, Bar_R_mm*2/10%10); //Bar_R_mm*2/100, Bar_R_mm*2%100) } } else if (Mode == Mode_Divider) ///////////////////////////////////////////////////////////// { long Spindle_Angle = Enc_Pos * 360000 / ENC_TICK; long Required_Angle = 360000 * (Current_Tooth - 1) / Total_Tooth; snprintf(LCD_Row_1, 21, "\x79\xB4\x6F\xBB \xC1\xBE\xB8\xBD\xE3""e\xBB\xC7 %3ld.%01ld\5", Spindle_Angle/1000, Spindle_Angle%1000/100); //угол шпинделя snprintf(LCD_Row_2, 21, "\xB3""ce\xB4""o ce\xBA\xBF""o\x70""o\xB3 \4\3%3d",Total_Tooth); //всего секторов snprintf(LCD_Row_3, 21, "\xB3\xC3\xB2\x6F\x70 ce\xBA\xBF""o\x70""a \1\2%3d", Current_Tooth); // выбор сектора snprintf(LCD_Row_4, 21, "\x79\xB4\x6F\xBB ce\xBA\xBF""o\x70""a %3ld.%01ld\5", Required_Angle/1000, Required_Angle%1000/100); //угол сектора } // Печать ошибки if (err_1_flag == true) {snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, " \xA9\xA8""OP\xAE "); // " УПОРЫ " snprintf(LCD_Row_4, 21, " \xBD\x65 \x79\x63\xBF\x61\xBD\x6F\xB3\xBB\x65\xBD\xC3 "); //" не установлены " } else if (err_2_flag == true) {snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, " C\xA9\xA8\xA8""OPT "); //" СУППОРТ " snprintf(LCD_Row_4, 21, "\xE3""o\xBB\xB6""e\xBD \xB2\xC3\xBF\xC4 \xBD\x61 \xA9\xA8""OPE"); //"должен быть на УПОРЕ" } else if (Complete_flag == true) {snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, " O\xA8""EPA\xE1\xA5\xB1 \xA4""ABEP\xAC""EHA "); //" OПEPAЦИЯ 3ABEPШEHA " snprintf(LCD_Row_4, 21, " "); } lcd.setCursor(0, 0); lcd.print(LCD_Row_1); //lcd.print(" "); lcd.setCursor(0, 1); lcd.print(LCD_Row_2); //lcd.print(LCD_Row_2); lcd.print(Enc_Pos / 2); //lcd.print(" "); lcd.setCursor(0, 2); lcd.print(LCD_Row_3); //lcd.print(" "); lcd.setCursor(0, 3); lcd.print(LCD_Row_4); //lcd.print(" "); }