////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ***** Print ***** ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void Print() { if (Mode == Mode_Thread) ////////////////////////////////////////////////////////// { if (Sub_Mode_Thread == Sub_Mode_Thread_Int) snprintf(LCD_Row_1, 21, " THREAD internal "); //РЕЗЬБА внутренняя else if (Sub_Mode_Thread == Sub_Mode_Thread_Man) snprintf(LCD_Row_1, 21, " THREAD "); //РЕЗЬБА else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_1, 21, " THREAD external "); //РЕЗЬБА наружная int lenTP = strlen(Thread_Info[Thread_Step].Thread_Print); if (Sub_Mode_Thread == Sub_Mode_Thread_Int && lenTP == 4 ) snprintf(LCD_Row_2, 21, "step %s mm ", Thread_Info[Thread_Step].Thread_Print); // шаг else if (Sub_Mode_Thread == Sub_Mode_Thread_Int && lenTP == 3 ) snprintf(LCD_Row_2, 21, "step %s tpi ", Thread_Info[Thread_Step].Thread_Print); // шаг else if (Sub_Mode_Thread == Sub_Mode_Thread_Man && lenTP == 4 ) snprintf(LCD_Row_2, 21, "step %s mm \4\3", Thread_Info[Thread_Step].Thread_Print); // шаг в мм else if (Sub_Mode_Thread == Sub_Mode_Thread_Man && lenTP == 3 ) snprintf(LCD_Row_2, 21, "step %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, "step %s mm ", Thread_Info[Thread_Step].Thread_Print); // шаг else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext && lenTP == 3 ) snprintf(LCD_Row_2, 21, "step %s tpi ", Thread_Info[Thread_Step].Thread_Print); // шаг if (Sub_Mode_Thread == Sub_Mode_Thread_Int) snprintf(LCD_Row_3, 21, "total passes %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: to %s rpm ",Thread_Info[Thread_Step].Limit_Print); // максимальные обороты else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_3, 21, "total passes %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, "finishing %2d \1\2 ",PASS_FINISH + Pass_Fin); // из них чистовых else if (Sub_Mode_Thread == Sub_Mode_Thread_Man) snprintf(LCD_Row_4, 21, " %5ld rev ", Rev_Count); // 0 витков else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_4, 21, "finishing %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, "SYNCHRONOUS internal"); // СИНХРОННАЯ внутри snprintf(LCD_Row_2, 21, "feed %1d.%02d mm/rev ", Feed_mm/100, Feed_mm%100); snprintf(LCD_Row_3, 21, "passes %2d \1\2", Pass_Total-Pass_Nr+1); //проходов if (PP_X == 0)snprintf(LCD_Row_4, 21, "remove/R %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "remove/\6 %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/Ф: } else if (Sub_Mode_Feed == Sub_Mode_Feed_Man) {snprintf(LCD_Row_1, 21, " SYNCHRONOUS "); // СИНХРОННАЯ snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, "feed %1d.%02d mm/rev ", Feed_mm/100, Feed_mm%100); snprintf(LCD_Row_4, 21, " %5ld rev ", Rev_Count_F); // 0 витков } else if (Sub_Mode_Feed == Sub_Mode_Feed_Ext) {snprintf(LCD_Row_1, 21, "SYNCHRONOUS external"); // СИНХРОННАЯ снаружи snprintf(LCD_Row_2, 21, "feed %1d.%02d mm/rev ", Feed_mm/100, Feed_mm%100); snprintf(LCD_Row_3, 21, "passes %2d \1\2", Pass_Total-Pass_Nr+1); //проходов if (PP_X == 0)snprintf(LCD_Row_4, 21, "remove/R %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "remove/\6 %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/Ф: } } else if (Mode == Mode_aFeed) ////////////////////////////////////////////////////////// { if (Sub_Mode_aFeed == Sub_Mode_aFeed_Int) {snprintf(LCD_Row_1, 21, "ASYNCHRONOUS interna"); // АСИНХРОННАЯ внутри snprintf(LCD_Row_2, 21, "feed %3d mm/min ", aFeed_mm); snprintf(LCD_Row_3, 21, "passes %2d \1\2", Pass_Total-Pass_Nr+1); //проходов snprintf(LCD_Row_4, 21, "remove/R %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/R: } else if (Sub_Mode_aFeed == Sub_Mode_aFeed_Man) {snprintf(LCD_Row_1, 21, " ASYNCHRONOUS "); //АСИНХРОННАЯ snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, "feed %3d mm/min ", aFeed_mm); snprintf(LCD_Row_4, 21, " "); } else if (Sub_Mode_aFeed == Sub_Mode_aFeed_Ext) {snprintf(LCD_Row_1, 21, "ASYNCHRONOUS externa"); // аСИНХРОННАЯ снаружи snprintf(LCD_Row_2, 21, "feed %3d mm/min ", aFeed_mm); snprintf(LCD_Row_3, 21, "passes %2d \1\2", Pass_Total-Pass_Nr+1); //проходов snprintf(LCD_Row_4, 21, "remove/R %1d.%02dmm \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, "CONE < %s internal ", Cone_Info[Cone_Step].Cone_Print); //конус < snprintf(LCD_Row_2, 21, "feed %1d.%02d mm/rev ", Feed_mm/100, Feed_mm%100); //подача snprintf(LCD_Row_3, 21, "steps %2d \1\2 ", Pass_Total-Pass_Nr+1); // проходов осталось if (PP_X == 0)snprintf(LCD_Row_4, 21, "remove/R %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "remove/\6 %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/Ф: } else if (Sub_Mode_Cone == Sub_Mode_Cone_Man) {snprintf(LCD_Row_1, 21, " CONE < %s \4\3", Cone_Info[Cone_Step].Cone_Print); //конус < snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, "feed %1d.%02d mm/rev ", 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, "CONE < %s external ", Cone_Info[Cone_Step].Cone_Print); //конус < snprintf(LCD_Row_2, 21, "feed %1d.%02d mm/rev ", Feed_mm/100, Feed_mm%100); // подача snprintf(LCD_Row_3, 21, "steps %2d \1\2 ", Pass_Total-Pass_Nr+1); // проходов осталось if (PP_X == 0)snprintf(LCD_Row_4, 21, "remove/R %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "remove/\6 %1d.%02dmm \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, "CONE > %s internal ", Cone_Info[Cone_Step].Cone_Print); //конус > snprintf(LCD_Row_2, 21, "feed %1d.%02d mm/rev ", Feed_mm/100, Feed_mm%100); //подача snprintf(LCD_Row_3, 21, "steps %2d \1\2 ", Pass_Total-Pass_Nr+1); // проходов осталось if (PP_X == 0)snprintf(LCD_Row_4, 21, "remove/R %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "remove/\6 %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/Ф: } else if (Sub_Mode_Cone == Sub_Mode_Cone_Man) {snprintf(LCD_Row_1, 21, " CONE > %s \4\3", Cone_Info[Cone_Step].Cone_Print); //конус > snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, "feed %1d.%02d mm/rev ", 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, "CONE > %s external ", Cone_Info[Cone_Step].Cone_Print); //конус > snprintf(LCD_Row_2, 21, "feed %1d.%02d mm/rev ", Feed_mm/100, Feed_mm%100); // подача snprintf(LCD_Row_3, 21, "steps %2d \1\2 ", Pass_Total-Pass_Nr+1); // проходов осталось if (PP_X == 0)snprintf(LCD_Row_4, 21, "remove/R %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/R: if (PP_X == 1)snprintf(LCD_Row_4, 21, "remove/\6 %1d.%02dmm \4\3", Ap/100, Ap%100); // съём/Ф: } } else if (Mode == Mode_Reserve) ////////////////////////////////////////////////////////////// { snprintf(LCD_Row_1, 21, "----//////////------"); // этот snprintf(LCD_Row_2, 21, "-----0------0-------"); // пункт меню snprintf(LCD_Row_3, 21, "---------/----------"); // ждёт новых идей snprintf(LCD_Row_4, 21, "-----+______+-------"); // и пока что в резерве } else if (Mode == Mode_Sphere) ////////////////////////////////////////////////////////////// { if (Sub_Mode_Sphere == Sub_Mode_Sphere_Int) { snprintf(LCD_Row_1, 21, " "); snprintf(LCD_Row_2, 21, " incorrect mode "); // Нет такого режима snprintf(LCD_Row_3, 21, " "); snprintf(LCD_Row_4, 21, " "); } else if (Sub_Mode_Sphere == Sub_Mode_Sphere_Man) { snprintf(LCD_Row_1, 21, " SPHERE "); snprintf(LCD_Row_2, 21, "feed %1d.%02d rpm/rev ", Feed_mm/100, Feed_mm%100); snprintf(LCD_Row_3, 21, "cuter %1d.%02d mm \4\3", Cutter_Width/100, Cutter_Width%100); //резец snprintf(LCD_Row_4, 21, "step Z %1d.%02d mm \1\2", Cutting_Width/100, Cutting_Width%100); //Шаг по Z } else if (Sub_Mode_Sphere == Sub_Mode_Sphere_Ext) { snprintf(LCD_Row_1, 21, " SPHERE External "); snprintf(LCD_Row_2, 21, "feed %1d.%02d mm/rev ", Feed_mm/100, Feed_mm%100); snprintf(LCD_Row_3, 21, "\6 sphere %2ld.%01ld mm \4\3", Sph_R_mm * 2 / 100, Sph_R_mm * 2 / 10 %10); snprintf(LCD_Row_4, 21, "\6 stem %2ld.%01ld mm \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, "Spindle Angle %3ld.%01ld\5", Spindle_Angle/1000, Spindle_Angle%1000/100); //угол шпинделя snprintf(LCD_Row_2, 21, "all sectors \4\3%3d",Total_Tooth); //всего секторов snprintf(LCD_Row_3, 21, "select sector \1\2%3d", Current_Tooth); // выбор сектора snprintf(LCD_Row_4, 21, "sector angle %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, " STOPS "); // " УПОРЫ " snprintf(LCD_Row_4, 21, " is NOT sets "); //" не установлены " } else if (err_2_flag == true) {snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, " THE CALIPER "); //" СУППОРТ " snprintf(LCD_Row_4, 21, " MUST BE ON THE STOP"); //"должен быть на УПОРЕ" } else if (Complete_flag == true) {snprintf(LCD_Row_2, 21, " "); snprintf(LCD_Row_3, 21, " OPERATION COMPLETED"); //" 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(" "); }