Bonjour.
Dans le petit programme suivant je n'arrive pas à trouver une solution,pour éviter l’erreur,normalement c'est pour faire le test pour savoir dans quel sens je dois faire tourner le moteur,si dans le tableau x[i+1]-x[i] si la valeur est positive le moteur tourne av si négative moteur tourne arr.C'est le +1 qui pose problème.
int []x={12,51,21,45,45,78,56}; void setup(){ size(500,500); } void draw(){ for(int i=0;i<7;i++){ int a=x[i+1]-x[i]; print(a," "); } noLoop(); }
Hors ligne
Bonjour,
L'erreur est un dépassement de capacité du tableau.
La taille du tableau est 7. Quand i atteint 6 :
a = x[i + 1] - a[i] <=> a = x[7] -x[6]
Tu as donc un dépassement de capacité puisque tu lui demandes de chercher le huitième élément du tableau.
A toi de trouver quoi faire quand i = 6 …
Hors ligne
Bonjour.
j'ai ajouté un 0 à la fin du fichier.Enfin pour le changement de sens j'ai pensé à ça;mais je ne sais pas si c'est comme ça qu'il faut faire.
merci.
int[]tab_x={10,20,30,40,50,60,20,10,0}; int[]tab_y={10,10,10,10,10,10,20,20,0}; int ecart_pas; void setup(){ size(800,400); } void draw(){ for(int i=0;i<8;i++){ ecart_pas=tab_x[i+1]-tab_x[i]; print(ecart_pas," "); if(ecart_pas>=0){ marche_avant(tab_x[i],tab_y[i]); } else{ marche_arriere(tab_x[i],tab_y[i]); } noLoop(); } } void marche_avant(int x,int y){ fill(255,0,255); ellipse(x*10,y*10,10,10); } void marche_arriere(int x,int y){ fill(0,255,255); ellipse(x*10,y*10,10,10); }
Hors ligne
J'ai enfin compris ce que tu voulais faire. En fait le 0 il faut le mettre au début de tes tableaux. Dans les machines à commande numérique, par exemple une CNC, il faut indiquer au logiciel à quoi correspond le zéro pour ensuite aller au premier trou à percer. Le point d'origine doit être défini.
Ce qui serait bien ensuite c'est de ramener ta tête de perceuse au point 0 donc d'ajouter en destination finale le point d'origine. Pour ensuite changer de pièce et en recommencer une avec les mêmes réglages.
Hors ligne
Oui tout à fait,je me posai la question sur le point d'origine je vais tester en prenant le coin supérieure gauche de la pièce à percer comme référence pour le zéro. C'est l'endroit d'ou je fais partir les cotes pour le perçage
Merci pour les conseils.
Hors ligne
par contre je me suis aperçu que dans l'exemple stepper de Aruino mon moteur fait 2048 pas par tour,et dans le programme que j 'ai fais pour processing il n'en fait plus que environ 512 soit une perte d'un quart c'est largement suffisant pour une grande précision quant on sait qu'une tige de 8 a une translation linéaire de 1.25 mm ,mais c'était par curiosité savoir ou sont passé les autres pas. J'ai lu que l'on pouvais faire des quart de pas je suppose que le problème viens de là.
Hors ligne