無料ブログはココログ

« ノラミント缶3 | トップページ | ミント缶IV生存報告2 »

2020年5月24日 (日)

自動運転の応用例2

部品の行方2

AliExpressに注文した部品で、ようやくストレートタイプのユーロコネクタだけが届きました。

15edgka

自動信号機

スケッチが充実しないと自動運転基板を頒布する機運にならないので、Nuckyさんの日本型信号機のスケッチを作ってみました。久しぶりなので復習します。

アドレスの割り振り

デコーダアドレス 2 3 4
方向 T C T C T C
出発信号    
閉塞信号    
場内信号    

手持ちの信号機は4現示ですが、デコーダを3現示に設定して現示条件を割り振りました。条件1をデコーダアドレスとし、条件2(黄、青)は前方の信号機のデコーダアドレスを設定します。
AdrPair型配列に割り振るアドレスを格納して、配列インデックスを引数に赤信号と青信号の関数を呼び出します。センサーを踏んだ信号機を赤に、前方の信号機を青に変えます。その先の信号機は条件アドレスの割り振りに従い自動的に黄色に変わります。

Photo_20200524181103 Photo_20200524181101 Photo_20200524181102

エンドレス運転を想定してますが、都合により直線線路で撮影しました。

 

信号機制御スケッチ

// Decoder
struct AdrPair {
word Pri;
word Sec;
};
AdrPair AccSig[] = {
{2, 3},
{3, 4},
{4, 2},
};
void processJob()
{
switch(gProcessState) {
case 1:
getSensor(1);
if(gOnChannel == 1) {
SignalRed(0);
SignalGreen(1);
gProcessState = 2;
}
break;
case 2:
getSensor(2);
if(gOnChannel == 2) {
SignalRed(1);
SignalGreen(2);
gProcessState = 3;
}
break;
case 3:
getSensor(3);
if(gOnChannel == 3) {
SignalRed(2);
SignalGreen(0);
gProcessState = 1;
}
break;
}
}

« ノラミント缶3 | トップページ | ミント缶IV生存報告2 »

自動運転」カテゴリの記事

コメント

この記事へのコメントは終了しました。