Oxygen Not Included 自動化の回路ってなんだ?
ツイッターをみてたら、こんな投稿を発見
自動化のメニューにANDとかORとか、さも当たり前のように回路があるけれどもコンピュータとか電気とかを大学で習ってない人にはさっぱり分からないだろうなぁと思った。
今回はそこら辺を書いてみようと思う
1、回路ってなんだ?
豆電球を乾電池につなぐのも電気回路なんだけど、ONIでいうところの回路は論理回路なんですね。入力も出力も0か1の2つの状態しかないデジタルの世界です。コンピュータとかプログラムとかの基本的なもので、これを組み合わせていくとコンピューターとかスマホが動くって仕組みです。最近のスマホだと億単位でこういう回路が入っているんですよ、奥さん。
2、論理回路の説明
お勉強ではないので、はしょって説明しますよ。ONIでは0を赤、1を緑で表現しているのでそう思って読んでいってください。
・AND
2つの入力が両方とも1のときに出力が1になります
・OR
2つの入力のどちらか一方、もしくは両方が1のときに1を出力
・XOR
2つの入力が01もしくは10と異なる場合のみ1を出力
・NOT
入力が0なら1,1なら0を出力
・メモリスイッチ(SRラッチ)
SはSet、RはResetの意味です。表を上から順番に見てください。最初は0を出力してますが、Sに1が一瞬でも入ると1を保持してSが0に戻っても1のままでいます。Rに1を入力すると0にリセットされます。
とりあえずこれだけ覚えてください。これ以上お勉強したかったら論理回路でググるなり本を読むなり電気部品を買って実験してみるなりコロ助ナリ
3、実践
ツイッターのお題を作ってみました。ロケットとシェルタードアと2つのレーダーで構成されています。
入力:隕石、ロケット、ロケット発射
出力:シェルタードア
こういう割り振りになりますね。
まずはすべての組み合わせを考えてみましょう。
隕石、ロケット、ロケット発射それぞれ赤と緑の2通りの状態があるので
2x2x2で8通りの状態があります。その時にドアが開いてほしいのか閉まってほしいのかを表にすると以下のようになります。(こういう表を真理値表といいます)
ロケットが返ってきたらドアが開いてほしいわけですから上の表で条件を満たしていますね。
次にドアを開ける条件に絞って考えましょう。条件2,4,6,8を見ると発射状態とか隕石の状態に関係なく、ロケットを検出したら無条件にドアを開けるということがわかります。条件6,8はあり得ないですが理解しやすくするために載せてます。
条件2,4,6,8を条件Aとしてまとめると、以下の2つの条件のときにドアを開ければいいことがわかります。
条件5について考えましょう。発射が1と隕石が0という条件が同時に満たす必要があるのでANDを使います。ただ、そのままANDに突っ込むと隕石が0なので出力は0になります。
ここでひと手間くわえて、隕石レーダーの出力にNOTを付けてあげましょう。
つまり隕石がいないときに1を出してもらうことにします。
回路全体としては、条件Aまたは条件5のときにドアを開いてほしいのでOR回路を使います。
完成図
※本当は条件4(隕石が降ってるときにロケットが戻ってくる)もテストしたかったんですが、時間がかかりそうだったのでパスしました。
まとめ
酸素とか農業とか電力ってのは小学校で習うし身近なものだから誰でも知ってるだろうけど論理回路は大学で習ったか仕事で使っている人しか分からないよね。
まぁ、わかんないなら無理して理解することなくて上手な人が作ってるのをまねして
でいいと思うんだ。
ほいじゃーね。