|
@@ -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;
|
|
|
}
|
|
|
|