Se sabe comúnmente que las personas no pueden percibir los cambios cuando suceden por debajo de 10 ms después de su acción. Esta capacidad de respuesta dará como resultado una experiencia que recientemente se ha descrito principalmente como "ágil". Es notable, pero para los usuarios es difícil ponerle un nombre.
Entonces, si quieres la perfección, tómate unos 15 ms de retraso. Si quieres realmente bien, tómate 100 ms de retraso. 100ms son 50ms en promedio, y ciertamente pasarán por las personas.
La aplicación y el tiempo de respuesta esperado también son vitales. Una puerta corredera o elevador tiene una tolerancia muy grande (ya que el objeto físico siempre tomará mucho más tiempo) mientras que las interfaces de la máquina expendedora de boletos no se dan en ningún momento.
El límite superior para la votación sería de alrededor de 1500 ms. Por allí la gente siempre notará que es lento.
Estos datos son una experiencia puramente personal como jugador y programador. YMMV y recuerde que probarlo usted mismo es la mejor manera de descubrir cómo se siente. La única respuesta "científica" es <10 milisegundos, más allá de eso se trata de la capacidad de percibir el retraso (que varía según la persona y el momento) y la tolerancia del usuario.
Como nota al margen, puede intentar fluctuar los retrasos para ahorrar tiempo de batería o CPU cuando no se utiliza la interfaz. La acción del usuario, más rápido es el sondeo. Cuando la aplicación está funcionando, sondea muy lentamente. ¡Es mejor sondear cuando importa!
loop()
es bastante lento (quiero decir, demasiado lento para poder dar retroalimentación lo suficientemente rápida al usuario final), posiblemente podría usar un ISR en el cambio de nivel de pin y proporcionar retroalimentación inmediata (si esto puede calcularse rápidamente) al usuario , o darle comentarios temporales (por ejemplo, LED encendido) para decirle que su solicitud ha sido reconocida y se procesará en breve (enloop()
); permitiríaloop()
establecer algunabool
variable global en el ISR.