行動後10ミリ秒以内に変化が起きると、人は変化を知覚できないことが一般に知られています。この応答性により、最近はほとんど「スピーピー」と表現されるエクスペリエンスが実現します。目立ちますが、ユーザーにとっては名前を付けるのは難しいです。
したがって、完璧が必要な場合は、約15msの遅延をとってください。本当に良かったら、100msの遅延を取ってください。100ミリ秒は平均で50ミリ秒であり、人々にとっては確実に合格します。
アプリケーションと予想される応答時間も重要です。引き戸やエレベーターには非常に大きな許容差が与えられます(物理的なオブジェクトは常により多くの時間がかかるため)一方で、券売機のインターフェースはまったく与えられません。
ポーリングの上限は約1500msです。周りでは人々はいつもそれが遅いことに気づくでしょう。
このデータは、ゲーマーおよびプログラマーとしての純粋に個人的な経験です。YMMVを試してみて、自分で試してみるのが一番いい方法だと思います。唯一の「科学的」な答えは10ミリ秒未満であり、それを超えるのは、遅延(人や瞬間によって異なります)とユーザーの許容範囲を認識する能力です。
補足として、インターフェースが使用されていないときにバッテリーまたはCPU時間を節約するために、遅延を変動させることを試みることができます。ユーザーのアクション、より速いポーリング。アプリケーションが実行しているときは、非常にゆっくりとポーリングします。必要に応じて投票することをお勧めします。
loop()
かなり遅い場合(つまり、エンドユーザーに十分な速度でフィードバックを提供するには遅すぎる場合)、ピンレベルの変更時にISRを使用して、ユーザーに即時フィードバック(これが高速に計算できる場合)を提供できます、または一時的にフィードバックを送って(LEDが点灯するなど)、要求が認識され、まもなく処理されることを伝えます(loop()
)。ISRでloop()
いくつかのグローバルbool
変数を設定することで許可します。