• 締切済み

このプログラムを修正してください。 正常に処理できません。

10:'program 20:L=1 30:OPEN "PIO:" 40:PIOSET &HF0 50:INPUT SSD 60:*MAIN 70:S=PIOGET /16 80:IF S=0 THEN PIOPUT 6:GOTO *MAWARU 90:IF S>3 THEN *BREAK 100:IF S=3 THEN PIOPUT 5 110:IF S=1 THEN PIOPUT 7 120:IF S=2 THEN PIOPUT 1 130:GOTO *MAIN 140:*BREAK 150:PIOPUT 15 160:FOR I=0 TO 100:NEXT I 170:S=PIOGET /16 180:IF S=8 THEN *LEFT 190:S=PIOGET /16 200:IF S=4 THEN *RIGHT 210:IF S=11 THEN PIOPUT 5 220:IF L=1 THEN *RIGHT 230:PIOPUT 5 240:IF PIOGET >&H30 THEN 240 250:GOTO *MAIN 260:*LEFT 270:PIOPUT 13 280:IF (PIOGET AND 48)>0 THEN 280 290:IF (PIOGET AND 48)<48 THEN 290 300:GOTO *MAIN 310:*RIGHT 320:PIOPUT 7 330:IF (PIOGET AND 48)>0 THEN 330 340:IF (PIOGET AND 48)<48 THEN 340 350:GOTO *MAIN 360:*MAWARU 370:IF (PIOGET AND 48)>0 THEN 370 380:IF (PIOGET AND 48)<48 THEN 380 390:IF S=0 THEN GOTO *MAIN このプログラムについて、修正をして頂けませんか? PIOGETでセンサ4個からの情報が来るので、 それを簡単するため16で割っています。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=464797 にデータの出力値等を記載しています。 →T字路に来たら、右に曲がる、十字路が来たら、前進するというプログラムを教えてください。そして、その後自分で改良して、自動判断させるようにしたいと思います。

みんなの回答

  • kabasan
  • ベストアンサー率44% (264/588)
回答No.3

すいません見まちがい&書き間違いがありました。 S1=1 S2=2 S3=4 S4=8 で、停止後に再度センサーを読んでいますが、オーバーランしてラインから外れていませんか?S4が外れてS1+S2なら220行が実行されると思います。

  • kabasan
  • ベストアンサー率44% (264/588)
回答No.2

センサの状態は16通りあります。すべてのパターンで動きを指定しないと、想定していない動きになります。 PIOGET /16の値は S1=8 S2=4 S3=2 S4=1 で、ONしているセンサーの値の和が帰ってきます。S1とS4がONならば 8+1=9が帰ります。 ┫のところでは、S1+S2+S4ですから11が帰ってきますが、MAINでは *BREAKに飛んでしまいますね。 <サンプル> *MAIN S=PIOGET /16 IF S=0 THEN *** IF S=1 THEN IF S=2 THEN IF S=3 THEN IF S=4 THEN IF S=5 THEN IF S=6 THEN IF S=7 THEN IF S=8 THEN IF S=9 THEN IF S=10 THEN IF S=11 THEN IF S=12 THEN IF S=13 THEN IF S=14 THEN IF S=15 THEN GOTO *MAIN 各条件で出力を指定して、それをループすれば最も単純です。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

何が どう正常じゃないのか 書かないと わからないでしょう。 前の質問も見たとき、 T字路に来たら とか いうので どうして、 T字路を 判断しているのかとか わかりませんでした。 で、上記のプログラムだと どうなってしまうのでしょうか?

twinkle_light
質問者

補足

すみません、800字という制限があったので、 上記以上書けなかったため、補足として、ご回答して頂ける方からきたら、書こうと思っていました。    ┃ ━━┫    ┃    ↑ このような道、矢印のところからたとえばスタートすると、 本当はまっすぐ行って欲しいのに、右に回ってしまいます。

関連するQ&A

専門家に質問してみよう