Skip to content

Commit 67edd0b

Browse files
icyqwqlbuque
authored andcommitted
libs/unit: Add brightness adjust feature to joystickv2.
Signed-off-by: icyqwq <[email protected]>
1 parent a73ac75 commit 67edd0b

File tree

3 files changed

+107
-41
lines changed

3 files changed

+107
-41
lines changed

docs/en/refs/unit.joystickv2.ref

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,26 @@
44
:height: 200px
55
:width: 200px
66

7-
.. |init.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/init.svg
8-
.. |set_axis_x_invert.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_axis_x_invert.svg
9-
.. |set_axis_y_invert.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_axis_y_invert.svg
10-
.. |set_axis_swap.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_axis_swap.svg
11-
.. |get_adc_value.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_adc_value.svg
12-
.. |get_button_status.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_button_status.svg
13-
.. |fill_color.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/fill_color.svg
14-
.. |set_axis_x_mapping.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_axis_x_mapping.svg
15-
.. |set_axis_y_mapping.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_axis_y_mapping.svg
16-
.. |set_deadzone_adc.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_deadzone_adc.svg
17-
.. |set_deadzone_position.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_deadzone_position.svg
18-
.. |get_axis_position.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_axis_position.svg
19-
.. |set_address.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_address.svg
20-
.. |get_firmware_version.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_firmware_version.svg
21-
.. |get_x_raw.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_x_raw.svg
22-
.. |get_y_raw.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_y_raw.svg
23-
.. |get_x_position.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_x_position.svg
24-
.. |get_y_position.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_y_position.svg
7+
.. |init.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/init.png
8+
.. |set_axis_x_invert.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_axis_x_invert.png
9+
.. |set_axis_y_invert.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_axis_y_invert.png
10+
.. |set_axis_swap.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_axis_swap.png
11+
.. |get_adc_value.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_adc_value.png
12+
.. |get_button_status.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_button_status.png
13+
.. |set_led_brightness.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_led_brightness.png
14+
.. |fill_color.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/fill_color.png
15+
.. |fill_color_rgb.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/fill_color_rgb.png
16+
.. |set_axis_x_mapping.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_axis_x_mapping.png
17+
.. |set_axis_y_mapping.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_axis_y_mapping.png
18+
.. |set_deadzone_adc.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_deadzone_adc.png
19+
.. |set_deadzone_position.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_deadzone_position.png
20+
.. |get_axis_position.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_axis_position.png
21+
.. |set_address.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/set_address.png
22+
.. |get_firmware_version.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_firmware_version.png
23+
.. |get_x_raw.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_x_raw.png
24+
.. |get_y_raw.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_y_raw.png
25+
.. |get_x_position.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_x_position.png
26+
.. |get_y_position.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/get_y_position.png
2527

26-
.. |example.svg| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/example.svg
28+
.. |example.png| image:: https://static-cdn.m5stack.com/mpy_docs/unit/joystickv2/example.png
2729

docs/en/units/joystickv2.rst

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Micropython Example::
2929

3030
UIFLOW2 Example:
3131

32-
|example.svg|
32+
|example.png|
3333

3434
.. only:: builder_html
3535

@@ -48,7 +48,7 @@ Constructors
4848

4949
UIFLOW2:
5050

51-
|init.svg|
51+
|init.png|
5252

5353

5454
Methods
@@ -63,7 +63,7 @@ Methods
6363

6464
UIFLOW2:
6565

66-
|set_axis_x_invert.svg|
66+
|set_axis_x_invert.png|
6767

6868
.. method:: JoystickV2Unit.set_axis_y_invert(invert)
6969

@@ -74,7 +74,7 @@ Methods
7474

7575
UIFLOW2:
7676

77-
|set_axis_y_invert.svg|
77+
|set_axis_y_invert.png|
7878

7979
.. method:: JoystickV2Unit.set_axis_swap(swap)
8080

@@ -85,7 +85,7 @@ Methods
8585

8686
UIFLOW2:
8787

88-
|set_axis_swap.svg|
88+
|set_axis_swap.png|
8989

9090
.. method:: JoystickV2Unit.get_adc_value()
9191

@@ -96,7 +96,7 @@ Methods
9696

9797
UIFLOW2:
9898

99-
|get_adc_value.svg|
99+
|get_adc_value.png|
100100

101101
.. method:: JoystickV2Unit.get_button_status()
102102

@@ -107,9 +107,31 @@ Methods
107107

108108
UIFLOW2:
109109

110-
|get_button_status.svg|
110+
|get_button_status.png|
111111

112-
.. method:: JoystickV2Unit.fill_color(r, g, b)
112+
.. method:: JoystickV2Unit.set_led_brightness(brightness)
113+
114+
Set the brightness of the RGB LED.
115+
116+
117+
:param float brightness: The brightness value (0-100).
118+
119+
UIFLOW2:
120+
121+
|set_led_brightness.png|
122+
123+
.. method:: JoystickV2Unit.fill_color(v)
124+
125+
Set the RGB LED color of the joystick.
126+
127+
128+
:param v: The RGB value (0x000000-0xFFFFFF).
129+
130+
UIFLOW2:
131+
132+
|fill_color.png|
133+
134+
.. method:: JoystickV2Unit.fill_color_rgb(r, g, b)
113135

114136
Set the RGB LED color of the joystick.
115137

@@ -120,7 +142,7 @@ Methods
120142

121143
UIFLOW2:
122144

123-
|fill_color.svg|
145+
|fill_color_rgb.png|
124146

125147
.. method:: JoystickV2Unit.set_axis_x_mapping(adc_neg_min, adc_neg_max, adc_pos_min, adc_pos_max)
126148

@@ -143,7 +165,7 @@ Methods
143165

144166
UIFLOW2:
145167

146-
|set_axis_x_mapping.svg|
168+
|set_axis_x_mapping.png|
147169

148170
.. method:: JoystickV2Unit.set_axis_y_mapping(adc_neg_min, adc_neg_max, adc_pos_min, adc_pos_max)
149171

@@ -166,7 +188,7 @@ Methods
166188

167189
UIFLOW2:
168190

169-
|set_axis_y_mapping.svg|
191+
|set_axis_y_mapping.png|
170192

171193
.. method:: JoystickV2Unit.set_deadzone_adc(x_adc_raw, y_adc_raw)
172194

@@ -178,7 +200,7 @@ Methods
178200

179201
UIFLOW2:
180202

181-
|set_deadzone_adc.svg|
203+
|set_deadzone_adc.png|
182204

183205
.. method:: JoystickV2Unit.set_deadzone_position(x_pos, y_pos)
184206

@@ -190,7 +212,7 @@ Methods
190212

191213
UIFLOW2:
192214

193-
|set_deadzone_position.svg|
215+
|set_deadzone_position.png|
194216

195217
.. method:: JoystickV2Unit.get_axis_position()
196218

@@ -201,7 +223,7 @@ Methods
201223

202224
UIFLOW2:
203225

204-
|get_axis_position.svg|
226+
|get_axis_position.png|
205227

206228
.. method:: JoystickV2Unit.set_address(address)
207229

@@ -212,7 +234,7 @@ Methods
212234

213235
UIFLOW2:
214236

215-
|set_address.svg|
237+
|set_address.png|
216238

217239
.. method:: JoystickV2Unit.get_firmware_version()
218240

@@ -223,7 +245,7 @@ Methods
223245

224246
UIFLOW2:
225247

226-
|get_firmware_version.svg|
248+
|get_firmware_version.png|
227249

228250
.. method:: JoystickV2Unit.get_x_raw()
229251

@@ -234,7 +256,7 @@ Methods
234256

235257
UIFLOW2:
236258

237-
|get_x_raw.svg|
259+
|get_x_raw.png|
238260

239261
.. method:: JoystickV2Unit.get_y_raw()
240262

@@ -245,7 +267,7 @@ Methods
245267

246268
UIFLOW2:
247269

248-
|get_y_raw.svg|
270+
|get_y_raw.png|
249271

250272
.. method:: JoystickV2Unit.get_x_position()
251273

@@ -256,7 +278,7 @@ Methods
256278

257279
UIFLOW2:
258280

259-
|get_x_position.svg|
281+
|get_x_position.png|
260282

261283
.. method:: JoystickV2Unit.get_y_position()
262284

@@ -267,7 +289,7 @@ Methods
267289

268290
UIFLOW2:
269291

270-
|get_y_position.svg|
292+
|get_y_position.png|
271293

272294

273295

m5stack/libs/unit/joystickv2.py

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ def __init__(self, i2c: I2C, address: int | list | tuple = 0x63):
4646
address:
4747
note: I2C address of the JoystickV2 Unit.
4848
"""
49+
self._color = [0, 0, 0]
50+
self._br = 1
4951
self._i2c = i2c
5052
self._addr = address
5153
self._x_inv = False
@@ -148,7 +150,46 @@ def get_button_status(self) -> bool:
148150
"""
149151
return not bool(self._read_reg_data(0x20, 1)[0])
150152

151-
def fill_color(self, r: int, g: int, b: int) -> None:
153+
def set_led_brightness(self, brightness: float) -> None:
154+
"""
155+
note: Set the brightness of the RGB LED.
156+
157+
label:
158+
en: "%1 set RGB LED brightness to %2"
159+
cn: "%1 设置 RGB LED 亮度为 %2"
160+
161+
params:
162+
brightness:
163+
note: The brightness value (0-100).
164+
"""
165+
self._br = brightness / 100
166+
self._write_reg_data(0x30, [int(c * self._br) for c in self._color])
167+
168+
def fill_color(self, v) -> None:
169+
"""
170+
note: Set the RGB LED color of the joystick.
171+
172+
label:
173+
en: "%1 set RGB LED color of JoystickV2 Unit to (%2)"
174+
cn: "%1 设置 JoystickV2 Unit 的 RGB LED 颜色为 (%2)"
175+
176+
params:
177+
v:
178+
note: The RGB value (0x000000-0xFFFFFF).
179+
"""
180+
181+
def color_to_bgr(c: int) -> tuple:
182+
# color: (R << 16 | G << 8 | B)
183+
v = []
184+
v.append(int(((c >> 0) & 0xFF) * self._br)) # B
185+
v.append(int(((c >> 8) & 0xFF) * self._br)) # G
186+
v.append(int(((c >> 16) & 0xFF) * self._br)) # R
187+
return list(v)
188+
189+
self._color = color_to_bgr(v)
190+
self._write_reg_data(0x30, [int(c * self._br) for c in self._color])
191+
192+
def fill_color_rgb(self, r: int, g: int, b: int) -> None:
152193
"""
153194
note: Set the RGB LED color of the joystick.
154195
@@ -164,7 +205,8 @@ def fill_color(self, r: int, g: int, b: int) -> None:
164205
b:
165206
note: The blue value (0-255).
166207
"""
167-
self._write_reg_data(0x30, [b, g, r])
208+
self._color = [b, g, r]
209+
self._write_reg_data(0x30, [int(c * self._br) for c in self._color])
168210

169211
def _set_mapping(
170212
self, adc_neg_min: int, adc_neg_max: int, adc_pos_min: int, adc_pos_max: int, axis_x=True

0 commit comments

Comments
 (0)