#include #include #include "Horloge.h" #include "Accelerometre.h" #include "Girouette.h" #include "Servo.h" #include "MyUart.h" #include "Plateau.h" #include "I2C.h" #include "RTC.h" //Variables int angleVentVar; int angleVoileVar; volatile uint32_t moy; void pilotage(int commande) { Update_Motor_PWM(commande,TIM3,3); }; int main (void) { // ---- Setup ------ // Servo.c initServo(TIM4, 3); // Giroutte.c configEncoder(TIM2); LocaliserZero(); // Test de lecture ADC My_USART_Config(USART1, 7500); initADC(); // Init moyenne glissante int i = 0; uint32_t moyenne[LONGUEUR_MOY]; for (int p = 0; pAPB2ENR |= RCC_APB2ENR_IOPBEN; // POURQUOI MANIPULE T-ON ÇA ICI ?!???!? // Init lacheurVoile initAccelo(); initServo(TIM4, 3); //Init RTC initRTC(); getTime(); // ----- Opération ----- while(1){ // Girouette angleVentVar = angleVent(TIM2); // Récupérer l'angle de girouette angleVoileVar = vent2voile(angleVentVar); // Transformer l'angle de girouette au l'angle des voiles souhaités Servo_Moteur(angleVoileVar, TIM4, 3); // Faire bouger le moteur servo // Acceleromètre 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 // ADC sendinfoADC(); } }