JavaScript が無効です。有効にしてください。
ななよんのホームページ
トップ > 電子工作 > 鉄道部品制御のすすめ > 【鉄道部品】つくばエクスプレス側面行先表示器の光らせ方

【鉄道部品】つくばエクスプレス側面行先表示器の光らせ方

最終更新日さいしゅうこうしんび:2023-08-10

 2023 年 5 月 5 日、秋葉原と神保町にある書泉でつくばエクスプレスの部品販売があったため、側面表示器を購入しました。整理券番号が3番だったので選び放題でしたが、側面表示器で最も状態のいいものを購入しました。ほかの個体は LED のルーバー(ひさし)が割れており、もろいようなので、取扱注意です。

 LED ユニットは、タキロン(現三和サインワークス)の DUG です。ユニットを交換したのか、基板の違うものがいくつか混在していましたが、同じ信号ですべて動きました。02 系の車内表示器も DUG なので、制御の考え方は同じです。ただ、2 段になっているので、赤・緑のデータ線が 2 本ずつ必要です。

テストモード

 もともとついていた制御基板にテストモードが実装されています。2つのロータリスイッチを「99」(2 つとも 9)に設定すると、斜線模様が表示されます。

配線

ピン配置 回路図

 RED、GREEN 以外は上下段で共通化し、Arduino UNO と接続します。色のついているコネクタ(赤色)が上段です。

表示データの作成

 32 x 112 で 4 色(黒も含めて)の画像データを作り、当サイトの表示データ変換ツールで配列に変換します。ツールを改修し、赤、緑、黒以外の色は橙色扱いされるようになりました。


広告

表示させてみる。

表示の様子

 単一画面の静止表示を出してみます。speedFnctions2 ライブラリを使用します。

#include <speedFunctions2.h>

#define RED1		2
#define GREEN1	3
#define RED2		4
#define GREEN2	5
#define CLOCK		6
#define LATCH		7
#define RESET		8

unsigned long i,j;

const unsigned char data[32][112] PROGMEM = {
  // 作成した表示データ
};

void setup() {
  pinMode(RED1, OUTPUT);
  pinMode(GREEN1, OUTPUT);
  pinMode(RED2, OUTPUT);
  pinMode(GREEN2, OUTPUT);
  pinMode(CLOCK, OUTPUT);
  pinMode(LATCH, OUTPUT);
  pinMode(RESET, OUTPUT);
}

void loop() {
  high(RESET);
  delayMicroseconds(1);
  low(RESET);
  for(i=0; i<16; i++) {
    for(j=0; j<112; j++) {
      setColor(pgm_read_byte(&data[i][j]), pgm_read_byte(&data[i+16][j]));
      high(CLOCK);
      low(CLOCK);
    }
    high(LATCH);
    low(LATCH);
  }
}

void setColor(unsigned char color1, unsigned char color2) {
  switch(color1) {
    case 0:
      low(RED1);
      low(GREEN1);
      break;
    case 1:
      high(RED1);
      low(GREEN1);
      break;
    case 2:
      low(RED1);
      high(GREEN1);
      break;
    case 3:
      high(RED1);
      high(GREEN1);
      break;
  }
  switch(color2) {
    case 0:
      low(RED2);
      low(GREEN2);
      break;
    case 1:
      high(RED2);
      low(GREEN2);
      break;
    case 2:
      low(RED2);
      high(GREEN2);
      break;
    case 3:
      high(RED2);
      high(GREEN2);
      break;
  }
}

一定時間ごとに画面を切り替える

 種別・行先・号車番号等、一定時間ごとに画面を切り替える方法です。millis() 関数で起動からの経過ミリ秒を取得し、比較して while() 文内で DUG にデータを送出しています。

#include <speedFunctions2.h>

#define RED1		2
#define GREEN1	3
#define RED2		4
#define GREEN2	5
#define CLOCK		6
#define LATCH		7
#define RESET		8

unsigned long i,j,tmr;

const unsigned char data1[32][112] PROGMEM = {
  // データ 1
};

const unsigned char data2[32][112] PROGMEM = {
  // データ 2
};

void setup() {
  pinMode(RED1, OUTPUT);
  pinMode(GREEN1, OUTPUT);
  pinMode(RED2, OUTPUT);
  pinMode(GREEN2, OUTPUT);
  pinMode(CLOCK, OUTPUT);
  pinMode(LATCH, OUTPUT);
  pinMode(RESET, OUTPUT);
}

void loop() {
  tmr = millis();
  // 下の「4000」を変えることで表示時間を変えることができます(単位はミリ秒)
  while(tmr+4000 > millis()) {
    high(RESET);
    delayMicroseconds(1);
    low(RESET);
    for(i=0; i<16; i++) {
      for(j=0; j<112; j++) {
        setColor(pgm_read_byte(&data1[i][j]), pgm_read_byte(&data1[i+16][j]));
        high(CLOCK);
        low(CLOCK);
      }
      high(LATCH);
      low(LATCH);
    }
  }

  tmr = millis();
  // 下の「4000」を変えることで表示時間を変えることができます(単位はミリ秒)
  while(tmr+4000 > millis()) {
    high(RESET);
    delayMicroseconds(1);
    low(RESET);
    for(i=0; i<16; i++) {
      for(j=0; j<112; j++) {
        setColor(pgm_read_byte(&data2[i][j]), pgm_read_byte(&data2[i+16][j]));
        high(CLOCK);
        low(CLOCK);
      }
      high(LATCH);
      low(LATCH);
    }
  }
}

void setColor(unsigned char color1, unsigned char color2) {
  switch(color1) {
    case 0:
      low(RED1);
      low(GREEN1);
      break;
    case 1:
      high(RED1);
      low(GREEN1);
      break;
    case 2:
      low(RED1);
      high(GREEN1);
      break;
    case 3:
      high(RED1);
      high(GREEN1);
      break;
  }
  switch(color2) {
    case 0:
      low(RED2);
      low(GREEN2);
      break;
    case 1:
      high(RED2);
      low(GREEN2);
      break;
    case 2:
      low(RED2);
      high(GREEN2);
      break;
    case 3:
      high(RED2);
      high(GREEN2);
      break;
  }
}

広告
戻る

右メニュー

【表示がおかしい・崩れる場合】PC では Shift と F5 を同時押し。スマホではキャッシュを削除してみてください。



とうサイトでは Cookieくっきー使用しようします。くわしくは上記じょうきの「プライバシーポリシー・免責事項等めんせきじこうとう」もご確認かくにんください。



上へ戻る