クリエイター手抜きプロジェクト[522]IoT IchigoLatte編 論理演算を使ってLEDを点滅させる/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,800文字)



今回は、乱数と論理演算を使って、LEDを点滅させてみます。

前回のプログラムは、以下のようになっていました。キーを押すとプログラムが終了します。しかし、0.5秒のウェイトが2か所入っているのでキーを押しても反応が悪く、すぐに終了しません。

while(1){
led(1);
sleep(500);
led(0);
sleep(500);
if(inkey()>0){exit();}
}

もう少しキー入力の反応をよくしてみましょう。ここで登場するのが論理演算です。この連載でもIchigoJamのプログラムの時に説明していますので、論理演算に関しては過去の連載を見てください。

今回使用するのは論理積(AND, &)です。JavaScriptでは論理積を求めるのは&記号です。IchigoLatteではインタラクティブモードにすることで、すぐに結果を確認できますので、やってみましょう。




まず、シェルでmsと入力しリターンキーを押します。するとインタラクティブモードになります。

ms>

プロンプトがlash>からms>に変わっていればOKです。それでは論理積演算を行います。まず、0と0の論理積を取ってみましょう。以下のように入力すると、0が表示されます。つまり0と0の論理積は0です。

ms>0&0
0

次に、0と1の論理積を取ってみましょう。

ms>0&1
0

やはり0になります。次に、1と1の論理積を取ってみましょう。

ms>1&1
1

今度は1になりました。最後に、2と1の論理積を取ってみましょう。

ms>2&1
0

0になりました。ちなみに、3&1なら1になります。

論理積はビット単位での演算です。論理積は両方のビットが1の場合のみ1になります。以下は、4ビット単位で見たそれぞれのビットの状態です。

●0&0の場合
0000
0000
--------
0000

●0&1の場合
0000
0001
--------
0000

●1&1の場合
0001
0001
--------
0001

●2&1の場合
0010
0001
--------
0000

数値と1との論理積を取ると奇数なら必ず1に、偶数なら必ず0になります。

これを利用してLEDを点滅させてみましょう。あらかじめ変数を用意しておき、1ずつ足していきます。led()でパラメーターを指定する場合、変数と1との論理積を取ります。こうすることで0と1が交互にled()のパラメーターとして渡されます。

以下のプログラムを実行すると、LEDが点滅します。また、0.5秒間隔でキー入力を受け付けるようになるので、少しキーを押したときの反応がよくなります。

var i=0;
while(1){
led(i&1);
sleep(500);
i=i+1;
if(inkey()>0){exit();}
}

これでもキーの反応はいまいちです。もちろん解決する方法はあります。

ただ、その前にいくつかステップを踏んで説明しないといけません。そのためには関数やイベントハンドラ、タイマーについて知る必要があります。

これに関しては後の連載で解説していきます。


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

キャプテンハーロック……アニメも映画も見たし、漫画も全部持っている(はず。愛蔵版とかも)。

小学生の時見たアニメのキャプテンハーロックのアルカディア号と、その後のキャプテンハーロック無限軌道SSXでは、アルカディア号の形状が違っていた。

どうして違うのか? と疑問だった。元祖キャプテンハーロックは未完で、実質ブツ切れ状態。それがウン十年経過して、すべての矛盾と他の物語との整合性を取ろうとしているのがキャプテンハーロック次元航海かな、と。

アルカディア号の形状の違いは他の物語で、そういう言い訳をするのか、と感心した。まあ言い訳もアイデアだねぇ、と。

アルカディア号は敵の戦艦に向かって突っ込んで破壊するという、そんな事したら自分の船壊れるやん、みたいなシーンがあるけど、巧妙な言い訳により解決。いくら体当たりして船を壊しても問題ない……。

そう言えば、星新一だったかのショートショートで、言い訳だけで平社員から社長になってしまう物語があった。今の時代、資金を集めるにも口達者でないと駄目なんだろうなあ。

・キャプテンハーロック 次元航海(7)
https://www.amazon.co.jp/dp/4253237274/

・キャプテンハーロック わが青春のアルカディア 無限軌道SSX
https://www.amazon.co.jp/dp/B005FL1IKU/

・キャプテンハーロック ニーベルングの指環
https://ja.wikipedia.org/wiki/ニーベルングの指環_(漫画)

・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/