NXC センサー値関連のデバッグ [Mindstorm]
NXCでセンサー値を読み取りながらプログラムを制御しようとするとき、思うように動かないことがある。単純な値の勘違いから、照明等の環境の違いによるセンサー値と閾値との関係が変化したことによる場合もある。
こんな場合は、センサー値を表示させてしまうとよい。
TextOut(0,LCD_LINE1,"TOUCH=");
NumOut(60,LCD_LINE1,SENSOR_1);
NumOut(90,LCD_LINE1,i);
これは、i の値による分岐を確かめている最中のコードだが、このようなコードを追加してチェックすると良い。
これで正常に動作したら、//でコメントアウトして動作を確かめ、その後に行を削除してしまえばよい。これで余計なコードが残らないで済む。
こんな場合は、センサー値を表示させてしまうとよい。
TextOut(0,LCD_LINE1,"TOUCH=");
NumOut(60,LCD_LINE1,SENSOR_1);
NumOut(90,LCD_LINE1,i);
これは、i の値による分岐を確かめている最中のコードだが、このようなコードを追加してチェックすると良い。
これで正常に動作したら、//でコメントアウトして動作を確かめ、その後に行を削除してしまえばよい。これで余計なコードが残らないで済む。
NXC コンパイラのエラー [Mindstorm]
生徒にプログラムを入力させていると様々なエラーを起こしてくれる。
もっとも多いのが
① line n : Error : ";" expected
で、";"が無いから入れてね というメッセージだが、expectedの意味がわからない生徒も多い。
やはり英語は重要だ。
ここの問題は、本当に";"が無いのはn行目ではなく、n-1行目であることだ。コンパイラがn-1行目を表示すれば良いのだろうが、他のエラーを考えればそうも行かないのだろう。
n-1行目の末尾を確認して、";"がない、
やっかいだったのが、
② line n : Error : Undefined Identifier 0
で、Googleで調べても何も出てこなかった。
これが出た行を1行ずつコメントアウトしてコンパイルし、エラーの原因となっているコマンドを確定し、ここを「入力し直したら」エラーが消えた。
なんだかわからない。コードの関係かな??
もっとも多いのが
① line n : Error : ";" expected
で、";"が無いから入れてね というメッセージだが、expectedの意味がわからない生徒も多い。
やはり英語は重要だ。
ここの問題は、本当に";"が無いのはn行目ではなく、n-1行目であることだ。コンパイラがn-1行目を表示すれば良いのだろうが、他のエラーを考えればそうも行かないのだろう。
n-1行目の末尾を確認して、";"がない、
やっかいだったのが、
② line n : Error : Undefined Identifier 0
で、Googleで調べても何も出てこなかった。
これが出た行を1行ずつコメントアウトしてコンパイルし、エラーの原因となっているコマンドを確定し、ここを「入力し直したら」エラーが消えた。
なんだかわからない。コードの関係かな??
コンパイルできても転送できない [Mindstorm]
BricxCCでプログラムを書いてから、NXTに転送することが必要になる。僕の所はUSBケーブルを用いているが妙な現象が発生している。
BricxCCを起動する際に、
接続が USB ターゲットが NXT
という設定はするのだが、認識のタイミングの関係かうまく認識しないままに作業が進んでしまうらしい。
こんなときは
Tools から Close Communication を一度やってから Find Brick をやり直すとうまくいく。
BricxCCを起動する際に、
接続が USB ターゲットが NXT
という設定はするのだが、認識のタイミングの関係かうまく認識しないままに作業が進んでしまうらしい。
こんなときは
Tools から Close Communication を一度やってから Find Brick をやり直すとうまくいく。
NXTのおかしな症状 [Mindstorm]
白ラベルの03のNXTが調子が悪い。
症状:バッテリーを使うと電源が入らない。
乾電池では使用できるので、乾電池を渡してこれを使って授業を継続している。
そこで、昨日、何台かファームウエアをアップデートしたので、ついでにこのNXTも作業して調子が良くなったと思っていた。
が、やっぱりダメ。
バッテリーの接触が悪いのかとも疑ったが、そうとも思えない。
???
症状:バッテリーを使うと電源が入らない。
乾電池では使用できるので、乾電池を渡してこれを使って授業を継続している。
そこで、昨日、何台かファームウエアをアップデートしたので、ついでにこのNXTも作業して調子が良くなったと思っていた。
が、やっぱりダメ。
バッテリーの接触が悪いのかとも疑ったが、そうとも思えない。
???
ポッポッポッポッ [Mindstorm]
今日からワークシートを作成して、ワークシート上のプログラムを入力しながら考えさせる方式に改めた。
すると、生徒から
「『ポッポッポッポッ』という音がしてNXTのユニットが反応しなくなりました」
という声が。焦って、「空いている1台を使え」と指示したところ2台目が・・・
万事休す
以前、アフレル社のH氏より聞いていた「ファームウエアのアップデート」に挑戦した。
NXTのユニットのUSB端子の下側の穴を覗くと、銀色に光るボタンがある。これが「ハードウエアリセット」のボタンだ。ちなみに、作業場所が暗かったので直射日光の下へ持ち出したら、尚更見つけにくかった。
このボタンをゼムクリップの延ばした端で5秒位プッシュ。
「ポッポッポッポッ」という音がしだしたら、「ファームウエアアップデート」の準備完了のサイン。
PC上でNXT-ソフトウエアを実行して、USBケーブルでPCとNXTを接続。
NXT-SWのメニューから、ツール>NXTファームウエアの更新 を選択。
ファームウエアのダウンロードボタンを押せば完了
作業時間は、1・2回のやり直しを含めて5分程度。予想したよりも簡単なものだった。
《詳細:アフレル社HPより》
http://www.afrel.co.jp/tech/pdf/tech_nxt_090624_2.pdf
で、こんな風になった原因を想像するに、
NXCのプログラミングに際して、コンパイル->ダウンロード->ピッ (ダウンロード正常終了)を繰り返すが、ピッが鳴る前にコードを引っこ抜いたのではないかと想像する。
次回、注意せねば。
すると、生徒から
「『ポッポッポッポッ』という音がしてNXTのユニットが反応しなくなりました」
という声が。焦って、「空いている1台を使え」と指示したところ2台目が・・・
万事休す
以前、アフレル社のH氏より聞いていた「ファームウエアのアップデート」に挑戦した。
NXTのユニットのUSB端子の下側の穴を覗くと、銀色に光るボタンがある。これが「ハードウエアリセット」のボタンだ。ちなみに、作業場所が暗かったので直射日光の下へ持ち出したら、尚更見つけにくかった。
このボタンをゼムクリップの延ばした端で5秒位プッシュ。
「ポッポッポッポッ」という音がしだしたら、「ファームウエアアップデート」の準備完了のサイン。
PC上でNXT-ソフトウエアを実行して、USBケーブルでPCとNXTを接続。
NXT-SWのメニューから、ツール>NXTファームウエアの更新 を選択。
ファームウエアのダウンロードボタンを押せば完了
作業時間は、1・2回のやり直しを含めて5分程度。予想したよりも簡単なものだった。
《詳細:アフレル社HPより》
http://www.afrel.co.jp/tech/pdf/tech_nxt_090624_2.pdf
で、こんな風になった原因を想像するに、
NXCのプログラミングに際して、コンパイル->ダウンロード->ピッ (ダウンロード正常終了)を繰り返すが、ピッが鳴る前にコードを引っこ抜いたのではないかと想像する。
次回、注意せねば。
64ビット Windows7 上でのBricxCC のインストール [Mindstorm]
LavieZの購入に合わせて仕事用の環境を整備している。
今回は BricxCC のインストールだ。
Web上では全く情報がなく、不安を抱えたままだったが「ダメ元」でインストールにトライした。
手順は sige-lab home で公開している通り。
はじめに、LEGOの公式サイトからFantom Driverをダウンロード。
http://mindstorms.lego.com/en-us/support/files/Driver.aspx
http://www016.upp.so-net.ne.jp/sige-lab/2012/nxc/Preparation.html
を参考にインストーラを動かす。最新版は 1.1.3
これは以前、WindowsXP上に環境を構築したときと同一。
Fantom Driver のインストーラが自動的に64bit OSを認識して64bit版をインストールしてくれる。
次に、BricxCCをインストール。
http://sourceforge.net/projects/bricxcc/files/bricxcc/
からのファイルを保存して解凍、インストーラを実行する。
特に問題もなくインストールが成功する。
あとは、BricxCCを起動する前にUSBにNXTを接続し、電源を入れておけばよい。
BricxCCが64bit版とは思えないが、テスト用のコードを書いてコンパイル、ダウンロードして実行もうまくいった。とりあえず、このまま使ってみよう。
今回は BricxCC のインストールだ。
Web上では全く情報がなく、不安を抱えたままだったが「ダメ元」でインストールにトライした。
手順は sige-lab home で公開している通り。
はじめに、LEGOの公式サイトからFantom Driverをダウンロード。
http://mindstorms.lego.com/en-us/support/files/Driver.aspx
http://www016.upp.so-net.ne.jp/sige-lab/2012/nxc/Preparation.html
を参考にインストーラを動かす。最新版は 1.1.3
これは以前、WindowsXP上に環境を構築したときと同一。
Fantom Driver のインストーラが自動的に64bit OSを認識して64bit版をインストールしてくれる。
次に、BricxCCをインストール。
http://sourceforge.net/projects/bricxcc/files/bricxcc/
からのファイルを保存して解凍、インストーラを実行する。
特に問題もなくインストールが成功する。
あとは、BricxCCを起動する前にUSBにNXTを接続し、電源を入れておけばよい。
BricxCCが64bit版とは思えないが、テスト用のコードを書いてコンパイル、ダウンロードして実行もうまくいった。とりあえず、このまま使ってみよう。
NXCの2時間目の内容 [Mindstorm]
授業のメモを公開しているだけだ。
ここから--------------------------------------------
○取扱注意
・パーツは500個くらいあるので、箱はひっくり返さないように十分注意せよ。
・基本的に箱ごとにパーツを揃えてあるので、箱の間でのパーツの貸し借りはしない。
・予備のパーツは十分にあるので、「こんなパーツ?」があれば声をかける。
・ロボット本体は共通仕様。授業終了後、追加したアーム類、パーツ類は外す。
・NXTのユニット・モーターは十分に高価です。特に、モーターは手で回転させない。
・充電器の台数は不足しています。
○センサー類
・光センサー×1
・タッチセンサー×2
・超音波センサー×1
・マイク×1
・OP:カラーセンサー×4
○ケーブル
・センサー・モーター用
・USB
○本体ユニットへの接続
最大:モーター×3
センサー×4
○Mindstormで何を学ぶか
・工夫をすること。
・失敗すること。
・克服すること。
→ 簡単に答に頼るな。
○プログラミングを学ぶコツ
・お手本をまねる。
自分の手で入力することが大切
・短いプログラムを動かす。
☆エラーが出にくい
・正しいプログラムに、少しずつ加える。
☆間違いの発生箇所が特定しやすい。
・間違い探し(『デバッグ』)が勝負
○接続
・ポートが3つ並んでいる方がモーター用出力
ポートA:右
ポートC:左
・USBでBricxCCが起動したPCとNXTを接続
・BricxCC上で、
-------------------------
task main()
{
OnFwd(OUT_A, 75);
OnFwd(OUT_C, 75);
Wait(4000);
OnRev(OUT_AC, 75);
Wait(4000);
Off(OUT_AC);
}
-------------------------
を入力。
>Save AS で自分のフラッシュメモリーに保存
>Cmpile
☆エラーがなければ
>Download
>実行:オレンジのボタン
ここまで--------------------------------------------
今日感じた問題は、前の時間のチームのプログラムが残ること。これは授業の最初に消去させるか、自分たちのプログラムを消去してから戻すかの選択をしなければならない。
ここから--------------------------------------------
○取扱注意
・パーツは500個くらいあるので、箱はひっくり返さないように十分注意せよ。
・基本的に箱ごとにパーツを揃えてあるので、箱の間でのパーツの貸し借りはしない。
・予備のパーツは十分にあるので、「こんなパーツ?」があれば声をかける。
・ロボット本体は共通仕様。授業終了後、追加したアーム類、パーツ類は外す。
・NXTのユニット・モーターは十分に高価です。特に、モーターは手で回転させない。
・充電器の台数は不足しています。
○センサー類
・光センサー×1
・タッチセンサー×2
・超音波センサー×1
・マイク×1
・OP:カラーセンサー×4
○ケーブル
・センサー・モーター用
・USB
○本体ユニットへの接続
最大:モーター×3
センサー×4
○Mindstormで何を学ぶか
・工夫をすること。
・失敗すること。
・克服すること。
→ 簡単に答に頼るな。
○プログラミングを学ぶコツ
・お手本をまねる。
自分の手で入力することが大切
・短いプログラムを動かす。
☆エラーが出にくい
・正しいプログラムに、少しずつ加える。
☆間違いの発生箇所が特定しやすい。
・間違い探し(『デバッグ』)が勝負
○接続
・ポートが3つ並んでいる方がモーター用出力
ポートA:右
ポートC:左
・USBでBricxCCが起動したPCとNXTを接続
・BricxCC上で、
-------------------------
task main()
{
OnFwd(OUT_A, 75);
OnFwd(OUT_C, 75);
Wait(4000);
OnRev(OUT_AC, 75);
Wait(4000);
Off(OUT_AC);
}
-------------------------
を入力。
>Save AS で自分のフラッシュメモリーに保存
>Cmpile
☆エラーがなければ
>Download
>実行:オレンジのボタン
ここまで--------------------------------------------
今日感じた問題は、前の時間のチームのプログラムが残ること。これは授業の最初に消去させるか、自分たちのプログラムを消去してから戻すかの選択をしなければならない。
NXCの1時間目の授業が終了 [Mindstorm]
各クラスともNXCの1時間目の授業が終了した。
最初の目論見としては、
今年中を授業時間数をクラスごとに数えた場合、2組と4組の授業時間数が1時間だけ多いので、この時間でロボットを作らせて、1組3組はいきなりプログラミングからスタートの予定だったが、
①BricxCCの状態を統一する。(デスクトップにショートカットを作る)
②BricxCCの起動とアイコン・最低限の用語(英語なので)を解説する
のに時間をとられてしまい、ロボットを作る時間はとれなかった。
おまけに、2組でちょっとだけ作らせたが、生徒たちは楽しかったもののアームの長さは指定と異なるわ、差し込む位置は違うわで、混乱を増幅させるだけに思われた。したがって、パーツの不足を補う、センサーの取り付けを確認する意味も含めて自分で作った。
また、バッテリーはすべて充電しておいたと思っていたが、電源が入らないものが2台。1台は接触が悪かっただけで、チェックしているうちに電源が入ったが、もう1台はバッテリーのプラス側のポッチ(少し飛び出していて、押すと引っ込む)が引っ込んだままになっていて出てこなくなっており、ここがつながらないので電源が入らないことがわかった。
NXTの購入は北文社を通してアフレル社に行っているので、アフレル社側もいろいろと良くしてくれることに甘えてアフレル社側へメールを送ってみた。
そんなことで、予想の範囲ではあるが、意外に時間がかかって余り前には進まなかった。(泣)
最初の目論見としては、
今年中を授業時間数をクラスごとに数えた場合、2組と4組の授業時間数が1時間だけ多いので、この時間でロボットを作らせて、1組3組はいきなりプログラミングからスタートの予定だったが、
①BricxCCの状態を統一する。(デスクトップにショートカットを作る)
②BricxCCの起動とアイコン・最低限の用語(英語なので)を解説する
のに時間をとられてしまい、ロボットを作る時間はとれなかった。
おまけに、2組でちょっとだけ作らせたが、生徒たちは楽しかったもののアームの長さは指定と異なるわ、差し込む位置は違うわで、混乱を増幅させるだけに思われた。したがって、パーツの不足を補う、センサーの取り付けを確認する意味も含めて自分で作った。
また、バッテリーはすべて充電しておいたと思っていたが、電源が入らないものが2台。1台は接触が悪かっただけで、チェックしているうちに電源が入ったが、もう1台はバッテリーのプラス側のポッチ(少し飛び出していて、押すと引っ込む)が引っ込んだままになっていて出てこなくなっており、ここがつながらないので電源が入らないことがわかった。
NXTの購入は北文社を通してアフレル社に行っているので、アフレル社側もいろいろと良くしてくれることに甘えてアフレル社側へメールを送ってみた。
そんなことで、予想の範囲ではあるが、意外に時間がかかって余り前には進まなかった。(泣)
9797への追加 [Mindstorm]
LEGO Mindstorm NXT の教育用セット9797にはいくつかのバージョンがある。現在のV2.0はバッテリー等の変更が加わり、大きな変更となっているが、V1内での変更はパーツの変更が中心(実はCPUの変更などが密かに行われているのかもしれないが)なようで大きな変更は感じられない。
それでも、細かなパーツの変更のおかげで作れなくなるロボットも実在する。今回は(たぶん)もっとも古い9797のセットで作られたロボットカーを使っているので、いくつか不足する部品が出ている。とりあえず、センサー類の取り付けに役に立つと思って、この写真のパーツを各セットに追加しておいた。
ちなみに、
パーツが不足している場合は、「拡張セット」を使うのが結局は安くつく。
僕の場合は、
4月~9月をWRO等の競技会参加の生徒が使うために、
10月~12月が5年生(高校2年生)の「情報」の授業のために、
1月~3月が3年生(中学)の技術家庭のために
使う計画としているので、拡張セットがあった方が応用範囲が広がるので3セット購入した。もう1・2セットあっても良いかもしれない。
拡張セットを買うまでもない場合は、
デジラ(http://dgla.jp/shop/)
から「通販」で購入する。一つ一つは安価だが送料等を入れると割高になる。ま、デジラは山形市の会社のようなので、車で1時間半かけて出かけてみてもいい。
遠方の方は「通販」しかないが。
この場合、
公式ルートの デジラ > アフレル > 北文社 のルートをたどると公費で購入ができるが、価格が何倍にもなる。
通販ルートの デジラ > (う) だと、「自腹」での購入でしかも手数料がかかる。
直販ルートの デジラ > (う)が車を飛ばす だとパーツ代が「自腹」の上にガソリン代と時間がムダとなる。
冷静には2番目の方法がもっとも良いが、ま、興味があるので1回目は山形のそばでも食べながら、車を飛ばすことになるだろう。
それでも、細かなパーツの変更のおかげで作れなくなるロボットも実在する。今回は(たぶん)もっとも古い9797のセットで作られたロボットカーを使っているので、いくつか不足する部品が出ている。とりあえず、センサー類の取り付けに役に立つと思って、この写真のパーツを各セットに追加しておいた。
ちなみに、
パーツが不足している場合は、「拡張セット」を使うのが結局は安くつく。
僕の場合は、
4月~9月をWRO等の競技会参加の生徒が使うために、
10月~12月が5年生(高校2年生)の「情報」の授業のために、
1月~3月が3年生(中学)の技術家庭のために
使う計画としているので、拡張セットがあった方が応用範囲が広がるので3セット購入した。もう1・2セットあっても良いかもしれない。
拡張セットを買うまでもない場合は、
デジラ(http://dgla.jp/shop/)
から「通販」で購入する。一つ一つは安価だが送料等を入れると割高になる。ま、デジラは山形市の会社のようなので、車で1時間半かけて出かけてみてもいい。
遠方の方は「通販」しかないが。
この場合、
公式ルートの デジラ > アフレル > 北文社 のルートをたどると公費で購入ができるが、価格が何倍にもなる。
通販ルートの デジラ > (う) だと、「自腹」での購入でしかも手数料がかかる。
直販ルートの デジラ > (う)が車を飛ばす だとパーツ代が「自腹」の上にガソリン代と時間がムダとなる。
冷静には2番目の方法がもっとも良いが、ま、興味があるので1回目は山形のそばでも食べながら、車を飛ばすことになるだろう。
ベースカー [Mindstorm]
ベースカーとしたのは、nxtprograms.com の Caster Bot
http://www.nxtprograms.com/castor_bot/index.html
これをベースとして、センサー・モーター類が、どこに、どうやって、どれくらい搭載できるかをチェック中だ。今回はベースカーにセンサーを2つとモーターを1つ追加してみた。