led.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include <Arduino.h>
  2. #include "led.h"
  3. #include "board_config.h"
  4. Led led;
  5. void Led::init(void)
  6. {
  7. if (done_init) {
  8. return;
  9. }
  10. done_init = true;
  11. #ifdef PIN_STATUS_LED
  12. pinMode(PIN_STATUS_LED, OUTPUT);
  13. #endif
  14. #ifdef WS2812_LED_PIN
  15. pinMode(WS2812_LED_PIN, OUTPUT);
  16. ledStrip.begin();
  17. #endif
  18. }
  19. void Led::update(void)
  20. {
  21. const uint32_t now_ms = millis();
  22. #ifdef PIN_STATUS_LED
  23. switch (state) {
  24. case LedState::ARM_OK: {
  25. digitalWrite(PIN_STATUS_LED, STATUS_LED_OK);
  26. last_led_trig_ms = now_ms;
  27. break;
  28. }
  29. default:
  30. if (now_ms - last_led_trig_ms > 100) {
  31. digitalWrite(PIN_STATUS_LED, !digitalRead(PIN_STATUS_LED));
  32. last_led_trig_ms = now_ms;
  33. }
  34. break;
  35. }
  36. #endif
  37. #ifdef WS2812_LED_PIN
  38. ledStrip.clear();
  39. switch (state) {
  40. case LedState::ARM_OK:
  41. ledStrip.setPixelColor(0, ledStrip.Color(0, 255, 0));
  42. break;
  43. default:
  44. ledStrip.setPixelColor(0, ledStrip.Color(255, 0, 0));
  45. break;
  46. }
  47. if (now_ms - last_led_strip_ms >= 200) {
  48. last_led_strip_ms = now_ms;
  49. ledStrip.show();
  50. }
  51. #endif
  52. }