Routineとは
まずRoutineとは、「決まった手順」のことです。
例えば、「モーニング・ルーティン」は、朝起きたらやる「決まった手順」です。
- 起きる
- 歯磨き
- 朝食
- 着替える
同じように、Routineモジュールは、設定した時間でデジタル出力を切り替えることで、決まった手順を順番に実行することができます。
時間で切り替わる
RoutineモジュールとVIVIWARE Cell Message Board(以降、Message Board Cell)を使って、文字を順番に表示してみます。
プログラムはこのように作ります。
これは、Buttonを押している間、以下の手順ををくりかえし実行するプログラムです。
- 「HELLO」を1秒 表示
- 「VIVITA」を2秒 表示
- 「JAPAN」を0.5秒 表示
- ボタンが押されていればくりかえし(1.に戻る)
また、Routineモジュール内のLoopのスイッチをOnにすると、設定した手順をくりかえすことができます。
Runにtrueが入っていれば、最後の手順が実行されたあと、手順 1. から同じことをくりかえします。
Activateだけにデジタル信号をつなぐと・・・?
ここでは、ActivateだけでなくOn/OffにもRoutineモジュールをつないでいます。
On/Offに繋がないと、どうなるのでしょうか?
Routineモジュールで設定された手順をすべて実行しても、一番最後の信号(ここでは手順 3. )の時間に関係なく、文字がずっと表示され続けます。
Activateは切り替える役割を果たしますが、「文字を消す」という動作は実行できないからです。
そこで、最後の手順が実行されたあとに文字を消すために、Message BoardモジュールのActivateと、On/Offの両方に信号を入れています。
こうすることで、手順がすべて実行されるとOn/Offがfalseになるので、Message Board Cellに文字を消すことができます。
応用:時間を刻む
Routineモジュールで時間を刻んでみましょう。
1秒ごとに信号を出す(パルス)プログラムを作り、その信号をCountモジュールで数えます。
これで時間を刻むことができました。
応用:タイマー
時間を刻むプラグラムをさらに応用してみましょう。
プログラムはこのようになります。
SwitchモジュールのスイッチがOnのとき、カウントダウンします。
SwitchモジュールのスイッチがOffのときは、数えた数(Countモジュールの一番下に表示された数)をリセットします。
Countモジュールがカウントアップをしているので、Calculateモジュールで引き算をすることでカウントダウンに変えています。
Message Board Cellに数を表示して、タイマーの完成です!
おまけ
このままだと、目で見ないと0秒になったことが分からないので、音を鳴らすようにします。
時間が0秒になったことをCompareモジュールで判定して、Sound Playerモジュールに信号を送り、音を鳴らします。
これで便利なタイマーができました。
今回はシンプルな120秒(2分)のタイマーですが、時間を変えてみたり、他のときにも音を鳴らしてみたり、色々と改造して便利な機能をつけてみてください!
Routineとは
まずRoutineとは、「決まった手順」のことです。
例えば、「モーニング・ルーティン」は、朝起きたらやる「決まった手順」です。
- 起きる
- 歯磨き
- 朝食
- 着替える
同じように、Routineモジュールは、設定した時間でデジタル出力を切り替えることで、決まった手順を順番に実行することができます。
時間で切り替わる
RoutineモジュールとVIVIWARE Cell Message Board(以降、Message Board Cell)を使って、文字を順番に表示してみます。
プログラムはこのように作ります。
これは、Buttonを押している間、以下の手順ををくりかえし実行するプログラムです。
- 「HELLO」を1秒 表示
- 「VIVITA」を2秒 表示
- 「JAPAN」を0.5秒 表示
- ボタンが押されていればくりかえし(1.に戻る)
また、Routineモジュール内のLoopのスイッチをOnにすると、設定した手順をくりかえすことができます。
Runにtrueが入っていれば、最後の手順が実行されたあと、手順 1. から同じことをくりかえします。
Activateだけにデジタル信号をつなぐと・・・?
ここでは、ActivateだけでなくOn/OffにもRoutineモジュールをつないでいます。
On/Offに繋がないと、どうなるのでしょうか?
Routineモジュールで設定された手順をすべて実行しても、一番最後の信号(ここでは手順 3. )の時間に関係なく、文字がずっと表示され続けます。
Activateは切り替える役割を果たしますが、「文字を消す」という動作は実行できないからです。
そこで、最後の手順が実行されたあとに文字を消すために、Message BoardモジュールのActivateと、On/Offの両方に信号を入れています。
こうすることで、手順がすべて実行されるとOn/Offがfalseになるので、Message Board Cellに文字を消すことができます。
応用:時間を刻む
Routineモジュールで時間を刻んでみましょう。
1秒ごとに信号を出す(パルス)プログラムを作り、その信号をCountモジュールで数えます。
これで時間を刻むことができました。
応用:タイマー
時間を刻むプラグラムをさらに応用してみましょう。
プログラムはこのようになります。
SwitchモジュールのスイッチがOnのとき、カウントダウンします。
SwitchモジュールのスイッチがOffのときは、数えた数(Countモジュールの一番下に表示された数)をリセットします。
Countモジュールがカウントアップをしているので、Calculateモジュールで引き算をすることでカウントダウンに変えています。
Message Board Cellに数を表示して、タイマーの完成です!
おまけ
このままだと、目で見ないと0秒になったことが分からないので、音を鳴らすようにします。
時間が0秒になったことをCompareモジュールで判定して、Sound Playerモジュールに信号を送り、音を鳴らします。
これで便利なタイマーができました。
今回はシンプルな120秒(2分)のタイマーですが、時間を変えてみたり、他のときにも音を鳴らしてみたり、色々と改造して便利な機能をつけてみてください!