クリエイター手抜きプロジェクト[527]IoT IchigoLatte編 イベントハンドラとタイマーを使う
── 古籏一浩 ──

投稿:  著者:



今回は、LED点滅プログラムを改良して、キーが押されたらすぐに終了できるようにします。そこで必要となるのが、イベントハンドラとタイマーです。

まず、イベントハンドラですが、IchigoLatteには以下のふたつのイベント発生時に、関数を呼び出すことができます。

・キー入力時
・ボタンが押された/離された





キー入力時に関数を呼び出すには、setKprs()を使います。パラメーターには、呼び出す関数名を指定します。なお、関数名は " で囲んではいけません。例えばkeyという名前の関数を呼び出すには、以下のようにします。

setKprs(key);

ボタンが押された/離された時に関数を呼び出すには、setBprs()を使います。パラメーターには呼び出す関数名を指定します。例えば、btnという名前の関数を呼び出すには以下のようにします。

setBprs(btn);

それでは、キーが押されたらLEDの点滅処理を終了するように、プログラムを書いてみましょう。IchigoLatteでプログラムを終了させるには、exit()を使います。

ここまでの知識で作成すると、以下のようになります。

function key(){
exit();
}
setKprs(key);
var i=0;
while(1){
led(i&1);
sleep(500);
i=i+1;
}

これで問題なく動きそうなものですが、実際に実行してみるとキーを押してもプログラムは終了しません。終了しないのは、while(){}を使って処理をまわした場合、イベントが発生しないからです。

イベントが発生しないので、イベントハンドラで定義した関数も呼び出されません。

これを回避するにはタイマーを使います。一般的なJavaScriptには、タイマー処理として、setTimeout()、setInterval()、requestAnimationFrame()があります。

IchigoLatteでは、setTimeout()と同様のsetTout()があります。名前が短くなっているのは、名前が7文字までという制限のためです。

setTout()は最初のパラメーターに呼び出す関数名、2番目のパラメーターには関数を呼び出すミリ秒を指定します。例えば、以下のようにするとmain関数を1秒後に呼び出します。

setTout(main,1000);

タイマーを使ってLEDを点滅させる関数を呼び出せば、イベントハンドラも呼び出されるようになります。実際のプログラムは、以下のようになります。1秒間隔でLEDが点滅を繰り返し、キーを押すとすぐにプログラムが終了します。

function key(){
exit();
}
var i=0;
function main(){
led(i&1);
setTout(main,500);
}
setKprs(key);
main();

これでようやくプログラムが完成です。次回は、入出力ポートを使ったプログラムを作成してみましょう。


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/


仮想通貨(暗号通貨) NHKの昼のニュースでも、ビットコインが高騰しているので注意するようにと流れるほど、メジャーになったみたい。10BTCくらい持っていれば、今頃ウハウハだったのに……。XEMでもよかったんだけど。来年の流行語はコイン長者……かな。

・InDesign CS6 JavaScript Reference
http://www.openspc2.org/reibun/InDesignCS6/ref/


・Photoshop CS6 JavaScript Reference
http://www.openspc2.org/reibun/PhotoshopCS6/ref/


・Illustrator CS6 JavaScript Reference
http://www.openspc2.org/reibun/IllustratorCS6/ref/


・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936


[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/


・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591

https://www.amazon.co.jp/dp/4844397605


・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP

http://digiconcart.com/dccartstore/cart/info/2561/218591


・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/


・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/


・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/


・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/


・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/