Browse Source

optimisation des déplacements

Jackbot 2 years ago
parent
commit
2870d576dc
1 changed files with 20 additions and 14 deletions
  1. 20 14
      bmp2gcode.cc

+ 20 - 14
bmp2gcode.cc

@@ -20,7 +20,7 @@ class BMP2Gcode
 		unsigned int consecutif(unsigned int indice, unsigned int min, unsigned int max, unsigned int puissance, int sens);
 
 		unsigned int BMP_largeur, BMP_hauteur, BMP_offset, BMP_profondeur, BMP_taille;
-		double conf_taille_laser, conf_puissance_min, conf_puissance_max, conf_vitesse, conf_taille_image;
+		double conf_taille_laser, conf_puissance_min, conf_puissance_max, conf_vitesse, conf_vitesse_max, conf_taille_image;
 		std::vector<unsigned int> tab_donnees;
 		std::string nom_fichier_bmp;
 };
@@ -32,7 +32,7 @@ BMP2Gcode::BMP2Gcode()
 void BMP2Gcode::traitement(char* nom_fichier)
 {
 	nom_fichier_bmp = nom_fichier;
-	
+
 	if(entete() == 0)
 	{
 		if(donnees() == 0)
@@ -190,7 +190,7 @@ int BMP2Gcode::sortie()
 
 	std::cout << "***SORTIE***" << std::endl;
 	std::cout << "largeur = " << BMP_largeur * taille_pixel << " mm" << std::endl;
-	std::cout << "hauteur = " << BMP_hauteur * conf_taille_image/BMP_largeur << " mm" << std::endl;
+	std::cout << "hauteur = " << BMP_hauteur * taille_pixel << " mm" << std::endl;
 	std::cout << "taille pixel = " << taille_pixel << " mm" << std::endl;
 
 	//On passe en mode relatif
@@ -208,14 +208,8 @@ int BMP2Gcode::sortie()
 		//pour graver une ligne on fera des aller-retour tant que :
 		do
 		{
-			fichier_sortie << ";colonne numéro : " << colonne << std::endl;
-			fichier_sortie << ";ligne numéro : " << ligne << std::endl;
-			fichier_sortie << ";sens : " << sens << std::endl;
-
 			int indice = ligne * BMP_largeur + colonne; 
-			
-			fichier_sortie << ";indice : " << indice << std::endl;
-			
+
 			unsigned int puissance = 0, indice_min = 0, indice_max = 0, nbr = 1;
 			puissance = conversion(255 - tab_donnees[indice], conf_puissance_min, conf_puissance_max);
 			indice_min = ligne * BMP_largeur;
@@ -224,12 +218,22 @@ int BMP2Gcode::sortie()
 
 			//on détermine le nombre de pixels successifs pour lesquels la puissance du laser sera la même
 			nbr = consecutif(indice, indice_min, indice_max, puissance, sens);
+			
+			//pour accélérer la gravure, on va augmenter la vitesse au dessus des blancs
+			//c'est à dire quand la puissances du laser == 0
 
+			if(puissance == 0)
+			{fichier_sortie << "G1 F" << conf_vitesse_max << std::endl;}
+			
 			fichier_sortie << "M106 P1 S" << puissance << std::endl;
 
 			//on se déplace selon le sens
 			fichier_sortie << "G1 X" << sens * taille_pixel * nbr << std::endl;
 			colonne += sens * nbr;
+			
+			//ne pas oublier de rétablir la vitesse après les blancs
+			if(puissance == 0)
+			{fichier_sortie << "G1 F" << conf_vitesse << std::endl;}
 		}
 		while(colonne < BMP_largeur && colonne >= 0);
 		
@@ -248,8 +252,6 @@ int BMP2Gcode::sortie()
 			alors on repart dans l'autre sens en prennant soin de décaler la colonne
 			et on recommence*/
 			nbr_passage ++;
-			fichier_sortie << ";passage numéro : " << nbr_passage << std::endl;
-			fichier_sortie << ";colonne numéro : " << colonne << std::endl;
 		}
 		else
 		{
@@ -257,8 +259,6 @@ int BMP2Gcode::sortie()
 			alors on change de ligne et on recommence*/
 			ligne ++;
 			nbr_passage = 1;
-			fichier_sortie << ";changement de ligne : " << ligne << std::endl;
-			fichier_sortie << ";colonne numéro : " << colonne << std::endl;
 		}
 		
 		/*Dans les 2 cas il est nécessaire de se déplacer sur l'axe Y
@@ -327,6 +327,7 @@ void BMP2Gcode::fichier_conf()
 		fichier_conf << "puissance_min 0" << std::endl;
 		fichier_conf << "puissance_max 255" << std::endl;
 		fichier_conf << "vitesse(mm/min) 1300" << std::endl;
+		fichier_conf << "vitesse_max(mm/min) 10000" << std::endl;
 		fichier_conf << "taille_image_x(mm) 150" << std::endl;
 
 		std::cout << "*************************************************" <<std::endl;
@@ -340,6 +341,7 @@ void BMP2Gcode::fichier_conf()
 		conf_puissance_min = 0;
 		conf_puissance_max = 255;
 		conf_vitesse = 1300;
+		conf_vitesse_max = 10000;
 		conf_taille_image = 150;
 	}
 	else
@@ -361,6 +363,9 @@ void BMP2Gcode::fichier_conf()
 			if(clef == "vitesse(mm/min)")
 			{conf_vitesse = valeur;}
 
+			if(clef == "vitesse_max(mm/min)")
+			{conf_vitesse_max = valeur;}
+
 			if(clef == "taille_image_x(mm)")
 			{conf_taille_image = valeur;}
 		}
@@ -370,6 +375,7 @@ void BMP2Gcode::fichier_conf()
 		std::cout << "puissance_min = " << conf_puissance_min << " PWM 0-255" << std::endl;
 		std::cout << "puissance_max = " << conf_puissance_max << " PWM 0-255" << std::endl;
 		std::cout << "vitesse = " << conf_vitesse << " mm/min" << std::endl;
+		std::cout << "vitesse_max = " << conf_vitesse_max << " mm/min" << std::endl;
 		std::cout << "taille_image = " << conf_taille_image << " mm" << std::endl;
 	}