スレッドの評価:
  • 回答数:0 平均:0
  • 1
  • 2
  • 3
  • 4
  • 5
3灯式信号機について
#1
久しぶりに棚からNuckyさんの信号機をみつけたので引っ張り出しました。某所にいくつか譲ってしまったので、残りがいくらでも無いので、注文しようと思った矢先、使っていないKATOの信号機もあったはずなので捜索しますとこれも出て参りました。katoのはタイマー式ですので、このタイマー式インチキ?w信号基板をNuckyさんの基板に置き換え、本体ギミックをkatoのもので置き換えようと考えました。 中を開けますと、基板があり、信号機へ4本線が出ています。コモンと青黄赤なのですが、調べるとコモンがプラスに固定されています。Nuckyさんの3灯式信号機の回路を見ると青が黄赤と電流の向きが逆ですので、青の電流の向きを変える必要があります。信号のチップLEDの向きを変えるのは不可能ですのでソフトで変えたいのですが、アセンブラのソースを見てもポートの向きをどこで規定しているのかわかりません。そもそも青表示がポートの向きを変えても良いようにハードの方が無改造でいけるのかもわかりません。できましたら、どこをどう変えたら良いのかご教示をお願いしたいのですが、、
返信
#2
アセンブラソースとpicのpwmの説明を見ると、何か簡単にはいかないという気がしました。
警戒表示のサブルーチンを青表示のサブルーチンに持っていくことで解決するのかなあ?誰かヘルプW
返信
#3
>信号機へ4本線が出ています。コモンと青黄赤なのですが、調べるとコモンがプラスに固定されています。
というこで三現示以外は考えなかったか、TOMIXの縛りがあったのかわかりませんが、

Nuckyさんの信号機は4pinで5現示まで対応していますので、各ポートの入力と出力を切り替える事で点灯させています。

Nuckyさんの3現示信号機の場合
青 RA6-HI , RA7-HI , RB3-LO , RB4-HI 
黄 RA6-HI , RA7-LO , RB3-HI , RB4-HI
赤 RA6-LO , RA7-LO , RB3-HI , RB4-HI

点灯させてたくない所はHIレベルにするのがミソです。

PICのアセンブラは読めないので(^^; 回路図から読み取った感じですが、現示表示サブルーチンの
I/Oの向きをKATOに合わせて直せば行けそうですね。
返信
#4
こんにちは
4灯警戒表示タイプの回路図を見るとGとYYが同じポートで電流の向きが逆のようです。YYの電流の向きで正解のようですので、このYYのルーチンでGを置き換えればいいのかと考えています。久しぶりに統合環境を入れてアセンブラを動かしていますが、先程までこれにも手こずっていました。トライアンドアタックでやるしかないですね
返信
#5
こんばんは。Nuckyさんの信号機は持っていないのですが、PICマイコンは好きなので、アセンブラは使えませんが、パズルを解くつもりで、一緒に考えてみました。

あやのすけさんが指摘されているように、「点灯させてたくない所はHIレベルにするのがミソです。」のようです。但し、RB3/RB5/RA7/RA6ではなく、PWM STEERING CONTROL REGISTERを設定して、P1A/P1B/P1C/P1Dを使用されているようです。

で、「KATOの信号機が・・コモンがプラスに固定されています」とのことなので、私の推理では、
2247:GREEN
2259:;    MOVLW    B'00000110'        ; オリジナル
               MOVLW    B’00001101’        ; KATO信号機
と思います。

2259:    MOVLW    B’00001001’        ; 警戒現示YY
だと、青と黄の現示になると思いますが、正解は?です。
返信
#6
>RB3/RB5/RA7/RA6ではなく、PWM STEERING CONTROL REGISTERを設定して、P1A/P1B/P1C/P1Dを使用されているようです。
失礼しました(^^;
PICの英文データシート見て(よくよまずに)I/Oっぽいからこれかなって判断してました。
最近Nuckyさんの信号機を真似てつくりましたが、ArduinoNANOなのでC言語で書きました(論理は違いますが)

void ThirdColorLightSignal::advance(void) // 進行
{
   digitalWrite(LED1, LOW);
   digitalWrite(LED2, LOW);
   digitalWrite(LED3, HIGH);
   digitalWrite(LED4, LOW);
}

void ThirdColorLightSignal::caution(void) // 注意
{
   digitalWrite(LED1, HIGH);
   digitalWrite(LED2, LOW);
   digitalWrite(LED3, HIGH);
   digitalWrite(LED4, HIGH);
}

void ThirdColorLightSignal:Confusedtops(void) // 停止
{
   digitalWrite(LED1, LOW);
   digitalWrite(LED2, HIGH);
   digitalWrite(LED3, HIGH);
   digitalWrite(LED4, HIGH);
}
返信
#7
みなさんこんにちは
hsさんの方法で点灯しました。動作も問題ないようです。
ありがとうございました。

nucky さんの基板が届いたら、道床下に取り付けるよう、薄型化して組んでみます。具体的にはPicは直付け、ケミコンは横倒し、コネクタはつけない  ことを考えています。


添付ファイル サムネイル
   
返信


ページジャンプ:


このスレッドを閲覧中のユーザ: ゲスト: 1