2013-12-15 5 views
6

私はNBCプログラミングの初心者です。床にある黒い電気テープを検索してそれに従うようにレゴNXTブリックをプログラムしようとしています(私は前面に光センサーがあり、地面を真っすぐに指している)。現時点では、ライトが点灯しますが、ロボットはそれを認識せずにそのままテープを通過し続けます。壁に突き当たったら、私はそれを止めて周りを回るように設定しました。それは働いています。唯一の効果がないのは、光が上に向かうときに黒いテープを認識し、それに従うことだけです。誰かが私のコードを見て、どこに間違っているのか教えていただけますか?LEGO NXT NBCを使用したレンガ

          dseg segment 
    Switch sword 0 
    Volume sword 0 
    Level sword 0 
    Distance sword 0 
dseg ends 

thread main 
    SetSensorTouch(IN_1) // touch sensor connected to IN_1 
    SetSensorSound(IN_2) // sound sensor connected to IN_2 
    SetSensorLight(IN_3) // Light Sensor connected to input 3 
    SetSensorUltrasonic(IN_4) // Ultrasonic Sensor connected to input 4 
    OnFwd(OUT_BC,80)  // move forward 

CheckSensor: 

    ReadSensor(IN_1,Switch)  // reads current value of sensor (0/1) 
    brtst EQ, CheckSensor, Switch // branch to CheckSensor if Switch = 0 
           // i.e., exit the loop when Switch = 1 


    OnRev(OUT_BC,40)  // move backward 
    wait 500 
    OnFwd(OUT_B,20)  // turn 
    wait 500 

    jmp CheckSound 

CheckSound: 
    ReadSensor(IN_2, Volume) 
    brcmp GT, ExitCheck, Volume, 60 

    jmp CheckSound 

ExitCheck: 

OnFwd(OUT_BC,60) 

    jmp CheckLight 

    CheckLight: 
    ReadSensor(IN_3,Level) 
    brcmp LT, CheckLight, Level, 60 

    ReadSensorUS(IN_4,Distance) 
    brcmp LT, EndPoint, Distance, 30 

    OnFwd(OUT_C, 10) 

    FindPath: 
    ReadSensor(IN_3,Level) 
    brcmp GTEQ, FindPath, Level, 60 

    OnFwd(OUT_BC, 60) 

    jmp CheckLight 

    EndPoint: 

    Off(OUT_BC) 

    wait 1500 



endt 

enter image description here

+2

あなたは不必要な音を取り除きます(分かりやすくするため)。また、LDDや少なくともあなたのボットの写真は、センサの位置と車輪の動きを理解するのに役立ちます –

+1

ボットがどのように見えるのかをイメージしてポストを編集し、コードのサウンド部分を取り出しました。 – Brett

+0

あなたが私を助けやすくするために何かもっとやりたいことがあれば、私に知らせてください。本当に助けていただければ幸いです! – Brett

答えて

3

これは私が使用したのと同じNXTであれば、どこでもすぐに取得されていません。このキットの光センサーはごみです。実際にそれを取り上げるまでは、「オン」と見なされているものを試してみてください。私はあなたのためにより良い答えを得たいと思っていますが、私はこれらのことを4年間使ってきました。私はキットに付属しているビジュアルソフトウェアを使用しましたが、それを設定するために必要な量を設定するオプションがありました。同様のものを探してみてください。

+0

ランプが点灯している場合は、黒いテープを認識する必要がありますか、それとも必ずしもそうではありませんか? – Brett

+1

@ブライアン必ずしもそうではありません。ロボットが「黒」と「黒でない」と定義するものを微調整することは、かなり難しいことです。 –

+0

私はいくつかのテストを実行し、光センサーが黒の電気テープでピックアップすることを確認しました。これは正しく機能していないコードです。私のコードの助け? – Brett

0

NXT-Gを使用している場合は、コードをダークテープに反応させる多くの方法があります。

車が「無制限」になっている間に、ライトの読み取り値が一定値以下になるのを待っている(暗闇を検出すると)待機ブロックを待たせるのが最も簡単です。詳細ペインの下部にその値を指定します。

または、黄色のセンサブロックを使用して光センサからの読み取り値を取得し、黄色のデータワイヤを使用してその数値を比較ブロックに入れることができます。次に、比較ブロックは、明るさが十分に暗いかどうかをチェックします。真/偽出力データ線です。

電気テープを使用するためのヒント:光沢があります!箱のチェックを外して赤い光を消してください。それ以外の場合は光だけを反射し、ロボットはそれを見ません。

関連する問題