Projet voilier 4IRA1 Arnaud Vergnet Marino Benassai Bastien Picco Yohan Simard
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Display.c 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "Display.h"
  2. #include "Voltage.h"
  3. #include "RFEmitter.h"
  4. #include "Sail.h"
  5. #include "stdio.h"
  6. #include "string.h"
  7. // Composants utilisés par l'emetteur
  8. USART_TypeDef * EMITTER_USART = USART1;
  9. GPIO_TypeDef * EMITTER_GPIO = GPIOA;
  10. const int EMITTER_PIN = LL_GPIO_PIN_11;
  11. // Composants utilisés par la batterie
  12. ADC_TypeDef * VOLTAGE_ADC = ADC2;
  13. const int VOLTAGE_CHANNEL = 12;
  14. GPIO_TypeDef * VOLTAGE_GPIO = GPIOC;
  15. const int VOLTAGE_PIN = LL_GPIO_PIN_2;
  16. void Display_conf()
  17. {
  18. Voltage_conf(VOLTAGE_ADC, VOLTAGE_GPIO, VOLTAGE_PIN);
  19. RFEmitter_conf(EMITTER_USART, EMITTER_GPIO, EMITTER_PIN);
  20. }
  21. void Display_start()
  22. {
  23. Voltage_start(VOLTAGE_ADC);
  24. RFEmitter_start(EMITTER_USART);
  25. }
  26. void Display_background(int secCounter)
  27. {
  28. static int previousEmergencyState = 0;
  29. static int prevSendSec = 0;
  30. const int emergency = Sail_getEmergencyState();
  31. if (secCounter - prevSendSec == 1 || (emergency && !previousEmergencyState)) {
  32. previousEmergencyState = emergency;
  33. prevSendSec = secCounter;
  34. const float voltage = Voltage_getVoltage(VOLTAGE_ADC, VOLTAGE_CHANNEL);
  35. const int sailAngle = Sail_getSailAngle();
  36. const int sailPercent = sailAngle * 100 / 90.0;
  37. // const int relativeAngle = sailAngle >= 180 ? 360 - sailAngle : sailAngle;
  38. // const int sailPercent = (90 - relativeAngle) * 100 / 90;
  39. char displayStr[100] = "";
  40. char emergStr[30] = "";
  41. if (emergency) {
  42. sprintf(emergStr, "Limite de roulis atteinte !\n\r");
  43. RFEmitter_send(EMITTER_USART, emergStr, strlen(emergStr), EMITTER_GPIO, EMITTER_PIN);
  44. }
  45. sprintf(displayStr, "Angle de la voile : %ddeg\n\rBordage actuel = %d%% \n\rTension de la batterie = %fV \n\r\n\r", sailAngle, sailPercent, voltage);
  46. RFEmitter_send(EMITTER_USART, displayStr, strlen(displayStr), EMITTER_GPIO, EMITTER_PIN);
  47. }
  48. previousEmergencyState = emergency;
  49. }