Bonsoir,
Dans le cadre d'un cours d'informatique un collègue et moi on doit créer un programme capable de contrôler deux moteurs pas à pas de tel sorte à que ceux-ci dessinent un carré.
Rassurez-vous, je ne vais pas vous demander de le faire à ma place (je ne pense pas que vous le feriez de toute façon). Cependant, comme nous sommes débutant dans le
domaine de la programmation et plus encore en C, votre aide serait la bienvenue.
Donc voici notre soucis:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <stdio.h>
#include <math.h>
//je déclare deux tableaux que je vais remplir par la suite.
float coordinatesX [80];
float coordinatesY [80];
int main(int argc, char *argv[]){
 
 
    int i,x,y,z;
 
    for(i=0;i<20;i++){
  coordinatesX [i]= 50;
  } // Rempli le tableau coordinateX avec pour les 20 premiers elements la valeur 50 et le reste indefini
    for(x=20;x<40;x++){
  coordinatesX [x]= 50+(x-19);
  }// Le meme tableau de 20 a 29 avec des valeurs de 51 a 71
    for(y=40;y<60;y++){
  coordinatesX [y]= 70;
    } // de 50 a 60 avec la valeur 70
    for(z=60;z<80;z++){
  coordinatesX [z]= 70 -(z-59);
  }// de 60 a 80 avec les valeurs 71 a 49
 
//Je remplis également le tableaux des coordonnées Y à l'aide de boucle "for" mais avec de valeurs différentes
    for(i=0;i<20;i++){
  coordinatesY [i] = 5-i;
    }
    for(x=20;x<40;x++){
  coordinatesY [x] = -15;
    }
    for(y=40;y<60;y++){
  coordinatesY [y] = -15+(y-40);
    }
    for(z=60;z<80;z++){
  coordinatesY [z] = 5;
    }
vecteurAP(coordinatesY);// j'envoie le tab. de coordonnées Y au vecteur AP
vecteurBP(coordinatesY);//j'envoie le tab. de coordonnées Y au vecteur BP
normeAP(coordinatesX);//J'envoie le tab. de coordonnées X à la fct. norme pour calculer la norme AP
normeBP(coordinatesX);//J'envoie le tab. de coordonnées X à la fct. norme pour calculer la norme BP
}//je désir que les tableaux que j'envoie restent tel que je l'ai remplis indépendemment des calculs que je fais avec à posteriori.
void vecteurAP(float coordinatesY[]);//je déclare ma vonction AP
void vecteurBP(float coordinatesY[]);//Je déclare ma fonction vecteur BP
// Cette fonction prend un tableau a une dimension (un vecteur) de coordonnees et rempli
// Le tableau coordinates YAP avec les elements de ce vecteur auxquels on a soustrait 35.
void vecteurAP (float coordinatesY[]){
float coordinatesYAP [80];//je déclare un nouveau tab. que je vais remplir à l'aide de celui que j'ai remplis précedemment c-à-d coordonnées Y
  float l = 70;
  int i;
  for(i=0;i<80;i++){
    coordinatesYAP [i] = coordinatesY [i]-(l/2);
  }
normeAP(coordinatesYAP);//une fois mon vecteurYAP remplis à l'aide des coordonnées Y je l'envoie à la fct. norme AP
}//de même que pour la fct vecteur AP mais cette fois ci pour le vecteur BP
void vecteurBP (float coordinatesY[]){
float coordinatesYBP [80];
  float l = 70;
  int i;
  for(i=0;i<80;i++){
    coordinatesYBP [i] = coordinatesY [i]+(l/2);
  }
normeBP(coordinatesYBP);//une fois mon vecteurYAP remplis à l'aide des coordonnées Y je l'envoie à la fct. norme AP
}
void normeAP(float coordinatesYAP[],float coordinatesX[]);//je déclare mes fcts. normes
void normeBP(float coordinatesYBP[],float coordinatesX[]);
 
 
//je les remplis à l'aide des coordonnées X et du vecteur YAP, que j'ai remplis avant, la norme AP
 
void normeAP (float coordinatesYAP[], float coordinatesX[]){
float normeAP [80];//déclaration du tableau normeAp
int a;
    for(a=0;a<80;a++){
    normeAP[a] = coordinatesX[a]*coordinatesX[a] + coordinatesYAP[a]*coordinatesYAP[a];
    }
    for(a=0;a<80;a++){
    normeAP[a]= sqrtf(normeAP[a]);
    }
   // angleAlpha1(normeAP);
    angleAlpha2(normeAP);//j'envoi la norme que j'ai calculé à l'angle alpha 2
   // angleBeta1(normeAP);
    angleBeta2(normeAP);//j'envoi la mème  norme que j'ai calculé à l'angle beta 2
}
void normeBP (float coordinatesYBP[], float coordinatesX[]){//même chose que pour la norme AP mais avec les coordonnées YBP et X pour la calculer
float normeBP [80];//déclaration du tab.norme BP
int a;
    for(a=0;a<80;a++){
    normeBP[a] = coordinatesX[a]*coordinatesX[a] + coordinatesYBP[a]*coordinatesYBP[a];
    }
    for(a=0;a<80;a++){
    normeBP[a]= sqrtf(normeBP[a]);
    }
   // angleAlpha1(normeBP);
    angleAlpha2(normeBP);//j'envoi la norme que j'ai calculé à l'angle alpha 2
  //  angleBeta1(normeBP);
    angleBeta2(normeBP);
 
}
//void angleAlpha1(float normeAP[], float normeBP []);
 
void angleAlpha2(float normeAP[], float normeBP []);//Je déclare mes fcts. d'angles
 
//void angleBeta1(float normeAP[], float normeBP[]);
 
void angleBeta2(float normeAP[], float normeBP[]);
//et j'utilise les tableaux que j'ai remplis avant pour remplir un autre tab. avec les angles
 
void angleAlpha2 (float normeAP[], float normeBP[]){
float angleAlpha2[80];
float l = 70;
int a;
    for(a=0;a<80;a++){
    angleAlpha2[a]= (powf(l,2) + powf(normeAP[a],2) - powf(normeBP[a],2)) /
                                (2 * l * normeAP[a]);
    }
}
 
 
void angleBeta2 (float normeAP[], float normeBP[]){
float angleBeta2[80];
float l = 70;
int a;
    for(a=0;a<80;a++){
    angleBeta2[a]= (powf(l,2) + powf(normeBP[a],2) - powf(normeAP[a],2)) /
                                (2 * l * normeBP[a]);
    }
    impression(angleBeta2);//j'envoie mon tab. d'angles à la fct imprimer
}
//comme étape intermédiaire je décide d'imprimer les supposés angles grace à cette fct...mais ça ne marche pas.
void impression(float angleBeta2[]);
 
void impression(float angleBeta2[]){
int a;
    for(a=0;a<80;a++){
        printf("%f\n", angleBeta2[a]);
    }
}

Donc voilà, on n'a pas de problèmes pour compiler mais par contre on a une bonne quantité de "warnings". La fonction imprimer n'est là que pour contrôler le résultat des opp. math. une fois qu'elles seront correctes on l'effacera.
On se doute qu'on n'a pas su appeler, déclarer ou définir les fonctions (ou les trois).

voici la liste de warnings:warning: conflicting types for 'vecteurAP' [enabled by default]|
|37|note: previous implicit declaration of 'vecteurAP' was here|
c'est tout le temps la même chose mais avec toute le déclaration...

Merci d'avance de votre aide.