#include #include #include #include #include #include #include #define ANGLE_LIMITE 60 // Angle ou les voiles seront lachés, SE MODIFIE volatile uint32_t moy; // Volatile pour pouvoir le regarder dans Keil µVision uint16_t moyenne[LONGUEUR_MOY]; uint32_t sum; uint16_t i; int main (void) { for (int p = 0; pAPB2ENR |= RCC_APB2ENR_IOPBEN; // Activation de l'horloge // Initialisation des modules initAccelo(); initLacheur(); initServo(TIM4, 3); while(1){ moyenne[i] = RecupAccelo()[2]; // Récuperation et ajout de la valeur plus récente dans le tableau dans la position i i++; if (i >= LONGUEUR_MOY) {i = 0;} // Géstion de la position i dans le tableau pour la moyenne glissante sum = 0; for (int j = 0; j < LONGUEUR_MOY; j++){sum += moyenne[j];} moy = sum / LONGUEUR_MOY; // Calcul de la moyenne glissante LacheVoile(ANGLE_LIMITE, (uint16_t)moy); // Lache la voile si le bateau dépasse l'angle limite }