1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

長押ししてイベント発火させるボックスで、長押しのタイミングを分かるように改善してみた

Last updated at Posted at 2016-10-24

はじめに

以前取り上げた
Pepperのセンサーを長押ししてイベント発火させるボックスを作成してみた
でさいごに書いた指摘について対応してみた。

最初は、ソースを直す方向で「指定のセンサーが押されている状態かマルチスレッド回して監視して、経過時間すぎたらイベント発火で~」と構想(妄想)していたけど、

・イベント目前だし
・マルチスレッドの方法(できる、できない含め)の調査する時間ないし
・動作テスト(CPUぶん回し、メモリオーバーしないよね)の時間ないし

の状態で、「時間との戦いだ」モードに突入していたので、作成したボックスを改変せずに、「今あるもの」で知恵を絞ることにした。

フロー

で、作成したのが以下のフロー。
image1.png

「長押ししてイベント発火させるボックス」のアウトプットは、前回の記事を参照してください。

  1. アウトプットの状態ごとに「Switch Case」ボックスで分岐
  2. アウトプット(0)の場合、
    2.1. 「Eye LEDs YELLO」ボックスで「左目を黄色に光らせる」
    2.2.「Delay」ボックスで指定の長押し時間まで待機
    2.3. 「Delay」がアウトプットしたら(長押し時間が経過したら)「左目を青色に光らせる」
  3. アウトプット(1,2)の場合
    3.1 「Clear」ボックスで目の色をクリアにする
    3.2 「Delay」を停止

ようするに、
指定時間以上長押ししたら、目が青色に光るので、そのタイミングで押されている状態を解除すれば、イベント発火が必ず起りますよ!
というボックス配置にすることで、問題を解決しました!

ちなみに、「Clear」ボックスは既存ボックスには含まれていないので、自作です。

さいごに

このフローをダイアグラムボックスにして、各ボックスの設定を親からの継承にしておくと、色々と使い回しできると思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?