M5Unit-RGB 0.1.0 git rev:b7fdb9a
Loading...
Searching...
No Matches
unit_LED_data.hpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
3 *
4 * SPDX-License-Identifier: MIT
5 */
13#ifndef M5_UNIT_RGB_UNIT_LED_DATA_HPP
14#define M5_UNIT_RGB_UNIT_LED_DATA_HPP
15
17#include <cstdint>
18
19namespace m5 {
20namespace unit {
21
26namespace rgb {
27
29using wrgb32_color_t = uint32_t;
30
35union Color {
40 explicit constexpr Color(const wrgb32_color_t c = 0) : wrgb{c}
41 {
42 }
50 constexpr Color(const uint8_t rr, const uint8_t gg, const uint8_t bb, const uint8_t ww = 0)
51 : b{bb}, g{gg}, r{rr}, w{ww}
52 {
53 }
58 constexpr operator wrgb32_color_t() const
59 {
60 return wrgb;
61 }
69 static Color fromHSV(const uint8_t h, const uint8_t s, const uint8_t v)
70 {
71 return Color(hsv2rgb(h, s, v));
72 }
73
75 struct {
76 uint8_t b;
77 uint8_t g;
78 uint8_t r;
79 uint8_t w;
80 };
81 uint8_t a[4];
82};
89constexpr bool operator==(const Color& lhs, const Color& rhs)
90{
91 return lhs.wrgb == rhs.wrgb;
92}
93
100constexpr uint32_t ticks_from_ns(const uint32_t ns, const uint32_t resolution_hz)
101{
102 return static_cast<uint32_t>((static_cast<uint64_t>(ns) * resolution_hz + 500000000ULL) / 1000000000ULL);
103}
104
110namespace timing {
111constexpr uint32_t T0H_NS{350};
112constexpr uint32_t T0L_NS{800};
113constexpr uint32_t T1H_NS{700};
114constexpr uint32_t T1L_NS{600};
115constexpr uint32_t RESET_NS{300000};
116} // namespace timing
117
118} // namespace rgb
119} // namespace unit
120} // namespace m5
121#endif
uint32_t hsv2rgb(const uint8_t h, const uint8_t s, const uint8_t v)
HSV to RGB.
Definition m5unit_rgb_utility.cpp:16
Utilities for M5Unit-RGB.
Top level namespace of M5Stack.
For M5Unit-RGB.
Data line timing shared by the SK6812 and WS2812 units (ns)
Unit-related namespace.
WRGB 32bits.
Definition unit_LED_data.hpp:35
uint8_t b
Blue.
Definition unit_LED_data.hpp:76
wrgb32_color_t wrgb
WRGB 32bits.
Definition unit_LED_data.hpp:74
uint8_t a[4]
Array.
Definition unit_LED_data.hpp:81
uint8_t w
White.
Definition unit_LED_data.hpp:79
uint8_t g
Green.
Definition unit_LED_data.hpp:77
uint8_t r
Red.
Definition unit_LED_data.hpp:78
constexpr Color(const uint8_t rr, const uint8_t gg, const uint8_t bb, const uint8_t ww=0)
Constructor from RGB / RGBW components.
Definition unit_LED_data.hpp:50
constexpr Color(const wrgb32_color_t c=0)
Constructor from packed WRGB.
Definition unit_LED_data.hpp:40
static Color fromHSV(const uint8_t h, const uint8_t s, const uint8_t v)
Make Color from HSV.
Definition unit_LED_data.hpp:69
constexpr uint32_t ticks_from_ns(const uint32_t ns, const uint32_t resolution_hz)
Convert a duration to RMT ticks.
Definition unit_LED_data.hpp:100
constexpr bool operator==(const Color &lhs, const Color &rhs)
Compare two Colors.
Definition unit_LED_data.hpp:89
constexpr uint32_t T1H_NS
1 code, high
Definition unit_LED_data.hpp:113
constexpr uint32_t T1L_NS
1 code, low
Definition unit_LED_data.hpp:114
uint32_t wrgb32_color_t
WRGB 32bits.
Definition unit_LED_data.hpp:29
constexpr uint32_t T0L_NS
0 code, low
Definition unit_LED_data.hpp:112
constexpr uint32_t T0H_NS
0 code, high
Definition unit_LED_data.hpp:111
constexpr uint32_t RESET_NS
Reset (latch), WS2812C-2020 needs > 280 us.
Definition unit_LED_data.hpp:115