あやの
NゲージをベースとしたDCCについての日記を 書いています。 ある程度貯まりましたら、鉄道模型のDCCのまとめサイトに まとめています。 借りている容量が最大に達しましたので、移転します。 ★移転先:http://maison-dcc.sblo.jp/
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ファンクッションは当初
出発時 F4
PM9 F5
AM0 F6
AM3 F7
AM6 F8
ヤード F9
で作りましたが、DCS50k がF9認識しなかったので、AM6無くしてF8 ヤードになっています。
また、DCS50Kは電源を入れ直しても、前回のファンクッションを覚えている様で
いろいろ対策入れました。
勝手にF4が始まるのはガードしきれていません。
ヤードはランダムに点灯する様に作ってみました。
出発時 F4
PM9 F5
AM0 F6
AM3 F7
AM6 F8
ヤード F9
で作りましたが、DCS50k がF9認識しなかったので、AM6無くしてF8 ヤードになっています。
また、DCS50Kは電源を入れ直しても、前回のファンクッションを覚えている様で
いろいろ対策入れました。
勝手にF4が始まるのはガードしきれていません。
ヤードはランダムに点灯する様に作ってみました。
void Elm_Control(){
static char state = 0; // ステート
static char lamp[8]={0,0,0,0,0,0,0};
static char sw = 0;
static long cnt=0;
long selL =0;
switch(state){
case 0:
if(gState_F4 == 0){
lamp[0] = 0;
} else {
lamp[0] = 1;
}
if(gState_F5 == 0){
lamp[1] = 0;
} else {
lamp[1] = 1;
}
if(gState_F6 == 0){
lamp[2] = 0;
} else {
lamp[2] = 1;
}
if(gState_F7 == 0){
lamp[3] = 0;
} else {
lamp[3] = 1;
}
if(gState_F8 == 0){
lamp[4] = 0;
} else {
lamp[4] = 1;
}
if(gState_F9 == 0){
lamp[5] = 0;
} else {
lamp[5] = 1;
}
digitalWrite(O1, LOW);
digitalWrite(O2, LOW);
digitalWrite(O3, LOW);
digitalWrite(O4, LOW);
cnt ++;
if (cnt==10){
state = 1;
cnt =0;
}
break;
case 1:
if(gState_F4 != lamp[0]){
// F4 受信時の処理
// 出発時
digitalWrite(O1, LOW);
digitalWrite(O2, HIGH);
digitalWrite(O3, LOW);
digitalWrite(O4, LOW);
lamp[0] = gState_F4;
break;
}
if(gState_F5 != lamp[1]){
// F5 受信時の処理
// PM9時
digitalWrite(O1, HIGH);
digitalWrite(O2, HIGH);
digitalWrite(O3, HIGH);
digitalWrite(O4, HIGH);
lamp[1] = gState_F5;
break;
}
if(gState_F6 != lamp[2]){
// F6 受信時の処理
// AM0時
digitalWrite(O1, HIGH);
digitalWrite(O2, HIGH);
digitalWrite(O3, HIGH);
digitalWrite(O4, LOW);
analogWrite(O4, 10);
lamp[2] = gState_F6;
break;
}
if(gState_F7 != lamp[3]){
// F7 受信時の処理
// AM0時
digitalWrite(O1, HIGH);
digitalWrite(O2, HIGH);
digitalWrite(O3, HIGH);
digitalWrite(O4, LOW);
lamp[3] = gState_F7;
break;
}
if(gState_F8 != lamp[4]){
// F8 受信時の処理
// AM6時
digitalWrite(O1, LOW);
digitalWrite(O2, LOW);
digitalWrite(O3, LOW);
digitalWrite(O4, LOW);
state = 2;
lamp[4] = gState_F8;
break;
}
if(gState_F9 != lamp[5]){
// F9 受信時の処理
// ヤード
digitalWrite(O1, LOW);
digitalWrite(O2, LOW);
digitalWrite(O3, LOW);
digitalWrite(O4, LOW);
state=2;
lamp[5] = gState_F9;
break;
}
break;
case 2:
if(gState_F4 != lamp[0]){
state =1;
break;
}
selL = random(3);// 0 - 2
cnt = random(1,5);
FlashTimer = millis();
switch(selL){
case 0:
state = 3;
break;
case 1:
state = 4;
break;
case 2:
state = 5;
default:
break;
}
break;
case 3:
if((millis()-FlashTimer) >= 200){
FlashTimer = millis();
if(sw==0) {
digitalWrite(O1, LOW);
sw = 1;
cnt--;
} else {
digitalWrite(O1, HIGH);
sw = 0;
}
if(cnt==0){
state = 2;
}
}
break;
case 4:
if((millis()-FlashTimer) >= 300){
FlashTimer = millis();
if(sw==0) {
digitalWrite(O3, LOW);
cnt--;
sw = 1;
} else {
digitalWrite(O3, HIGH);
sw = 0;
}
if(cnt==0){
state = 2;
}
}
break;
case 5:
if((millis()-FlashTimer) >= 400){
FlashTimer = millis();
if(sw==0) {
digitalWrite(O4, LOW);
sw = 1;
cnt--;
} else{
digitalWrite(O4, HIGH);
sw = 0;
}
if(cnt==0){
state = 2;
}
}
break;
default:
break;
}
}
PR
ブログ内検索
カテゴリー
最新記事
(12/31)
(12/31)
(12/29)
(12/23)
(12/18)
リンク
プロフィール
HN:
あやのすけ
性別:
非公開