2024年11月7日
002-1.NXT ソフトウェア入門-第2回「センサ入力のプログラム」
レゴマインドストームNXTのプログラム開発環境「NXTソフトウェア」について紹介していくコーナーです。
NXTソフトウェアにはすでに「ヘルプ」という立派な解説書がインストールされていますので、
ここではそれに載っていない部分に触れていきたいと思います今回はセンサについてです
(文/松原 拓也)。
◆ 車の基本形

本題に入る前に、プログラムの「分岐」について補足で
説明します。
プログラムの「分岐」というのは、文字どおり
処理が枝分かれをすることです。
図にすると、このような
イメージです。
分かれ道に立っているのが、「条件」になります。

ではNXTソフトウェアでの「条件」とは何か?
実際に分岐のブロックを置いてみましょう。
名前は「スイッチ」ブロックと呼びます。
なお、スイッチ(switch)という言葉には
「切り替え」るという意味もあります。

ためしに作ったのがこのプログラムです。
NXTボタンを押す(入力ボタンをぶつける)と
音が鳴るというプログラムです。
条件にはこの他に各センサや数値との比較など、
多く種類があります。
ここでは分岐の条件は「NXTボタン」にしました。
「v」のようなマークは「○」のことで、
条件がYESという意味です。そして、
「x」は条件がNOという意味になります。

条件を照らし合わせるのは、ほんの一瞬です。
つまり今の状態だと、
NXTボタンを1回確認しただけでプログラムが終わってしまう
のです。
それでは困るので、分岐を何度も繰り替えすようにします。

ここで登場するのが「ループ」ブロックです。
「ループ(loop)」とは「輪」とか「繰り返す」という意味です。

これで、スイッチブロックが何度も処理されるようになりました。
[DOWNLOAD]作成したプログラム(NXTソフトウェア用)
スイッチブロックとループブロックについての解説は以上です。
◆ 回転センサーブロック

いよいよ本題の「センサ」の紹介です。
まず、モータをポートA(出力ポート)につないでください。
モータの中にもセンサが入っていますので、
これを読み取ってみたいと思います。

「回転センサー」ブロックを選択します。

「回転センサー」ブロックを配置しました。

たとえば、
回転センサーブロックの値を表示したいとすると、
「表示」ブロックを使います。
ただし、そのままでは「つなげません」。
数値の形式をテキストの形式に変えないといけません。

2つのブロックの間に「数値テキスト変換」
ブロックを入れ、両者をつなぎました。

次に先に紹介した「ループ」ブロック を置きます。

右の3つのブロックをループの中へ入れます。

これで完成です。
[DOWNLOAD]作成したプログラム(NXTソフトウェア用)

では、実行してみましょう。
インテリジェントブロックの画面に数字が表示されました。
指でタイヤを回すと
数値が増えたり減ったりします。
この数値は「角度」になっています。
ためしに90度くらい回してみると、
90に近い値が表示されると思います。
ちなみに逆方向に回しても角度は増えていきます。
これは実際にはマイナスの角度なのですが、
符号が取り除かれているためです。
この回転センサーを応用すれば、
正確にロボットを動かすことができます。
◆ 電卓プログラム改良版

前回(第1回目)に紹介した電卓プログラムを改良してみました。
ポートAとポートBにモータをつないでください。

ポートAのモータを回すと左の値が変わり、
ポートBのモータを回すと左の値が変わります。
NXTボタンの入力ボタン(四角いボタン)を押すと
2つ値が足されます。
これで前回よりも数値が入力しやすくなったのではないで
しょうか。
[DOWNLOAD]作成したプログラム(NXTソフトウェア用)
次回は出力の機能について紹介してみたいと思います。
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。