アプリ版:「スタンプのみでお礼する」機能のリリースについて

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字路に来たら、右に曲がる、十字路が来たら、前進するというプログラムを教えてください。そして、その後自分で改良して、自動判断させるようにしたいと思います。

A 回答 (3件)

すいません見まちがい&書き間違いがありました。



S1=1
S2=2
S3=4
S4=8

で、停止後に再度センサーを読んでいますが、オーバーランしてラインから外れていませんか?S4が外れてS1+S2なら220行が実行されると思います。
    • good
    • 0

センサの状態は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

各条件で出力を指定して、それをループすれば最も単純です。
    • good
    • 0

何が どう正常じゃないのか 書かないと わからないでしょう。



前の質問も見たとき、 T字路に来たら とか いうので
どうして、 T字路を 判断しているのかとか わかりませんでした。

で、上記のプログラムだと どうなってしまうのでしょうか?

この回答への補足

すみません、800字という制限があったので、
上記以上書けなかったため、補足として、ご回答して頂ける方からきたら、書こうと思っていました。

   ┃
━━┫
   ┃
   ↑

このような道、矢印のところからたとえばスタートすると、
本当はまっすぐ行って欲しいのに、右に回ってしまいます。

補足日時:2003/02/06 21:33
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!