#include "Display.h" #include "Voltage.h" #include "RFEmitter.h" #include "Sail.h" #include "stdio.h" #include "string.h" USART_TypeDef * EMITTER_USART = USART1; GPIO_TypeDef * EMITTER_GPIO = GPIOA; const int EMITTER_PIN = LL_GPIO_PIN_11; ADC_TypeDef * VOLTAGE_ADC = ADC2; const int VOLTAGE_CHANNEL = 12; GPIO_TypeDef * VOLTAGE_GPIO = GPIOC; const int VOLTAGE_PIN = LL_GPIO_PIN_2; void Display_conf() { Voltage_conf(VOLTAGE_ADC, VOLTAGE_GPIO, VOLTAGE_PIN); RFEmitter_conf(EMITTER_USART, EMITTER_GPIO, EMITTER_PIN); } void Display_start() { Voltage_start(VOLTAGE_ADC); RFEmitter_start(EMITTER_USART); } void Display_background(int secCounter) { static int previousEmergencyState = 0; static int prevSendSec = 0; const int emergency = Sail_getEmergencyState(); if (secCounter - prevSendSec == 3 || (emergency && !previousEmergencyState)) { prevSendSec = secCounter; const float voltage = Voltage_getVoltage(VOLTAGE_ADC, VOLTAGE_CHANNEL); const int sailAngle = Sail_getSailAngle(); const int relativeAngle = sailAngle >= 180 ? 360 - sailAngle : sailAngle; const int sailPercent = (90 - relativeAngle) * 100 / 90; char displayStr[100]; sprintf(displayStr, "Bordage actuel = %d%%\nTension de la batterie = %fV\n", sailPercent, voltage); if (emergency) sprintf(displayStr, "Limite de roulis atteinte !\n%s", displayStr); RFEmitter_send(EMITTER_USART, displayStr, strlen(displayStr), EMITTER_GPIO, EMITTER_PIN); } previousEmergencyState = emergency; }