Phát hiện button được nhấn 2 hoặc 3 lần liên tiếp để xử lý một công việc

Minh có 1 project , cần phát hiện button được nhấn 2 hoặc 3 lần liên tiếp để xử lý một công việc . Mọi người có ý tưởng gì hay hơn việc dùng Timer xử lý vấn đề này không ạ

Bạn làm web hay desktop app, mobile app

2 Likes

Bản chất của việc phát hiện nhấn đơn - đôi - tam hoặc hơn nữa là việc xử lý thời gian giữa các lần nhấn. Nếu sự kiện có hỗ trợ sẵn thì không phải mất công, còn sự kiện không có thì dùng Timer thôi. Bạn chả thể tối ưu mà không dùng Timer (hoặc tương đương).
Lấy thời gian của hệ thống trừ cho nhau giữa các lần nhấn cũng được, nhưng nếu hệ thống đổi thời gian trong khi đang nhấn thì sẽ gây sai lệch. Tối ưu nhưng có thể có vấn đề.
Nói chung cho tất cả nền tảng phát triển là thế.

4 Likes

Bạn làm 1 biến boolean xác định đang xử lý.
Nếu đang xử lý thì bấm vào cũng không làm gì nữa.

3 Likes

mình làm nhúng , mạch về IOT bạn ạ

mình cảm ơn góp ý của bạn ạ

Không thích dùng phần mềm thì xài phần cứng, gắn thêm tụ trở vào.


Dùng Flipflop, Opamp hoặc mạch RC.

Về mặt phần mềm thì lúc xử lý interrupt IO nhớ disable ngắt đi, giảm bớt interrupt chồng. Ngoài ra có thể bỏ Timer bằng cách tạo debounce array, lấy mẫu nhiều lần theo số lần quét của main loop.

Thực tế thì người ta có thể áp dụng cả phân cứng lẫn phần mềm để User có trải nghiệm tốt nhất.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?