abfall/src/ws2812.h
2023-01-11 11:12:02 +01:00

35 lines
655 B
C++

#pragma once
#include "pico/stdlib.h"
#include "ws2812.pio.h"
enum class Color : uint32_t {
RED = 0xff0000,
GREEN = 0x00ff00,
BLUE = 0x0000ff,
WHITE = 0xffffff,
OFF = 0x000000,
YELLOW = 0xffff00,
CYAN = 0x00ffff,
};
class WS2812 {
public:
WS2812(uint gpio, PIO pio = pio0, uint sm = 0);
virtual ~WS2812();
WS2812(const WS2812 &other) = delete;
WS2812 &operator=(const WS2812 &) = delete;
void switchColor(Color color);
void blinkReady();
void init();
void deinit();
private:
void putPixel(uint32_t pixel_rgb);
PIO m_pio;
uint m_gpio;
uint m_sm;
uint m_offset{0};
};