c言語初心者です。
c言語の勉強で、ライントレーサーを作っています。
センサーは3つあります。
ライン上を走行、十字路で停止というところまではできました。
今度は一つ目の十字路を通過、2つ目の十字路で停止という動作をさせようと思っています。
十字路のカウントにはcountを使うということまでは分かりますが、書き方が分かりません。
もしセンサーが0x00(すべて黒=十字路)になったら、一つ目の十字路ではモーターを0x90(直進)に、二つ目の十字路ではモーターを0x00(停止)にする、というふうにしたいので
if(sensor==0x00)
{
一つ目はmotor=0x90;
二つ目はmotor=0x00;
}
となると思いますが、真ん中の部分のプログラムを教えてください。
どのような情報が必要なのか私には分からないので、もし足りない情報がありましたら言っていただければ補足します。
解答お願いします。
No.3ベストアンサー
- 回答日時:
あー、これなら静的変数でなくても問題はありませんねぇ。
まぁ、それはさておいて「なぜ止まってしまうのか」ですが。
#1では「一度入ったら、交差点を抜けるまでは再度カウントしないようにガードをかける」と言いました。
何故そのような事をするのかというと、「一回交差点を検知したら、交差点を通過中はずっと『交差点である』という情報をセンサーは出し続ける」ので、一度だけ入ったつもりでも動いている間に何度も「交差点である」ということになってカウントアップが続いてしまう訳です。
この辺はフラグで制御を行うのが常道ですかね。
なるほど。。。
考え方は分かるんですけど、やっぱり書き方がさっぱり。
もうちょっと頑張ってみます!
回答ありがとうございました。
No.2
- 回答日時:
#1は基本的なことしか書いていませんので、アレが理解できないということであれば「あなたには先にやるべき事がある」ということです。
静的変数とはどういうものか、どうやって使うのかさえ理解できれば少なくともカウンタをどう置けばいいかはわかるはずです。
コードで示すのは簡単ですが、まぁそういうものを自力で頑張るのも勉強のうち、ということで。
ありがとうございます。
言われた通り、自分で頑張ってみました。
#include <pic.h>
__CONFIG(HS&WDTDIS&PWRTEN&UNPROTECT);
void main(void)
{
int count;
int sensor,motor;
TRISA=0x07;
TRISB=0x00;
while(1)
{
count=0
sensor=PORTA&0x07;
motor=0x00;
if(sensor==0x05)
{
motor=0x90;
}
if(sensor==0x01||sensor==0x03)
{
motor=0x10;
}
if(sensor==0x04||sensor==0x06)
{
motor=0x80;
}
if(sensor==0x00)
{
count=count+1;
if(count<2);
{
motor=0x90;
}
if(count>=2);
{
motor=0x00;
}
}
PORTB=motor;
}
}
ネットで調べてここまではできました。
コンパイルもエラーなしに無事通ったのですが、実際にPICマイコンに書き込んで動作させると、一つ目の十字路で止まってしまいました。
今はその理由が分からず、戸惑っています。
countが2未満のときはmotor=0x90(直進)
countが2以上のときはmotor=0x00(停止)
なのであっていると思ったのですが、、、。
countのそもそもの書き方が違うのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(法律) 2車線以上であっても、歩行者は横断歩道がない道路を横断できますよね? 3 2022/04/19 15:58
- 環境・エネルギー資源 停車中の自動車のヘッドライト点灯 23 2023/03/01 10:14
- 憲法・法令通則 「止まれ」の標識が4本ある十字路 13 2023/06/09 15:21
- その他(法律) 自動車の点灯義務について 6 2023/02/24 15:01
- 事故 自転車同士の接触事故 6 2022/12/20 16:56
- 政治 哀れな日本共産党や、カルト創価公明党を助けてやると思って、皆さんの知恵を貸してもらえませんか? 5 2022/05/29 16:29
- 自動車ローン・自動車保険・車両保険 見通しの良い十字路での事故 見通しの良い十字路での事故ですが、 道路の幅員が同じで、止まれの規制が双 2 2023/06/20 08:06
- 運転免許・教習所 駐停車禁止場所ではない場所に路駐してトラブルになりお巡りも来たのですが、何か問題なんですかね? 16 2023/04/25 11:04
- 政治 沿線住民の利益を考えれば、赤字路線は切り捨てるのは当然ではないか? 4 2022/04/12 08:59
- 事故 T字路での過失について。 1 2023/08/18 21:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
"判定"の英語表現について
-
vba ListViewの選択色について...
-
For ~ Next の中での Dim宣言...
-
Wacomのタッチ機能が反応しませ...
-
グローバル変数について (C言語)
-
Shellコマンドで別のexeを起動...
-
NOVAのCMで、まるで関西...
-
以前アクティブだったウィンド...
-
DBマジック
-
textBoxに数値を入力すると円と...
-
数2Bの参考書について。 focusΖ...
-
メッセージボックスを前面に表...
-
【至急】フォトショップの「自...
-
エクセルVBA テキストボックス...
-
どこにもフォーカスを当てたくない
-
至急!! ノートパソコンを3年...
-
C#でButtonのフォーカス枠を消...
-
どういう意味
-
C# ReadOnlyのTextBoxで
-
Accessの更新後処理で特定の条...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
"判定"の英語表現について
-
vba ListViewの選択色について...
-
DBマジック
-
For ~ Next の中での Dim宣言...
-
Wacomのタッチ機能が反応しませ...
-
X線CTにおけるコリメータの役割...
-
VBEとVBA
-
エディットでEnterキーでのTAB移動
-
textBoxに数値を入力すると円と...
-
ライブチャットのオンライン状況
-
グローバル変数について (C言語)
-
クリーニング店にて~ どう思...
-
プログラム中の大カッコについて
-
インパクトドライバーでドリル...
-
TabIndexを使わないで、フォー...
-
ENTERキーでフォーカスを移動し...
-
ipod
-
Shellコマンドで別のexeを起動...
-
なぜ「フォーカス取得時」のV...
-
一目惚れってどんな感覚?
おすすめ情報