誰も教えてくれないblog

お絵描きとかグラブルとか

Minecraftデジタル信号① 基礎回路

 騎空団内のMInecraft鯖が立ったので、記事を書く。

f:id:GinMei182:20200415143342p:plain

 

 技術部の人が既にやってるようなことだが、wikiにも出てないのでデジタル信号の送り方をまとめようと思う。

 そもそも何でデジタル信号にするのかというと、Minecraftだとアナログ信号が扱いにくいためである。

 信号の強さが1マスごとに減少してしまう上に、リピーターを使った瞬間に最大値へ上書きされてしまうため、量の情報が即座に失われてしまう。

 しかし信号を有る無しの1と0で表現するのであれば容易であることが背景にある。

 

 まず信号の発生では一瞬だけON信号を送ったほうが何かと都合が良いので、パルサー回路を最初に用意する。

 リピーターは2クリックで3tick遅延とする。

f:id:GinMei182:20200415140121p:plain

f:id:GinMei182:20200415135556p:plain

パルサー回路

 次に01信号を作る。

 回路としてはシンプルで、1クリックしたリピーターを重ねて、2tickごとの遅延の差を作った情報を取り出すだけだ。

 点線部に配置するかしないかで000や010という表現が出来る。

 ちなみに、色が薄い四角はハーフブロックだ。ハーフブロックは上側にしか信号を伝えないので何かと便利。

f:id:GinMei182:20200415140159p:plain

f:id:GinMei182:20200415134506p:plain

信号発生部の例

 最後にデジタル信号を受信する必要がある。

 イメージとしては、信号を遅延ごとにわけて受けて、開始信号を利用して一瞬だけ読み取る。

 

 今回は6tick分の信号を受信しきった瞬間にだけリピーターのロックを解除して欲しいので6+6+1=13tick分だけ遅延させている。

f:id:GinMei182:20200415142253p:plain

f:id:GinMei182:20200415141651p:plain

信号受信部の例

 

ちなみに011の時のみ動作する回路とかを目指す場合は、次のような受信器が必要。

f:id:GinMei182:20200415202949p:plain

f:id:GinMei182:20200415203038p:plain

0信号の受信器

 

 

 実際に受信してライトにしてみた例だ。見事、真ん中だけ消灯していることが確認できる。

f:id:GinMei182:20200415142514p:plain

f:id:GinMei182:20200415142444p:plain

 

 応用すれば、1本の線路で複数の信号を受信できるようになる。まあ、それは今後やりたい。