ESP32 Native version of Blinky, featureful controller code for WS2811/WS2812/NeoPixels
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

47 lines
1.0KB

  1. static const char *TAG = "leds";
  2. #include <esp_log.h>
  3. #include "leds.hpp"
  4. #include "utils.hpp"
  5. LEDStrip::LEDStrip(int _length) :
  6. length(_length), pattern(NULL),
  7. pixels(new Color[_length]),
  8. state(NULL)
  9. {}
  10. void LEDStrip::update_state() {
  11. if (state) delete state;
  12. if (pattern) state = pattern->start(length);
  13. else state = NULL;
  14. }
  15. void LEDStrip::setLength(int _length) {
  16. length_changing(_length);
  17. delete[] pixels;
  18. length = _length;
  19. pixels = new Color[_length];
  20. update_state();
  21. }
  22. void LEDStrip::step() {
  23. if (pattern) pattern->step(pixels, length, state);
  24. }
  25. static std::string termcolor(Color c) {
  26. return "\x1b[48;2;" +
  27. std::to_string((int)c.r) + ";" +
  28. std::to_string((int)c.g) + ";" +
  29. std::to_string((int)c.b) + "m";
  30. }
  31. void TerminalLEDs::show() {
  32. std::string line;
  33. for (int i = 0; i < length; i++) {
  34. line += termcolor(pixels[i]) + " ";
  35. }
  36. line += "\x1b[0m";
  37. ESP_LOGI(TAG, "%s", line.c_str());
  38. }