Projet_Voilier/Services/Transmission.c
2025-12-04 12:47:34 +01:00

65 lines
No EOL
2.2 KiB
C

#include <stm32f10x.h>
#include <Transmission.h>
#include <USART.h>
extern uint32_t tickms;
uint32_t last1 = 0;
uint32_t last3 = 0;
uint32_t last4 = 0;
void Transmission_Init(void){
My_USART_Init(USART1);
}
void Transmission_allure(int angle_voiles){
if (tickms-last1 >= 5000){
last1 = tickms;
if (angle_voiles < 23) send_USART_String(USART1,"Le bateau navigue vent debout. \n");
else if (angle_voiles < 27) send_USART_String(USART1,"Le bateau navigue au pres. \n");
else if (angle_voiles < 38) send_USART_String(USART1,"Le bateau navigue au pres bon plein. \n");
else if (angle_voiles < 53) send_USART_String(USART1,"Le bateau navigue au travers. \n");
else if (angle_voiles < 71) send_USART_String(USART1,"Le bateau navigue au grand large. \n");
else if (angle_voiles <= 90) send_USART_String(USART1,"Le bateau navigue vent arriere. \n");
else send_USART_String(USART1,"ERREUR DANS L'ANGLE!! \n");
}
}
void Transmission_batterie(int batterie){
if (tickms-last3 >= 5000){
last3 = tickms;
if(batterie > 50){
send_USART_String(USART1,"Batterie : ");
}
else{
send_USART_String(USART1, "SEUIL DE BATTERIE ATTEINT : ");
}
send_USART(USART1,(batterie/10) + '0'); // Envoie le chiffre des dizaines
send_USART(USART1,(batterie%10) + '0'); // Envoie le chiffre des unités
send_USART_String(USART1,"%\n");
}
}
void Transmission_roulis(char roulis){
char angabs;
if (tickms-last4 >= 2000){
last4 = tickms;
if (roulis >= 40 && !(roulis & (1<<7))){
send_USART_String(USART1, "ANGLE DE ROULIS TROP ELEVE : DEBORDAGE!!! \n");
send_USART(USART1,(roulis/10) + '0'); // Envoie le chiffre des dizaines
send_USART(USART1,(roulis%10) + '0'); // Envoie le chiffre des unités
}
else if (roulis & (1<<7)) {
angabs = (1<<7) - (roulis & 0x7F);
if (angabs >= 40) send_USART_String(USART1, "ANGLE DE ROULIS TROP ELEVE : DEBORDAGE!!! \n");
else send_USART_String(USART1, "Angle de roulis : ");
send_USART(USART1,(angabs/10) + '0');
send_USART(USART1,(angabs%10) + '0');
}
else {
send_USART_String(USART1, "Angle de roulis : ");
send_USART(USART1,(roulis/10) + '0'); // Envoie le chiffre des dizaines
send_USART(USART1,(roulis%10) + '0'); // Envoie le chiffre des unités
}
send_USART_String(USART1," degre(s)\n");
}
}