運賃表示器を買った

お久しぶりです。
だいぶ前に某鉄道イベントで運賃表示器を購入してしまいました。

制御方法が分からずしばらく放置していたのですが、久しぶりに動かしてみようと思ったので色々書こうと思います。
ハードウェアに関する知識は皆無にほぼ等しいので間違っている点等があるかもしれませんがお許しください。

正攻法的に運賃表示器の入力線を使う→挫折

この運賃表示器はどうやらレシップという会社の製品のようですがgoogle先生に聞いてもはっきりとした答えが出てこない。
調べ方が悪いのかもしれませんがこの手のものは情報が出て来辛いと思ったのでここであっさりと諦めました。
(ここまで去年)

(ここから今年)
久しぶりに運賃表示器を眺めてたらすすのようなもので隠れている型番のシールを見つけた。早速検索してみるも情報がない。
f:id:akkkix:20160328212939j:plain 諦めてから結構月日が流れ気づいたら三月になってた。再び動かしてみようと言う気持ちになり、情報収集をしてみる。 そういえばこれ由利高原鉄道のやつだったよなぁ思い、適当に調べてみた。

運賃表示器の在りし日の姿がみつかる

由利高原鉄道YR-1500形
こことか

この動画の00:58らへんとか

この動画の00:36らへんとか

上部のマトリクスLED、赤緑の2色だったんですね。ずっとオレンジの単色だと思ってました。

マトリクスLEDの部分だけでもうごかせないか

運賃表示器の情報を収集してるときに見つけた動画を思い出した。


京急2100形の車内LEDを動かしてみた

京急ファミリー鉄道フェスタ2014で購入した2100形の車内LEDをArduin­oで制御してみました。 制御方法が不明なためLEDモジュール自体を制御しています。

なるほど、制御方法分からないしいっそのことマトリクスLED単体で動かしてみるのもありかもしれない。
早速マトリクスLEDを取り外してみた。

わからん

とりあえずgoogle先生に聞いたらマトリクスLEDの制御にはダイナミック制御と言うものがあるらしい。
んで制御にはシフトレジスタが使われるとのこと。確かにマトリクスLEDの基板にはシフトレジスタ(TB62706)が使われていた。
入力端子に何を入れるか分からないとどうしようもないのでまたgoogle先生に聞いてみた。

基板の解析
なるほど、基板の解析ってそんなに難しくない?とりあえずやってみよう。

ドライバ基板(?)とマトリクスLEDの本体を外して

ICの役割を調べてひたすらパターンを追いました。かなり地道な作業でしたがとりあえずなんとかなった。
行の指定に3-8デコーダー(74HC238A)、一列の点灯パターンの指定に16ビットシフトレジスタ(TB62706)が使われているっぽい。

ここまで分かれば後は簡単でそれぞれのICの挙動を調べてarduino等で制御するだけ。
適当にプログラムかいて動かしてみた。

動いた!!

多分続きます。

お正月なのでおうちで初詣する

あけましておめでとうございます。

お正月にやることといえば初詣ですが、寒くて外に出られない。

そんな悩みを解決するために家で初詣する奴を作りました。

ソースはこんな感じです

gistf01b435c8eed6d540338

コードをかいてる時にお正月から何をやっているのだろうと少し冷静な気持ちになりました。

今回初めてjsから加速度センサーの値を取得しましたが、webアプリからスマートフォンのセンサーを扱えると面白いですね。

/*

コードと絵がクソなのは許して

 ちなみにこのあとちゃんと初詣行きました

*/

追記

公開しました

おうちで初詣

C言語でピラミッドを作る

C言語のfor文でビラミッド型にアスタリスクを出力するプログラム。

学校の授業でハマる人が多かったので、アスタリスクと空白の数について簡単に解説してみる。

コード

 実行結果

f:id:akkkix:20150919220619p:plain

解説

まずはピラミッドを構成しているアスタリスクの数について考えます。

行数と関連付けて考えることが大事そうです。

アスタリスクの数は1行目は1個、2行目は3個、3行目は5個...となっています。

つまり奇数ですね。

奇数は「n×2-1」で表すことができるので、

アスタリスクの数=行数×2-1

となります。

これをコードにすると9行目から11行目の様になります。

 

次に空白の数を考えます。

空白の数もアスタリスクの数と同じように行数と関連付けて考えると、

空白の数=全体の行数-行数

となっていることがわかります。

これをコードにすると6行目から8行目の様になります。

 

以上です。

 

/*

上のコードのどこかを変えると逆三角形になったり、何行出力するか変えられたりできるよ。わかった人はやってみてね。

*/