aboutsummaryrefslogtreecommitdiffstats
path: root/src/ws2812.h
blob: 3a0cf5cc2f41ca38b06ddc5e0901b619c9013f64 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once

#include "hardware/pio.h"
#include "hardware/gpio.h"

#include <stdbool.h>

#define _WS2812_U8(v, s) (((uint32_t) (v) & 0xFF) << s)
#define WS2812_U32RGB(r, g, b) \
	(_WS2812_U8(b, 0) | _WS2812_U8(r, 8) | _WS2812_U8(g, 16))

struct ws2812 {
	PIO pio;
	uint sm;
	uint pin;
	bool init;
};

void ws2812_init(struct ws2812 *pix, PIO pio, uint pin);
void ws2812_put(struct ws2812 *pix, uint32_t rgb);