◆距離センサー(GP2D12)
動作電圧は4.5V〜5.5V、測定可能距離は約10cm〜80cm
センサーの出力は右図のように障害物までの距離によって変化します。
※GP2D12は、ツクモロボット王国や共立エレショップ、千石電商など
で入手できます。
★GP2D12のマニアルはこちら!
◆ミュウロボ基板のアナログ入力
センサー出力を計測するためにはアナログ入力が必要です。
ミュウロボ・パワーアップキットや688タイプのミュウロボ制御基板を使うことで可能となります。
In2に接続されたセンサーは基板の供給電圧(今回の場合は4.5V)との比率として8BIT(0-255)および10BIT(0-1023)の値を返します。
下の例はセンサー出力の値(8BIT)をシリアルポートを通してパソコンにリアルタイムで表示させたものです。
◆ハイパーターミナルを使って計測データ表示
距離センサーのアナログ値がリアルタイムに表示されます。
壁までの距離を変え、アナログ値が変化することを確かめてください。
※ハイパーターミナルの設定方法はこちら!
※ハイパーターミナルを立ち上げたまま転送するとエラーになります。
|
//In2のアナログ値を0.25秒ごとにシリアル送信(MYU BASIC)
Byte AD
Do
RS=12 //画面のクリア
AD=AN(2) //In2のアナログ値を8BIT(0-255)で取得
RS="A" //文字を送信
RS="N"
RS="2"
RS="="
DECRS=AD //値を10進右詰めで送信
Delay 250 //0.25秒のDelay
Loop
|
//In2のアナログ値を0.5秒ごとにシリアル送信(構造化ドリトル)
ロボ太=MYU!"com1"作る。
ロボ太:転送命令=「!はじめロボット
「!
12 RS //画面のクリア
2 AN //In2のアナログ値を8BIT(0-255)で取得
65 RS //"A"をシリアル出力
78 RS //"N"をシリアル出力
50 RS //"2"をシリアル出力
61 RS //"="をシリアル出力
DECRS //値を10進右詰めで送信
5 時間 //0.5秒のWait
」繰り返す
おわりロボット」。
ロボ太!転送命令。
|
//In2のアナログ値を0.5秒ごとにシリアル送信(myurobo.exe)
アンカー,10
RS,12 //画面のクリア
AN,2 //In2のアナログ値を8BIT(0-255)で取得
RS,"A" //文字を送信
RS,"N"
RS,"2"
RS,"="
DECRS //値を10進右詰めで送信
時間,5 //0.5秒のWait
ジャンプ,10
|
◆計測結果
距離 cm |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
25 |
30 |
40 |
50 |
60 |
70 |
80 |
アナログ値 |
166 |
178 |
171 |
163 |
151 |
141 |
132 |
122 |
115 |
89 |
73 |
62 |
48 |
39 |
34 |
31 |
30 |
◆迷路ロボットのプログラム
計測結果を参考にプログラムしていきます。基本的な動作は
1、壁に近づきすぎたら右回り
2、壁が近くなったら左前
3、壁からちょうど良い距離なら前進
4、壁から離れたら右前
//距離センサーを使った迷路ロボット(MYU BASIC)
Byte A
Do
A=AN(2) //In2のアナログ値を8BITで取得
If A>100 Then //壁が近づいたら
右回り
ElseIf A>80 Then
左前
Elseif A>70 Then
前進
Else //壁から離れたら
右前
ENdIf
Loop
|
//距離センサーを使った迷路ロボット(構造化ドリトルV2.1)
ロボ太=MYU!"com1"作る。
ロボ太:転送命令=「!はじめロボット
「!
2 AN //In2のアナログ値を8BITで取得
「!100 超えるA」なら //壁が近づいたら
「!右回り」
そうでなければ「!80 超えるA」なら
「!左前」
そうでなければ「!70 超えるA」なら
「!前進」
そうでなければ //壁から離れたら
「!右前」実行
」繰り返す
おわりロボット」。
ロボ太!転送命令。
|
//距離センサーを使った迷路ロボット(myurobo.exe)
アンカー,10
AN,2 //In2のアナログ値を8BITで取得
CMP,100
JC,20 //壁が近づいたら
右回り
ジャンプ,10
アンカー,20
CMP,80
JC,30
左前
ジャンプ,10
アンカー,30
CMP,70
JC,40
前進
ジャンプ,10
アンカー,40 //壁から離れたら
右前
ジャンプ,10
|
|