Während es möglich und manchmal wünschenswert ist, Pin-Wechsel-Interrupts zum Lesen des Status von Tasten zu verwenden, ist es einfacher, den Status von Tasten abzufragen loop()
. Dies ist eine häufig verwendete Technik.
Wenn Sie loop()
schnell genug ausführen, werden immer Tastendrücke abgefangen, und der Benutzer kann keine Verzögerung oder Verzögerung feststellen.
Es ist möglich, dass Ihre Schleife so lange dauert, bis eine Verzögerung oder Verzögerung wahrgenommen wird.
Die Frage ist, wie lange es im Allgemeinen dauern würde, bis ein Benutzer dies sieht.
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.Antworten:
Die kurze Antwort lautet, dass Sie 100 Millisekunden Zeit haben , um dem Benutzer zu antworten, wenn Sie möchten, dass er spürt, dass die Aktion sofort ausgeführt wurde.
Laut Jacob Nielsen in seinem Buch Usability Engineering aus dem Jahr 1993, das als wichtige Referenz für die Benutzerfreundlichkeit und Benutzererfahrung von Systemen gilt:
Er erwähnt auch, dass dieser grundlegende Rat bezüglich der Reaktionszeiten seit vielen Jahrzehnten ungefähr gleich ist [Miller 1968; Card et al. 1991].
Ich habe dieses Zitat aus diesem Artikel entnommen: Reaktionszeiten: Die 3 wichtigen Grenzen , ebenfalls von Jacob Nielsen geschrieben.
Beachten Sie, dass Sie in dieser Zeit alle Zeit einplanen müssen, die zum Lesen des Tastendrucks und zum Feedback an den Benutzer benötigt wird.
Andere Schwellenwerte für die Antwortzeit, die für die Benutzererfahrung wichtig sind, stammen aus derselben Quelle, wurden jedoch vom OP nicht direkt erwähnt:
quelle
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!
quelle