Bläddra i källkod

selftest tests filament sensor, selftest messages have language variants

PavelSindler 6 år sedan
förälder
incheckning
17d9bb205a

+ 4 - 0
Firmware/Marlin.h

@@ -395,6 +395,10 @@ extern void print_world_coordinates();
 extern void print_physical_coordinates();
 extern void print_mesh_bed_leveling_table();
 
+#ifdef PAT9125
+extern void fsensor_init();
+#endif //PAT9125
+
 #ifdef HOST_KEEPALIVE_FEATURE
 
 // States for managing Marlin and host communication

+ 28 - 19
Firmware/Marlin_main.cpp

@@ -917,28 +917,12 @@ void setup()
 #endif //TMC2130
 
 #ifdef PAT9125
-	int pat9125 = pat9125_init(PAT9125_XRES, PAT9125_YRES);
-    printf_P(PSTR("PAT9125_init:%d\n"), pat9125);
-	uint8_t fsensor = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR);
-	if (!pat9125)
-	{
-		fsensor = 0; //disable sensor
-		fsensor_not_responding = true;
-	}
-    puts_P(PSTR("FSensor "));
-	if (fsensor)
-	{
-		puts_P(PSTR("ENABLED\n"));
-		fsensor_enable();
-	}
-	else
-	{
-	    puts_P(PSTR("DISABLED\n"));
-		fsensor_disable();
-	}
+
+	fsensor_init();
 
 #endif //PAT9125
 
+
 	st_init();    // Initialize stepper, this enables interrupts!
     
 	setup_photpin();
@@ -1207,6 +1191,31 @@ void setup()
   wdt_enable(WDTO_4S);
 }
 
+#ifdef PAT9125
+void fsensor_init() {
+	int pat9125 = pat9125_init(PAT9125_XRES, PAT9125_YRES);
+	printf_P(PSTR("PAT9125_init:%d\n"), pat9125);
+	uint8_t fsensor = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR);
+	if (!pat9125)
+	{
+		fsensor = 0; //disable sensor
+		fsensor_not_responding = true;
+	}
+	puts_P(PSTR("FSensor "));
+	if (fsensor)
+	{
+		puts_P(PSTR("ENABLED\n"));
+		fsensor_enable();
+	}
+	else
+	{
+		puts_P(PSTR("DISABLED\n"));
+		fsensor_disable();
+	}
+}
+
+#endif //PAT9125
+
 void trace();
 
 #define CHUNK_SIZE 64 // bytes

+ 35 - 0
Firmware/language_all.cpp

@@ -626,6 +626,13 @@ const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM] PROGMEM = {
 	MSG_FILAMENT_LOADING_T3_CZ
 };
 
+const char MSG_FILAMENT_SENSOR_EN[] PROGMEM = "Filament sensor";
+const char MSG_FILAMENT_SENSOR_CZ[] PROGMEM = "Senzor filamentu";
+const char * const MSG_FILAMENT_SENSOR_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_FILAMENT_SENSOR_EN,
+	MSG_FILAMENT_SENSOR_CZ
+};
+
 const char MSG_FILE_CNT_EN[] PROGMEM = "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100.";
 const char MSG_FILE_CNT_CZ[] PROGMEM = "Nektere soubory nebudou setrideny. Maximalni pocet souboru pro setrideni je 100.";
 const char * const MSG_FILE_CNT_LANG_TABLE[LANG_NUM] PROGMEM = {
@@ -1579,6 +1586,13 @@ const char * const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = {
 	MSG_SELFTEST_CHECK_ENDSTOPS_CZ
 };
 
+const char MSG_SELFTEST_CHECK_FSENSOR_EN[] PROGMEM = "Checking sensors ";
+const char MSG_SELFTEST_CHECK_FSENSOR_CZ[] PROGMEM = "Kontrola senzoru";
+const char * const MSG_SELFTEST_CHECK_FSENSOR_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_SELFTEST_CHECK_FSENSOR_EN,
+	MSG_SELFTEST_CHECK_FSENSOR_CZ
+};
+
 const char MSG_SELFTEST_CHECK_HOTEND_EN[] PROGMEM = "Checking hotend  ";
 const char MSG_SELFTEST_CHECK_HOTEND_CZ[] PROGMEM = "Kontrola hotend  ";
 const char * const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM] PROGMEM = {
@@ -1641,6 +1655,13 @@ const char * const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM] PROGMEM = {
 	MSG_SELFTEST_EXTRUDER_FAN_CZ
 };
 
+const char MSG_SELFTEST_EXTRUDER_FAN_SPEED_EN[] PROGMEM = "Extruder fan:";
+const char MSG_SELFTEST_EXTRUDER_FAN_SPEED_CZ[] PROGMEM = "Levy vent.:";
+const char * const MSG_SELFTEST_EXTRUDER_FAN_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_SELFTEST_EXTRUDER_FAN_SPEED_EN,
+	MSG_SELFTEST_EXTRUDER_FAN_SPEED_CZ
+};
+
 const char MSG_SELFTEST_FAILED_EN[] PROGMEM = "Selftest failed  ";
 const char MSG_SELFTEST_FAILED_CZ[] PROGMEM = "Selftest selhal  ";
 const char * const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = {
@@ -1676,6 +1697,13 @@ const char * const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM] PROGMEM = {
 	MSG_SELFTEST_FAN_YES_CZ
 };
 
+const char MSG_SELFTEST_FILAMENT_SENSOR_EN[] PROGMEM = "Filament sensor:";
+const char MSG_SELFTEST_FILAMENT_SENSOR_CZ[] PROGMEM = "Senzor filamentu:";
+const char * const MSG_SELFTEST_FILAMENT_SENSOR_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_SELFTEST_FILAMENT_SENSOR_EN,
+	MSG_SELFTEST_FILAMENT_SENSOR_CZ
+};
+
 const char MSG_SELFTEST_HEATERTHERMISTOR_EN[] PROGMEM = "Heater/Thermistor";
 const char * const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[1] PROGMEM = {
 	MSG_SELFTEST_HEATERTHERMISTOR_EN
@@ -1705,6 +1733,13 @@ const char * const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM] PROGMEM = {
 	MSG_SELFTEST_PLEASECHECK_CZ
 };
 
+const char MSG_SELFTEST_PRINT_FAN_SPEED_EN[] PROGMEM = "Print fan:";
+const char MSG_SELFTEST_PRINT_FAN_SPEED_CZ[] PROGMEM = "Tiskovy vent.:";
+const char * const MSG_SELFTEST_PRINT_FAN_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_SELFTEST_PRINT_FAN_SPEED_EN,
+	MSG_SELFTEST_PRINT_FAN_SPEED_CZ
+};
+
 const char MSG_SELFTEST_START_EN[] PROGMEM = "Self test start  ";
 const char * const MSG_SELFTEST_START_LANG_TABLE[1] PROGMEM = {
 	MSG_SELFTEST_START_EN

+ 10 - 0
Firmware/language_all.h

@@ -224,6 +224,8 @@ extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM];
 #define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T2_LANG_TABLE)
 extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM];
 #define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T3_LANG_TABLE)
+extern const char* const MSG_FILAMENT_SENSOR_LANG_TABLE[LANG_NUM];
+#define MSG_FILAMENT_SENSOR LANG_TABLE_SELECT(MSG_FILAMENT_SENSOR_LANG_TABLE)
 extern const char* const MSG_FILE_CNT_LANG_TABLE[LANG_NUM];
 #define MSG_FILE_CNT LANG_TABLE_SELECT(MSG_FILE_CNT_LANG_TABLE)
 extern const char* const MSG_FILE_INCOMPLETE_LANG_TABLE[LANG_NUM];
@@ -536,6 +538,8 @@ extern const char* const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM];
 #define MSG_SELFTEST_CHECK_BED LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_BED_LANG_TABLE)
 extern const char* const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM];
 #define MSG_SELFTEST_CHECK_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE)
+extern const char* const MSG_SELFTEST_CHECK_FSENSOR_LANG_TABLE[LANG_NUM];
+#define MSG_SELFTEST_CHECK_FSENSOR LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_FSENSOR_LANG_TABLE)
 extern const char* const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM];
 #define MSG_SELFTEST_CHECK_HOTEND LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE)
 extern const char* const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM];
@@ -556,6 +560,8 @@ extern const char* const MSG_SELFTEST_ERROR_LANG_TABLE[1];
 #define MSG_SELFTEST_ERROR LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_ERROR_LANG_TABLE, 0)
 extern const char* const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM];
 #define MSG_SELFTEST_EXTRUDER_FAN LANG_TABLE_SELECT(MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE)
+extern const char* const MSG_SELFTEST_EXTRUDER_FAN_SPEED_LANG_TABLE[LANG_NUM];
+#define MSG_SELFTEST_EXTRUDER_FAN_SPEED LANG_TABLE_SELECT(MSG_SELFTEST_EXTRUDER_FAN_SPEED_LANG_TABLE)
 extern const char* const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM];
 #define MSG_SELFTEST_FAILED LANG_TABLE_SELECT(MSG_SELFTEST_FAILED_LANG_TABLE)
 extern const char* const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM];
@@ -566,6 +572,8 @@ extern const char* const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM];
 #define MSG_SELFTEST_FAN_NO LANG_TABLE_SELECT(MSG_SELFTEST_FAN_NO_LANG_TABLE)
 extern const char* const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM];
 #define MSG_SELFTEST_FAN_YES LANG_TABLE_SELECT(MSG_SELFTEST_FAN_YES_LANG_TABLE)
+extern const char* const MSG_SELFTEST_FILAMENT_SENSOR_LANG_TABLE[LANG_NUM];
+#define MSG_SELFTEST_FILAMENT_SENSOR LANG_TABLE_SELECT(MSG_SELFTEST_FILAMENT_SENSOR_LANG_TABLE)
 extern const char* const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[1];
 #define MSG_SELFTEST_HEATERTHERMISTOR LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE, 0)
 extern const char* const MSG_SELFTEST_MOTOR_LANG_TABLE[1];
@@ -576,6 +584,8 @@ extern const char* const MSG_SELFTEST_OK_LANG_TABLE[1];
 #define MSG_SELFTEST_OK LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_OK_LANG_TABLE, 0)
 extern const char* const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM];
 #define MSG_SELFTEST_PLEASECHECK LANG_TABLE_SELECT(MSG_SELFTEST_PLEASECHECK_LANG_TABLE)
+extern const char* const MSG_SELFTEST_PRINT_FAN_SPEED_LANG_TABLE[LANG_NUM];
+#define MSG_SELFTEST_PRINT_FAN_SPEED LANG_TABLE_SELECT(MSG_SELFTEST_PRINT_FAN_SPEED_LANG_TABLE)
 extern const char* const MSG_SELFTEST_START_LANG_TABLE[1];
 #define MSG_SELFTEST_START LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_START_LANG_TABLE, 0)
 extern const char* const MSG_SELFTEST_SWAPPED_LANG_TABLE[LANG_NUM];

+ 5 - 0
Firmware/language_cz.h

@@ -204,6 +204,11 @@
 #define MSG_SELFTEST_CHECK_ALLCORRECT		"Vse OK           "
 #define MSG_SELFTEST						"Selftest         "
 #define MSG_SELFTEST_FAILED					"Selftest selhal  "
+#define MSG_SELFTEST_EXTRUDER_FAN_SPEED		"Levy vent.:"
+#define MSG_SELFTEST_PRINT_FAN_SPEED		"Tiskovy vent.:"
+#define MSG_SELFTEST_FILAMENT_SENSOR		"Senzor filamentu:"
+#define MSG_SELFTEST_CHECK_FSENSOR			"Kontrola senzoru"
+#define MSG_FILAMENT_SENSOR					"Senzor filamentu"
 
 #define MSG_STATISTICS						"Statistika  "
 #define MSG_USB_PRINTING					"Tisk z USB  "

+ 5 - 0
Firmware/language_en.h

@@ -175,6 +175,9 @@
 #define MSG_SELFTEST_ENDSTOP				"Endstop"
 #define MSG_SELFTEST_FANS					"Front/left fans"
 #define MSG_SELFTEST_SWAPPED				"Swapped"
+#define(length=18) MSG_SELFTEST_EXTRUDER_FAN_SPEED	"Extruder fan:"
+#define(length=18) MSG_SELFTEST_PRINT_FAN_SPEED		"Print fan:"
+#define(length=18) MSG_SELFTEST_FILAMENT_SENSOR		"Filament sensor:"
 
 #define(length=20,lines=1) MSG_SELFTEST_ENDSTOP_NOTHIT			"Endstop not hit"
 #define MSG_SELFTEST_OK						"Self test OK"
@@ -197,6 +200,8 @@
 #define(length=20) MSG_SELFTEST_CHECK_Y				"Checking Y axis  "
 #define(length=20) MSG_SELFTEST_CHECK_Z				"Checking Z axis  "
 #define(length=20) MSG_SELFTEST_CHECK_BED			"Checking bed     "
+#define(length=20) MSG_SELFTEST_CHECK_FSENSOR		"Checking sensors "
+#define(length=20) MSG_FILAMENT_SENSOR				"Filament sensor"
 #define(length=20) MSG_SELFTEST_CHECK_ALLCORRECT	"All correct      "
 #define MSG_SELFTEST						"Selftest         "
 #define(length=20) MSG_SELFTEST_FAILED		"Selftest failed  "

+ 50 - 12
Firmware/ultralcd.cpp

@@ -5558,16 +5558,27 @@ static bool lcd_selftest()
 
 	if (_result)
 	{
-		_progress = lcd_selftest_screen(7, _progress, 3, true, 2000);
+		_progress = lcd_selftest_screen(7, _progress, 3, true, 2000); //check bed
 		_result = lcd_selfcheck_check_heater(true);
 	}
 	if (_result)
 	{
-		_progress = lcd_selftest_screen(8, _progress, 3, true, 5000);
+		_progress = lcd_selftest_screen(8, _progress, 3, true, 2000); //bed ok
+#ifdef PAT9125
+		_progress = lcd_selftest_screen(9, _progress, 3, true, 2000); //check filaments sensor
+		_result = lcd_selftest_fsensor();
+#endif // PAT9125
+	}
+	if (_result)
+	{
+#ifdef PAT9125
+		_progress = lcd_selftest_screen(10, _progress, 3, true, 2000); //fil sensor OK
+#endif // PAT9125
+		_progress = lcd_selftest_screen(11, _progress, 3, true, 5000); //all correct
 	}
 	else
 	{
-		_progress = lcd_selftest_screen(9, _progress, 3, true, 5000);
+		_progress = lcd_selftest_screen(12, _progress, 3, true, 5000);
 	}
 	lcd_reset_alert_level();
 	enquecommand_P(PSTR("M84"));
@@ -6112,6 +6123,12 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char *
 		lcd.setCursor(18, 3);
 		lcd.print(_error_1);
 		break;
+	case 11: 
+		lcd.setCursor(0, 2);
+		lcd_printPGM(MSG_FILAMENT_SENSOR);
+		lcd.setCursor(0, 3);
+		lcd_printPGM(MSG_SELFTEST_WIRINGERROR);
+		break;
 	}
 
 	delay(1000);
@@ -6128,6 +6145,18 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char *
 
 }
 
+#ifdef PAT9125
+static bool lcd_selftest_fsensor() {
+	fsensor_init();
+	if (fsensor_not_responding)
+	{
+		const char *_err;
+		lcd_selftest_error(11, _err, _err);
+	}
+	return(!fsensor_not_responding);
+}
+#endif //PAT9125
+
 static bool lcd_selftest_fan_dialog(int _fan)
 {
 	bool _result = true;
@@ -6152,10 +6181,10 @@ static bool lcd_selftest_fan_dialog(int _fan)
 		fanSpeed = 150;				//print fan
 		for (uint8_t i = 0; i < 5; i++) {
 			delay_keep_alive(1000);
-			lcd.setCursor(14, 3);
+			lcd.setCursor(18, 3);
 			lcd.print("-");
 			delay_keep_alive(1000);
-			lcd.setCursor(14, 3);
+			lcd.setCursor(18, 3);
 			lcd.print("|");
 		}
 		fanSpeed = 0;
@@ -6206,22 +6235,31 @@ static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bo
 	if (_step == 5) lcd_printPGM(MSG_SELFTEST_CHECK_Y);
 	if (_step == 6) lcd_printPGM(MSG_SELFTEST_CHECK_Z);
 	if (_step == 7) lcd_printPGM(MSG_SELFTEST_CHECK_BED);
-	if (_step == 8) lcd_printPGM(MSG_SELFTEST_CHECK_ALLCORRECT);
-	if (_step == 9) lcd_printPGM(MSG_SELFTEST_FAILED);
+	if (_step == 8) lcd_printPGM(MSG_SELFTEST_CHECK_BED);
+	if (_step == 9) lcd_printPGM(MSG_SELFTEST_CHECK_FSENSOR);
+	if (_step == 10) lcd_printPGM(MSG_SELFTEST_CHECK_FSENSOR);
+	if (_step == 11) lcd_printPGM(MSG_SELFTEST_CHECK_ALLCORRECT);
+	if (_step == 12) lcd_printPGM(MSG_SELFTEST_FAILED);
 
 	lcd.setCursor(0, 1);
 	lcd.print("--------------------");
 	if ((_step >= -1) && (_step <= 1))
 	{
 		//SERIAL_ECHOLNPGM("Fan test");
-		lcd_print_at_PGM(0, 2, PSTR("Extruder fan:"));
-		lcd.setCursor(14, 2);
+		lcd_print_at_PGM(0, 2, MSG_SELFTEST_EXTRUDER_FAN_SPEED);
+		lcd.setCursor(18, 2);
 		(_step < 0) ? lcd.print(_indicator) : lcd.print("OK");
-		lcd_print_at_PGM(0, 3, PSTR("Print fan:"));
-		lcd.setCursor(14, 3);
+		lcd_print_at_PGM(0, 3, MSG_SELFTEST_PRINT_FAN_SPEED);
+		lcd.setCursor(18, 3);
 		(_step < 1) ? lcd.print(_indicator) : lcd.print("OK");
 	}
-	else if (_step != 9)
+	else if (_step >= 9 && _step <= 10)
+	{
+		lcd_print_at_PGM(0, 2, MSG_SELFTEST_FILAMENT_SENSOR);
+		lcd.setCursor(18, 2);
+		(_step == 9) ? lcd.print(_indicator) : lcd.print("OK");
+	}
+	else if (_step < 9)
 	{
 		//SERIAL_ECHOLNPGM("Other tests");
 		_step_block = 3;

+ 1 - 0
Firmware/ultralcd.h

@@ -47,6 +47,7 @@ void lcd_mylang();
   static int  lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay);
   static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name, const char *_indicator);
   static bool lcd_selftest_fan_dialog(int _fan);
+  static bool lcd_selftest_fsensor();
   static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2);
   void lcd_menu_statistics();
   static bool lcd_selfcheck_pulleys(int axis);