diff --git a/MDK-ARM/Project.uvoptx b/MDK-ARM/Project.uvoptx index 6e6df50..3ebe251 100644 --- a/MDK-ARM/Project.uvoptx +++ b/MDK-ARM/Project.uvoptx @@ -130,7 +130,7 @@ 0 DLGTARM - (1010=668,263,1044,820,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=1027,281,1448,686,0)(121=-1,-1,-1,-1,0)(122=348,235,769,640,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=87,183,486,528,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=621,97,1215,791,0)(131=738,113,1332,807,0)(132=784,58,1378,752,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0) + (1010=668,263,1044,820,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=1027,281,1448,686,0)(121=-1,-1,-1,-1,0)(122=348,235,769,640,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=87,183,486,528,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=621,97,1215,791,0)(131=157,121,751,815,0)(132=147,87,741,781,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0) 0 @@ -157,6 +157,70 @@ 0 0 + 35 + 1 +
134219770
+ 0 + 0 + 0 + 0 + 0 + 1 + ..\Src\Gouvernail.c + + \\NUCLEO_F103RB\../Src/Gouvernail.c\35 +
+ + 1 + 0 + 66 + 1 +
134219278
+ 0 + 0 + 0 + 0 + 0 + 1 + ..\Src\Voilier.c + + \\NUCLEO_F103RB\../Src/Voilier.c\66 +
+ + 2 + 0 + 67 + 1 +
134219284
+ 0 + 0 + 0 + 0 + 0 + 1 + ..\Src\Voilier.c + + \\NUCLEO_F103RB\../Src/Voilier.c\67 +
+ + 3 + 0 + 68 + 1 +
134219292
+ 0 + 0 + 0 + 0 + 0 + 1 + ..\Src\Voilier.c + + \\NUCLEO_F103RB\../Src/Voilier.c\68 +
+ + 4 + 0 56 1
0
diff --git a/Src/Gouvernail.c b/Src/Gouvernail.c index e094159..9732d7f 100644 --- a/Src/Gouvernail.c +++ b/Src/Gouvernail.c @@ -1,6 +1,9 @@ #include "stm32f1xx_ll_gpio.h" // GPIO #include "stm32f1xx_ll_bus.h" // RCC #include "stm32f1xx_ll_tim.h" // TIMER +#include "maths.h" + +#define MAX_PWM (19999) /** * @brief Configure le récepteur de la télécommande ainsi que le plateau rotatif. @@ -22,8 +25,9 @@ void ConfGouvernail(void) { LL_GPIO_SetPinMode(GPIOB, LL_GPIO_PIN_7, LL_GPIO_MODE_FLOATING); LL_GPIO_SetPinMode(GPIOA, LL_GPIO_PIN_1, LL_GPIO_MODE_ALTERNATE); LL_GPIO_SetPinOutputType(GPIOA, LL_GPIO_PIN_1, LL_GPIO_OUTPUT_PUSHPULL); - LL_GPIO_SetPinMode(GPIOA, LL_GPIO_PIN_2, LL_GPIO_MODE_OUTPUT); + LL_GPIO_SetPinMode(GPIOA, LL_GPIO_PIN_2, LL_GPIO_MODE_OUTPUT_2MHz); LL_GPIO_SetPinOutputType(GPIOA, LL_GPIO_PIN_2, LL_GPIO_OUTPUT_PUSHPULL); + LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_2); //Configuration des timers @@ -36,7 +40,7 @@ void ConfGouvernail(void) { LL_TIM_OC_StructInit(&Tim2Initializer); Tim2Initializer.OCMode = LL_TIM_OCMODE_PWM1; LL_TIM_OC_Init(TIM2, LL_TIM_CHANNEL_CH2, &Tim2Initializer); - LL_TIM_SetAutoReload(TIM2, 19999); + LL_TIM_SetAutoReload(TIM2, MAX_PWM); LL_TIM_SetPrescaler(TIM2, 71); LL_TIM_OC_SetCompareCH2(TIM2, 0); LL_TIM_EnableCounter(TIM2); @@ -60,4 +64,10 @@ int LireTelecommande(void) { * @retval None */ void CommanderMoteur(int commande) { + if (commande < 0) { + LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_2); + } else { + LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_2); + } + LL_TIM_OC_SetCompareCH2(TIM2, (int)(((float)abs(commande)) * (((float)MAX_PWM) / 100.0))); } diff --git a/Src/Voilier.c b/Src/Voilier.c index 5b057e5..8d5780b 100644 --- a/Src/Voilier.c +++ b/Src/Voilier.c @@ -59,12 +59,17 @@ void Background(){ TendreVoile(CalculerTension(RecupAllure())); //on tend la voile grâce à la tension obtenue //Gouvernail - /*int valeurTelecommande = LireTelecommande(); //on lit la valeur renvoyée par la télécommande - int vitesse = CalculerVitesse(valeurTelecommande);//gràace à la valeur de la telecommande on calcule la vitesse souhaitée - CommanderMoteur(vitesse);//On commande le moteur pour aller à la vitesse voulue - + //int commande = LireTelecommande(); //on lit la valeur renvoyée par la télécommande + CommanderMoteur(0); //On commande le moteur pour aller à la vitesse voulue + CommanderMoteur(-0); + CommanderMoteur(-1); + CommanderMoteur(1); + CommanderMoteur(-50); + CommanderMoteur(50); + CommanderMoteur(-100); + CommanderMoteur(100); //Anti-Chavirement - int rouli = RecupRouli(); + /*int rouli = RecupRouli(); int danger = CalculerDanger(rouli);//renvoi boolean : int à 0 si faux et 1 si vrai if(danger){ TendreVoile(90); //si il y a danger on relache les voiles (relacher les voiles = les mettre à 90)