ws2812_i2c.c 549 B

123456789101112131415161718192021222324252627
  1. #include "ws2812.h"
  2. #include "i2c_master.h"
  3. #ifdef RGBW
  4. # error "RGBW not supported"
  5. #endif
  6. #ifndef WS2812_ADDRESS
  7. # define WS2812_ADDRESS 0xb0
  8. #endif
  9. #ifndef WS2812_TIMEOUT
  10. # define WS2812_TIMEOUT 100
  11. #endif
  12. void ws2812_init(void) { i2c_init(); }
  13. // Setleds for standard RGB
  14. void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
  15. static bool s_init = false;
  16. if (!s_init) {
  17. ws2812_init();
  18. s_init = true;
  19. }
  20. i2c_transmit(WS2812_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * leds, WS2812_TIMEOUT);
  21. }