Skip to content

Commit f44294d

Browse files
committed
unit: Add SimpleDualButtonUnit polling support.
1 parent 1dd501e commit f44294d

5 files changed

Lines changed: 504 additions & 83 deletions

File tree

docs/locales/zh_CN/LC_MESSAGES/unit/dualbutton.po

Lines changed: 253 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ msgid ""
99
msgstr ""
1010
"Project-Id-Version: UIFlow2 Programming Guide \n"
1111
"Report-Msgid-Bugs-To: \n"
12-
"POT-Creation-Date: 2026-02-25 18:05+0800\n"
12+
"POT-Creation-Date: 2026-08-21 14:23+0800\n"
1313
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1414
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1515
"Language: zh_CN\n"
@@ -20,113 +20,310 @@ msgstr ""
2020
"Content-Transfer-Encoding: 8bit\n"
2121
"Generated-By: Babel 2.16.0\n"
2222

23-
#: ../../source/unit/dualbutton.rst:2 afa3a4f4188943f183263e6a847cb3aa
24-
msgid "Dual_Button Unit"
23+
#: ../../source/unit/dualbutton.rst:2
24+
msgid "Dual Button Unit"
2525
msgstr "双按键 Unit"
2626

27-
#: ../../source/unit/dualbutton.rst:6 e732df3f7b4943ab80718cee2b65e7a2
27+
#: ../../source/unit/dualbutton.rst:6
28+
msgid ""
29+
"The Dual Button Unit provides two independent buttons. Use "
30+
"``DualButtonUnit`` for click, double-click, hold, and callback handling, "
31+
"or ``SimpleDualButtonUnit`` for direct pin reads and debounced edge "
32+
"polling."
33+
msgstr ""
34+
"Dual Button Unit 提供两个独立按键。使用 ``DualButtonUnit`` 可处理单击、"
35+
"双击、长按和回调;使用 ``SimpleDualButtonUnit`` 可直接读取引脚并轮询消抖后的"
36+
"边沿事件。"
37+
38+
#: ../../source/unit/dualbutton.rst:10
2839
msgid "Support the following products:"
2940
msgstr "支持以下产品:"
3041

31-
#: ../../source/unit/dualbutton.rst:8 a8ad70f78531425d810b166c427b203d
42+
#: ../../source/unit/dualbutton.rst:12
3243
msgid "|Dual_Button|"
3344
msgstr ""
3445

35-
#: ../../source/refs/unit.dual_button.ref e6967b332adf471a91e2d36d2ccb2f5c
46+
#: ../../source/refs/unit.dual_button.ref
3647
msgid "Dual_Button"
3748
msgstr "Dual_Button"
3849

39-
#: ../../source/unit/dualbutton.rst:11 ccd7d9fa100542f39372b6bd2a42895a
40-
msgid "Micropython Example:"
41-
msgstr "MicroPython 应用示例"
42-
43-
#: ../../source/unit/dualbutton.rst:18 2535460e4df24c52bdfb93a8c76ac190
44-
msgid "UIFLOW2 Example:"
50+
#: ../../source/unit/dualbutton.rst:15
51+
msgid "UiFlow2 Example"
4552
msgstr "UiFlow2 应用示例"
4653

47-
#: ../../source/unit/dualbutton.rst:20 7f1dd29495a843ab98c8b713dd0ea602
54+
#: ../../source/unit/dualbutton.rst:18
55+
msgid "Button events"
56+
msgstr "按键事件"
57+
58+
#: ../../source/unit/dualbutton.rst:20
59+
msgid "Open the |dual_button_core_example.m5f2| project in UiFlow2."
60+
msgstr "在 UiFlow2 中打开 |dual_button_core_example.m5f2| 项目。"
61+
62+
#: ../../source/unit/dualbutton.rst:22
63+
msgid ""
64+
"This example demonstrates how to read the button state and handle button "
65+
"events in UiFlow2."
66+
msgstr "本示例演示如何在 UiFlow2 中读取按键状态并处理按键事件。"
67+
68+
#: ../../source/unit/dualbutton.rst:25 ../../source/unit/dualbutton.rst:83
69+
#: ../../source/unit/dualbutton.rst:91 ../../source/unit/dualbutton.rst:102
70+
#: ../../source/unit/dualbutton.rst:113
71+
msgid "UiFlow2 Code Block:"
72+
msgstr "UiFlow2 代码块:"
73+
74+
#: ../../source/unit/dualbutton.rst:27
4875
msgid "|example.png|"
4976
msgstr ""
5077

51-
#: ../../source/refs/unit.dual_button.ref:6 70573ffaef754c14b4ae9ccf6fd0d84d
78+
#: ../../source/refs/unit.dual_button.ref:6
5279
msgid "example.png"
5380
msgstr ""
5481

55-
#: ../../source/unit/dualbutton.rst:25 30b098ce2f8e4266807df6d4c6b568be
56-
msgid "|dual_button_core_example.m5f2|"
57-
msgstr ""
82+
#: ../../source/unit/dualbutton.rst:29 ../../source/unit/dualbutton.rst:48
83+
#: ../../source/unit/dualbutton.rst:65
84+
msgid "Example output:"
85+
msgstr "示例输出:"
86+
87+
#: ../../source/unit/dualbutton.rst:31
88+
msgid "The button state is shown when a button event occurs."
89+
msgstr "按键事件发生时显示按键状态。"
90+
91+
#: ../../source/unit/dualbutton.rst:34
92+
msgid "MicroPython Example"
93+
msgstr "MicroPython 应用示例"
94+
95+
#: ../../source/unit/dualbutton.rst:37
96+
msgid "Button events and callbacks"
97+
msgstr "按键事件与回调"
5898

59-
#: ../../source/unit/dualbutton.rst:29 83aad7e1ede744fb9bed33325f057d3d
60-
msgid "class DualButton"
61-
msgstr "class DualButton"
99+
#: ../../source/unit/dualbutton.rst:39
100+
msgid ""
101+
"This example demonstrates how to use ``DualButtonUnit`` for button state,"
102+
" click, hold, and callback handling."
103+
msgstr "本示例演示如何使用 ``DualButtonUnit`` 处理按键状态、单击、长按和回调。"
104+
105+
#: ../../source/unit/dualbutton.rst:42 ../../source/unit/dualbutton.rst:59
106+
msgid "MicroPython Code Block:"
107+
msgstr "MicroPython 代码块:"
108+
109+
#: ../../source/unit/dualbutton.rst:50
110+
msgid "The button state is printed when the blue button event occurs."
111+
msgstr "蓝色按键事件发生时打印按键状态。"
112+
113+
#: ../../source/unit/dualbutton.rst:53
114+
msgid "Simple polling"
115+
msgstr "简单轮询"
62116

63-
#: ../../source/unit/dualbutton.rst:32 3fa1ce26926047c496cebf9b098e8888
64-
msgid "Constructors"
117+
#: ../../source/unit/dualbutton.rst:55
118+
msgid ""
119+
"This example demonstrates how to use ``SimpleDualButtonUnit`` to read the"
120+
" pins directly and poll debounced press and release edges without "
121+
"``tick()`` or callbacks."
65122
msgstr ""
123+
"本示例演示如何使用 ``SimpleDualButtonUnit`` 直接读取引脚,并在无需 "
124+
"``tick()`` 或回调的情况下轮询消抖后的按下和释放边沿。"
125+
126+
#: ../../source/unit/dualbutton.rst:67
127+
msgid "Press and release events for the blue and red buttons are printed."
128+
msgstr "打印蓝色和红色按键的按下与释放事件。"
129+
130+
#: ../../source/unit/dualbutton.rst:70
131+
msgid "**API**"
132+
msgstr "**API**"
133+
134+
#: ../../source/unit/dualbutton.rst:73
135+
msgid "DualButtonUnit"
136+
msgstr "DualButtonUnit"
66137

67-
#: ../../source/unit/dualbutton.rst:36 b5e33e5dd5dc4aec8029e597e93b55f2
68-
msgid "Create a DualButton object."
69-
msgstr "创建一个 DualButton 对象。"
138+
#: ../../source/unit/dualbutton.rst:77
139+
msgid "Create two full-featured button objects."
140+
msgstr "创建两个功能完整的按键对象。"
70141

71-
#: ../../source/unit/dualbutton.rst:39 ../../source/unit/dualbutton.rst:51
72-
#: 2812e94733484b8ba4a64f6159e44af9 2f455409a5484f8a9b6233bae1e6617c
73-
msgid "The parameters are:"
74-
msgstr "参数为:"
142+
#: ../../source/unit/dualbutton.rst
143+
msgid "Parameters"
144+
msgstr "参数"
75145

76-
#: ../../source/unit/dualbutton.rst:39 8f04b975133243d985b8def660c2dda7
77-
msgid "``IO1,IO2`` Define two key pins."
78-
msgstr "``IO1,IO2`` 定义两个按键引脚。"
146+
#: ../../source/unit/dualbutton.rst:79 ../../source/unit/dualbutton.rst:124
147+
msgid "Two button pin numbers."
148+
msgstr "两个按键的引脚号。"
79149

80-
#: ../../source/unit/dualbutton.rst:41 ../../source/unit/dualbutton.rst:53
81-
#: ../../source/unit/dualbutton.rst:62 ../../source/unit/dualbutton.rst:71
82-
#: 535410cab4a64eed9ea580707c2d6111 9dd1b574bbac48959c9314c06ee120c7
83-
#: afd7ecc56c80465cb047998a3f490a61 d5da378bf45a4018a6108668b530f331
84-
msgid "UIFLOW2:"
85-
msgstr "UiFlow2"
150+
#: ../../source/unit/dualbutton.rst
151+
msgid "Returns"
152+
msgstr "返回"
86153

87-
#: ../../source/unit/dualbutton.rst:43 9646a80afb9c426dbb23e9d220cec887
154+
#: ../../source/unit/dualbutton.rst:80
155+
msgid "The blue and red :class:`hardware.Button` objects."
156+
msgstr "蓝色和红色 :class:`hardware.Button` 按键对象。"
157+
158+
#: ../../source/unit/dualbutton.rst
159+
msgid "Return type"
160+
msgstr "返回类型"
161+
162+
#: ../../source/unit/dualbutton.rst:85
88163
msgid "|init.png|"
89164
msgstr ""
90165

91-
#: ../../source/refs/unit.dual_button.ref:8 4ebcb69655e74a6c97738241d49b6a27
166+
#: ../../source/refs/unit.dual_button.ref:8
92167
msgid "init.png"
93168
msgstr ""
94169

95-
#: ../../source/unit/dualbutton.rst:47 eb6a103b271344ceb745634c28997b08
96-
msgid "Methods"
97-
msgstr ""
170+
#: ../../source/unit/dualbutton.rst:89
171+
msgid "Return whether the button is currently being held."
172+
msgstr "返回按键当前是否处于长按状态。"
98173

99-
#: ../../source/unit/dualbutton.rst:55 7b0d9205428644fe970f7aa758b90ddf
174+
#: ../../source/unit/dualbutton.rst:93
100175
msgid "|get_status.png|"
101176
msgstr ""
102177

103-
#: ../../source/refs/unit.dual_button.ref:10 d3f954dc4b444a4d99191d2bc44747cf
178+
#: ../../source/refs/unit.dual_button.ref:10
104179
msgid "get_status.png"
105180
msgstr ""
106181

107-
#: ../../source/unit/dualbutton.rst:60 34839fd41d6c4147888851706e0eb272
108-
msgid "Execute the program when the key is pressed."
109-
msgstr "当按键被按下时执行程序。"
182+
#: ../../source/unit/dualbutton.rst:97
183+
msgid "Register a callback for the specified button event."
184+
msgstr "为指定的按键事件注册回调函数。"
185+
186+
#: ../../source/unit/dualbutton.rst:99
187+
msgid "Button event type."
188+
msgstr "按键事件类型。"
110189

111-
#: ../../source/unit/dualbutton.rst:64 48fae677686e4b2abe4d4060ac1a886d
190+
#: ../../source/unit/dualbutton.rst:100
191+
msgid "Function called when the event occurs."
192+
msgstr "事件发生时调用的函数。"
193+
194+
#: ../../source/unit/dualbutton.rst:104
112195
msgid "|setCallback.png|"
113196
msgstr ""
114197

115-
#: ../../source/refs/unit.dual_button.ref:12 5ccd4b3752bc4bb5ac0b87f9cf0d2264
198+
#: ../../source/refs/unit.dual_button.ref:12
116199
msgid "setCallback.png"
117200
msgstr ""
118201

119-
#: ../../source/unit/dualbutton.rst:69 1026a2891e3d4bc79d658720073828f3
202+
#: ../../source/unit/dualbutton.rst:108
203+
msgid "Poll the button state machine. Call this method regularly in the loop."
204+
msgstr "轮询按键状态机。请在循环中定期调用此方法。"
205+
206+
#: ../../source/unit/dualbutton.rst:110
120207
msgid ""
121-
"The polling method, placed in the loop function, constantly detects the "
122-
"state of the key."
123-
msgstr "轮询方法放置在 loop 函数中,持续检测按键的状态。"
208+
"Optional pin argument passed by an interrupt handler. Use ``None`` when "
209+
"polling from the loop."
210+
msgstr "中断处理程序传入的可选引脚参数。从循环中轮询时使用 ``None``。"
124211

125-
#: ../../source/unit/dualbutton.rst:73 6c83fa2343d94f77940e8dce85af4add
212+
#: ../../source/unit/dualbutton.rst:115
126213
msgid "|tick.png|"
127214
msgstr ""
128215

129-
#: ../../source/refs/unit.dual_button.ref:14 8c63aa1305ae4464a3804e08ed7accf1
216+
#: ../../source/refs/unit.dual_button.ref:14
130217
msgid "tick.png"
131218
msgstr ""
132219

220+
#: ../../source/unit/dualbutton.rst:118
221+
msgid "SimpleDualButtonUnit"
222+
msgstr "SimpleDualButtonUnit"
223+
224+
#: ../../source/unit/dualbutton.rst:122
225+
msgid "Create two :class:`SimpleButton` objects for direct polling."
226+
msgstr "创建两个用于直接轮询的 :class:`SimpleButton` 对象。"
227+
228+
#: ../../source/unit/dualbutton.rst:125
229+
msgid ""
230+
"Use low level as the active state when ``True``. Active-low inputs use an"
231+
" internal pull-up and active-high inputs use an internal pull-down."
232+
msgstr "为 ``True`` 时使用低电平作为有效状态。低电平有效输入使用内部上拉,高电平有效输入使用内部下拉。"
233+
234+
#: ../../source/unit/dualbutton.rst:128
235+
msgid ""
236+
"Time in milliseconds that an input must remain stable before generating "
237+
"an edge event. Set to ``0`` to disable debounce."
238+
msgstr "输入在生成边沿事件前必须保持稳定的时间,单位为毫秒。设为 ``0`` 可禁用消抖。"
239+
240+
#: ../../source/unit/dualbutton.rst:131
241+
msgid "The blue and red button objects."
242+
msgstr "蓝色和红色按键对象。"
243+
244+
#: ../../source/unit/dualbutton.rst:135
245+
msgid "SimpleButton"
246+
msgstr "SimpleButton"
247+
248+
#: ../../source/unit/dualbutton.rst:139
249+
msgid "Provide direct pin reads and debounced edge polling without callbacks."
250+
msgstr "提供无需回调的直接引脚读取和消抖边沿轮询。"
251+
252+
#: ../../source/unit/dualbutton.rst:141
253+
msgid ""
254+
"Call :meth:`SimpleButton.update` regularly before reading edge events. "
255+
"The :meth:`SimpleButton.value` and :meth:`SimpleButton.is_active` methods"
256+
" read the pin directly and do not require ``update()``."
257+
msgstr ""
258+
"读取边沿事件前需定期调用 :meth:`SimpleButton.update`。:meth:`SimpleButton.value` 和 "
259+
":meth:`SimpleButton.is_active` 方法会直接读取引脚,无需调用 ``update()``。"
260+
261+
#: ../../source/unit/dualbutton.rst:147
262+
msgid "Return the raw pin value."
263+
msgstr "返回原始引脚值。"
264+
265+
#: ../../source/unit/dualbutton.rst:149
266+
msgid "``0`` or ``1``."
267+
msgstr "``0`` 或 ``1``。"
268+
269+
#: ../../source/unit/dualbutton.rst:154
270+
msgid "Return whether the button is currently active according to ``active_low``."
271+
msgstr "根据 ``active_low`` 返回按键当前是否处于有效状态。"
272+
273+
#: ../../source/unit/dualbutton.rst:157
274+
msgid "``True`` when the button is active."
275+
msgstr "按键处于有效状态时返回 ``True``。"
276+
277+
#: ../../source/unit/dualbutton.rst:162
278+
msgid ""
279+
"Sample the pin and update the debounced edge state. Call this method once"
280+
" per loop iteration."
281+
msgstr "采样引脚并更新消抖后的边沿状态。每次循环迭代调用一次此方法。"
282+
283+
#: ../../source/unit/dualbutton.rst:167
284+
msgid ""
285+
"Return whether a debounced press was detected by the latest call to "
286+
":meth:`SimpleButton.update`."
287+
msgstr "返回最近一次调用 :meth:`SimpleButton.update` 是否检测到消抖后的按下事件。"
288+
289+
#: ../../source/unit/dualbutton.rst:174
290+
msgid ""
291+
"Return whether a debounced release was detected by the latest call to "
292+
":meth:`SimpleButton.update`."
293+
msgstr "返回最近一次调用 :meth:`SimpleButton.update` 是否检测到消抖后的释放事件。"
294+
295+
#~ msgid ""
296+
#~ "Use ``DualButtonUnit`` when click, double-"
297+
#~ "click, and hold detection or callbacks"
298+
#~ " are required."
299+
#~ msgstr "需要检测单击、双击、长按或使用回调时,请使用 ``DualButtonUnit``。"
300+
301+
#~ msgid "|dual_button_core_example.m5f2|"
302+
#~ msgstr ""
303+
304+
#~ msgid "class DualButton"
305+
#~ msgstr "class DualButton"
306+
307+
#~ msgid "Constructors"
308+
#~ msgstr ""
309+
310+
#~ msgid "The parameters are:"
311+
#~ msgstr "参数为:"
312+
313+
#~ msgid "``IO1,IO2`` Define two key pins."
314+
#~ msgstr "``IO1,IO2`` 定义两个按键引脚。"
315+
316+
#~ msgid "UIFLOW2:"
317+
#~ msgstr "UiFlow2"
318+
319+
#~ msgid "Methods"
320+
#~ msgstr ""
321+
322+
#~ msgid "Execute the program when the key is pressed."
323+
#~ msgstr "当按键被按下时执行程序。"
324+
325+
#~ msgid ""
326+
#~ "The polling method, placed in the "
327+
#~ "loop function, constantly detects the "
328+
#~ "state of the key."
329+
#~ msgstr "轮询方法放置在 loop 函数中,持续检测按键的状态。"

0 commit comments

Comments
 (0)