kairo-gokko (22) リレー 1



リレーを追加します!


リレーとは何か!?

説明しよう!   リレーとは電磁石で(つまり電気による制御で)スイッチの ON/OFF を切り替える装置である。 以上。

あとはググッて調べてください。

ググりました?   分かりましたね?   では次へ。


equal リレーと not リレーという 2種類のリレーを用意します。

  • equal リレー
    • リレー自体が通電している場合、隣のスイッチを ON にする
    • リレー自体が通電していない場合、隣のスイッチを OFF にする
    • 回路図では r=
  • not リレー
    • リレー自体が通電している場合、隣のスイッチを OFF にする
    • リレー自体が通電していない場合、隣のスイッチを ON にする
    • 回路図では r!

この「equalリレー」「notリレー」という呼び方はオレオレです。 細かいことをいうとリレーの種類ではなく接点の種類と構成がという話になるっぽいのですが、簡略化して、とにかくこの2種類があるのだということにします。


not リレーの方がおもしろいので、先にそっちから作りましょう。

こんな回路図を描きました。

f:id:sonota88:20200313094423p:plain

スイッチを追加したときと同様に、 方向を考慮すると作図とプログラムがめんどくさくなるので 「リレーの隣(上下左右)のセルにあるスイッチに対して作用する」ということにします。

考えることを減らすため、 リレーの作用の対象になるスイッチは 1個だけという想定にします。 1個のリレーの隣に複数のスイッチがあるような回路は描かないようにする。 そんな回路を描くやつが悪い。


今回は表示するところまで作りました。 回路データを読んで Unit::NotRelayインスタンスを作って to_plain して from_plain して、表示して、エッジの通電状態に応じて明暗を切り替え、です。 ここまではランプとほぼ同じなので細かい説明は略。

f:id:sonota88:20200313063945g:plain

こんな見た目にしてみました。not リレーなので ! です。

隣のスイッチを切り替える機能はまだ実装していないため、 左のスイッチを切り替えても右のスイッチには影響を及ぼしません。