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件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
すいません見まちがい&書き間違いがありました。
S1=1
S2=2
S3=4
S4=8
で、停止後に再度センサーを読んでいますが、オーバーランしてラインから外れていませんか?S4が外れてS1+S2なら220行が実行されると思います。
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
各条件で出力を指定して、それをループすれば最も単純です。
No.1
- 回答日時:
何が どう正常じゃないのか 書かないと わからないでしょう。
前の質問も見たとき、 T字路に来たら とか いうので
どうして、 T字路を 判断しているのかとか わかりませんでした。
で、上記のプログラムだと どうなってしまうのでしょうか?
この回答への補足
すみません、800字という制限があったので、
上記以上書けなかったため、補足として、ご回答して頂ける方からきたら、書こうと思っていました。
┃
━━┫
┃
↑
このような道、矢印のところからたとえばスタートすると、
本当はまっすぐ行って欲しいのに、右に回ってしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) Excel VBA ユーザーフォーム 複数のユーザーフォームの閉じ方。 2 2022/04/27 11:29
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【JAVA】数字をひし形に出力す...
-
c言語です
-
ruby
-
変数の値が勝手に変化する原因
-
Sublime Text 3でのFortranプロ...
-
JCLの基本について教えてください
-
Fortran90についての質問です。
-
3つの整数のうち奇数のみを表示...
-
プログラミング
-
プログラミング(自由課題)
-
360度を超える角度
-
_dupenv_s関数でメモリリーク
-
無限ループとループ文
-
ProC 固定SQLでNULLってどう表...
-
あるプログラムのコマンドライ...
-
C++ で、「)」が必要 というエ...
-
VBAで仕様書は書きますか?
-
フローチャートで 変数に代入す...
-
Excelで4096点以上のFFTの方法
-
65536は2の何乗なのでしょうか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【JAVA】数字をひし形に出力す...
-
変数の値が勝手に変化する原因
-
JCLの基本について教えてください
-
Sublime Text 3でのFortranプロ...
-
プログラミング
-
fortran if文
-
ruby
-
Fortran90についての質問です。
-
COBOLのピリオド
-
3つの整数のうち奇数のみを表示...
-
main関数終了時のreturnの意味は?
-
360度を超える角度
-
c言語のプログラミング 2つの整...
-
整数格子点を列挙するプログラム
-
N88basicを用いたGPIB制御
-
ProC 固定SQLでNULLってどう表...
-
Fortran "実引数の型が仮引数の...
-
Matlabについて質問2
-
PICのプログラムでsrandを使う...
-
4桁の数値を逆に表示されるプ...
おすすめ情報