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.

Roll.c 934B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "Roll.h"
  2. #include "Sail.h"
  3. #include "Accelerometer.h"
  4. #include "stdlib.h"
  5. ADC_TypeDef * ROLL_ADC = ADC2;
  6. const int ROLL_X_CHANNEL = 11;
  7. const int ROLL_Y_CHANNEL = 10;
  8. GPIO_TypeDef * ROLL_GPIO = GPIOC;
  9. const int ROLL_X_PIN = LL_GPIO_PIN_0;
  10. const int ROLL_Y_PIN = LL_GPIO_PIN_1;
  11. const int TRIGGER_ANGLE = 40;
  12. int Roll_isEmergencyState = 0;
  13. void Roll_conf(void)
  14. {
  15. Accelerometer_conf(ROLL_ADC, ROLL_GPIO, ROLL_X_PIN, ROLL_Y_PIN);
  16. }
  17. void Roll_start(void)
  18. {
  19. Accelerometer_start(ROLL_ADC);
  20. }
  21. int Roll_getEmergencyState(void)
  22. {
  23. return Roll_isEmergencyState;
  24. }
  25. void Roll_background(void)
  26. {
  27. const int xAngle = Accelerometer_getAngle(ROLL_ADC, ROLL_Y_CHANNEL);
  28. //const int yAngle = Accelerometer_getAngle(ROLL_ADC, ROLL_Y_CHANNEL);
  29. const int currentState = abs(xAngle) >= 40;
  30. if (Roll_isEmergencyState && !currentState)
  31. Sail_setEmergency(1);
  32. else if (!Roll_isEmergencyState && currentState)
  33. Sail_setEmergency(0);
  34. }