@@ -73,7 +73,9 @@ ButtonThread::ButtonThread() : OSThread("Button")
73
73
userButton.setDebounceMs (1 );
74
74
userButton.attachDoubleClick (userButtonDoublePressed);
75
75
userButton.attachMultiClick (userButtonMultiPressed, this ); // Reference to instance: get click count from non-static OneButton
76
- #ifndef T_DECK // T-Deck immediately wakes up after shutdown, so disable this function
76
+ #if !defined(T_DECK) && \
77
+ !defined ( \
78
+ ELECROW_ThinkNode_M2) // T-Deck immediately wakes up after shutdown, Thinknode M2 has this on the smaller ALT button
77
79
userButton.attachLongPressStart (userButtonPressedLongStart);
78
80
userButton.attachLongPressStop (userButtonPressedLongStop);
79
81
#endif
@@ -85,11 +87,10 @@ ButtonThread::ButtonThread() : OSThread("Button")
85
87
// Some platforms (nrf52) have a SENSE variant which allows wake from sleep - override what OneButton did
86
88
pinMode (BUTTON_PIN_ALT, INPUT_PULLUP_SENSE);
87
89
#endif
88
- userButtonAlt.attachClick (userButtonPressed );
90
+ userButtonAlt.attachClick (userButtonPressedScreen );
89
91
userButtonAlt.setClickMs (BUTTON_CLICK_MS);
90
92
userButtonAlt.setPressMs (BUTTON_LONGPRESS_MS);
91
93
userButtonAlt.setDebounceMs (1 );
92
- userButtonAlt.attachDoubleClick (userButtonDoublePressed);
93
94
userButtonAlt.attachLongPressStart (userButtonPressedLongStart);
94
95
userButtonAlt.attachLongPressStop (userButtonPressedLongStop);
95
96
#endif
@@ -200,7 +201,12 @@ int32_t ButtonThread::runOnce()
200
201
break ;
201
202
}
202
203
203
- case BUTTON_EVENT_PRESSED1: {
204
+ case BUTTON_EVENT_PRESSED_SCREEN: {
205
+ // turn screen on or off
206
+ screen_flag = !screen_flag;
207
+ if (screen)
208
+ screen->setOn (screen_flag);
209
+ break ;
204
210
}
205
211
206
212
case BUTTON_EVENT_DOUBLE_PRESSED: {
@@ -217,10 +223,6 @@ int32_t ButtonThread::runOnce()
217
223
break ;
218
224
}
219
225
220
- case BUTTON_EVENT_DOUBLE_PRESSED1: {
221
- break ;
222
- }
223
-
224
226
case BUTTON_EVENT_MULTI_PRESSED: {
225
227
LOG_BUTTON (" Mulitipress! %hux" , multipressClickCount);
226
228
switch (multipressClickCount) {
@@ -236,20 +238,10 @@ int32_t ButtonThread::runOnce()
236
238
#elif defined(ELECROW_ThinkNode_M2)
237
239
case 3 :
238
240
LOG_INFO (" 3 clicks: toggle buzzer" );
239
- pinMode (M2_buzzer, OUTPUT);
240
-
241
- if (!buzzer_flag) {
242
- buzzer_test ();
243
- BEEP_STATE = true ;
244
-
245
- analogWriteFrequency (4000 );
246
- } else {
247
- currentState = OFF;
248
- isBuzzing = false ;
249
- cont = 0 ;
250
- BEEP_STATE = false ;
251
- }
252
241
buzzer_flag = !buzzer_flag;
242
+ if (buzzer_flag) {
243
+ playBeep ();
244
+ }
253
245
break ;
254
246
#endif
255
247
@@ -301,22 +293,6 @@ int32_t ButtonThread::runOnce()
301
293
break ;
302
294
}
303
295
304
- case BUTTON_EVENT_LONG_PRESSED1: {
305
- currentState = OFF;
306
- isBuzzing = false ;
307
- cont = 0 ;
308
- BEEP_STATE = false ;
309
- pinMode (18 , INPUT);
310
- screen->setOn (false );
311
- delay (1000 );
312
- pinMode (1 , OUTPUT);
313
- digitalWrite (1 , LOW);
314
- pinMode (6 , OUTPUT);
315
- digitalWrite (6 , LOW);
316
-
317
- break ;
318
- }
319
-
320
296
#ifdef BUTTON_PIN_TOUCH
321
297
case BUTTON_EVENT_TOUCH_LONG_PRESSED: {
322
298
LOG_BUTTON (" Touch press!" );
@@ -341,113 +317,6 @@ int32_t ButtonThread::runOnce()
341
317
return 50 ;
342
318
}
343
319
344
- void ButtonThread::buzzer_test ()
345
- {
346
- currentState = SHORT_BEEP; // 初始化状态
347
- stateStartTime = millis (); // 获取当前时间
348
- }
349
-
350
- void ButtonThread::buzzer_updata ()
351
- {
352
- unsigned long currentTime = millis (); // 获取当前时间
353
- switch (currentState) {
354
- case SHORT_BEEP:
355
- if (isBuzzing) {
356
- // 如果正在响,检查时间
357
- if (currentTime - stateStartTime >= beepDuration) {
358
- // 停止蜂鸣器
359
- analogWriteFrequency (4000 );
360
- analogWrite (M2_buzzer, 0 );
361
- stateStartTime = currentTime; // 记录停的时间
362
- isBuzzing = false ; // 更新状态
363
- }
364
- } else {
365
- // 如果未响,检查时间
366
- if (currentTime - stateStartTime >= 200 ) {
367
- // 启动蜂鸣器
368
- if (cont == 3 ) {
369
- currentState = LONG_BEEP;
370
- cont = 0 ;
371
- isBuzzing = false ;
372
- } else {
373
- analogWriteFrequency (4000 );
374
- analogWrite (M2_buzzer, 127 );
375
- isBuzzing = true ; // 更新状态
376
- cont = cont + 1 ;
377
- }
378
- stateStartTime = currentTime; // 记录响的时间
379
- }
380
- }
381
- break ;
382
- case LONG_BEEP:
383
- if (isBuzzing) {
384
- // 如果正在响,检查时间
385
- if (currentTime - stateStartTime >= longBeepDuration) {
386
- // 停止蜂鸣器
387
- analogWriteFrequency (4000 );
388
- analogWrite (M2_buzzer, 0 );
389
- stateStartTime = currentTime; // 记录停的时间
390
- isBuzzing = false ; // 更新状态
391
- }
392
- } else {
393
- // 如果未响,检查时间
394
- if (currentTime - stateStartTime >= 200 ) {
395
- // 启动蜂鸣器
396
- if (cont == 3 ) {
397
- currentState = SHORT_BEEP1;
398
- cont = 0 ;
399
- isBuzzing = false ;
400
- } else {
401
- analogWriteFrequency (4000 );
402
- analogWrite (M2_buzzer, 127 );
403
- isBuzzing = true ; // 更新状态
404
- cont = cont + 1 ;
405
- }
406
- stateStartTime = currentTime; // 记录响的时间
407
- }
408
- }
409
- break ;
410
- case SHORT_BEEP1:
411
- if (isBuzzing) {
412
- // 如果正在响,检查时间
413
- if (currentTime - stateStartTime >= beepDuration) {
414
- // 停止蜂鸣器
415
- analogWriteFrequency (4000 );
416
- analogWrite (M2_buzzer, 0 );
417
- stateStartTime = currentTime; // 记录停的时间
418
- isBuzzing = false ; // 更新状态
419
- }
420
- } else {
421
- // 如果未响,检查时间
422
- if (currentTime - stateStartTime >= 200 ) {
423
- // 启动蜂鸣器
424
- if (cont == 3 ) {
425
- currentState = WAIT;
426
- cont = 0 ;
427
- isBuzzing = false ;
428
- } else {
429
- analogWriteFrequency (4000 );
430
- analogWrite (M2_buzzer, 127 );
431
- isBuzzing = true ; // 更新状态
432
- cont = cont + 1 ;
433
- }
434
- stateStartTime = currentTime; // 记录响的时间
435
- }
436
- }
437
- break ;
438
- case WAIT:
439
- if (currentTime - stateStartTime >= pauseDuration) {
440
- buzzer_test ();
441
- }
442
- break ;
443
- case OFF:
444
- break ;
445
- default :
446
- // 其他状态处理
447
- break ;
448
- }
449
- }
450
-
451
320
/*
452
321
* Attach (or re-attach) hardware interrupts for buttons
453
322
* Public method. Used outside class when waking from MCU sleep
@@ -573,13 +442,6 @@ void ButtonThread::userButtonPressedLongStart()
573
442
}
574
443
}
575
444
576
- void ButtonThread::userButtonPressedLongStart1 ()
577
- {
578
- if (millis () > c_holdOffTime) {
579
- btnEvent = BUTTON_EVENT_LONG_PRESSED1;
580
- }
581
- }
582
-
583
445
void ButtonThread::userButtonPressedLongStop ()
584
446
{
585
447
if (millis () > c_holdOffTime) {
0 commit comments