Ce programme est en cours de développement, la partie commande manuelle des moteurs X, Y et Z fonctionne ainsi que l'analyse (à l'écran) du fichier gerber. La liaison USB fonctionne. Les lignes gerber décodées peuvent être transmises à la carte Mega2560 par l'USB, mais les "apertures" (forme des pastilles) ne sont pas encore décodées par cette dernière afin d'ajuster la focalisation et la vitesse du laser.
Toutefois comme vous pouvez le voir, le programme en Qt interprète correctement lesdites apertures. Ce qui va permettre de réaliser des circuits en CMS comme sur l'exemple ci-dessus.
Concernant le perçage des trous : je prévois de flasher des pastilles avec réservation d'un trou au centre pour guider le foret afin de pouvoir effectuer manuellement les perçages (sans cela le centrage manuel est quasiment impossible).
J'ai dores et déjà écrit une fonction qui déplace l'outil suivant un cercle, et ça fonctionne très bien, avec une jolie musique de la part des moteurs pas à pas en prime. Vous pouvez trouver cette fonction dans le firmware en C++ de l'ATmega, mais je vous la recopie ici :
void pastille()
{
int16_t centre_x, centre_y;
float x, y;
uint8_t n;
centre_x = x0;
centre_y = x0;
for (n=1; n<=12; n++)
{
x = 30.0 * cos(2.0 * M_PI * n / 12);
y = 30.0 * sin(2.0 * M_PI * n / 12);
x1 = centre_x + (int16_t) round(x);
y1 = centre_y + (int16_t) round(y);
x0 = centre_x;
y0 = centre_y;
lcd_goto_LC(0,12);
lcd_aff_nb (n, 2, 0);
affi_xy();
affi_x1y1();
goto_xy('T'); // trace la pastille
while (goto_en_cours == 1) { lecture_fins_de_course(); test_fin_goto(); }
}
}
Le principe consiste à tracer douze segments dont la disposition en cercle est calculée à la volée par la fonction paramétrique du cercle, à savoir :
x = cos(alpha)
y = sin(alpha)
L'angle 'alpha', fonction du temps (= omega * t) étant matérialisé ici par la succession des pas (n) de la boucle. Le temps en question est celui pris par le tracé du segment. Il est géré par interruption logicielle (Timer3 et Timer4 de l'ATmega2560 ).