Es ist allgemein bekannt, dass Menschen Veränderungen nicht wahrnehmen können, wenn sie weniger als 10 ms nach ihrer Aktion auftreten. Diese Reaktionsfähigkeit wird zu einer Erfahrung führen, die in letzter Zeit meist als "bissig" beschrieben wurde. Es fällt auf, aber für Benutzer ist es schwierig, einen Namen darauf zu setzen.
Wenn Sie also Perfektion wünschen, nehmen Sie sich etwa 15 ms Zeit. Wenn Sie wirklich gut wollen, nehmen Sie 100 ms Verzögerung. 100 ms sind durchschnittlich 50 ms und werden sicherlich für Menschen gelten.
Die Anwendung und die erwartete Reaktionszeit sind ebenfalls von entscheidender Bedeutung. Eine Schiebetür oder ein Aufzug haben eine sehr große Toleranz (da das physische Objekt immer viel mehr Zeit benötigt), während die Schnittstellen von Ticketautomaten zu keinem Zeitpunkt angegeben werden.
Die Obergrenze für die Abfrage würde bei etwa 1500 ms liegen. Dort werden die Leute immer bemerken, dass es langsam ist.
Diese Daten sind rein persönliche Erfahrungen als Spieler und Programmierer. YMMV und denken Sie daran, dass es der beste Weg ist, herauszufinden, wie es sich anfühlt, wenn Sie es einfach selbst ausprobieren. Die einzige "wissenschaftliche" Antwort sind die <10 Millisekunden. Darüber hinaus geht es um die Fähigkeit, die Verzögerung (die je nach Person und Moment variiert) und die Toleranz des Benutzers wahrzunehmen.
Als Randnotiz können Sie versuchen, die Verzögerungen zu schwanken, um Batterie- oder CPU-Zeit zu sparen, wenn die Schnittstelle nicht verwendet wird. Je Benutzeraktion, desto schneller die Abfrage. Wenn die Anwendung es tut, wählen Sie sehr langsam ab. Besser abstimmen, wenn es darauf ankommt!
loop()
eher langsam sind (ich meine, zu langsam, um dem Endbenutzer schnell genug Feedback geben zu können), können Sie möglicherweise einen ISR für die Änderung der PIN-Ebene verwenden und dem Benutzer sofort Feedback geben (wenn dies schnell berechnet werden kann) oder geben Sie ihm vorübergehend eine Rückmeldung (z. B. LED leuchtet), um ihm mitzuteilen, dass seine Anfrage erkannt wurde und in Kürze (inloop()
) bearbeitet wird ; Sie würden lassen,loop()
indem Sie eine globalebool
Variable in der ISR setzen.