Minecraft Wiki
Advertisement

Редстоун (красный камень, порошок) используется для создания электрических цепей. Используя свойства редстоуна можно выполнять простейшие логические операции

Основы

Очень важно понять основные свойства, потому что на них и будет строиться всё остальное. Нельзя просто запомнить основные гейты и использовать их, нужно понять как они работают.

Итак, два основных элемента, используемых для создания редстоун цепей - красный порошок и красный факел.

Красный порошок выполняет функцию провода, а красный факел - функцию источника питания.

Провода и факелы могут находиться в двух состояниях: включен и выключен.

Если факел или провод горит - он включён, если нет - выключен.

Факел, находясь на смежном с проводом блоке, "зажигает" его:

Файл:Redstone1.jpg

Факел можно установить и на блок:

Обратите внимание, что факел занимает клетку и на полу, поэтому разместить провод прямо под факелом не получится, поэтому мы размещаем его на следующей клетке

Файл:Redstone2.jpg

Заметьте, что такой вариант зажигать провод не будет:

Файл:Redstone3.jpg

Факел на вершине блока будет зажигать только провода, находящиеся в одной плоскости с ним:

Файл:Redstone4.jpg

Если к блоку, на вершине которого установлен факел, подвести включённый провод, то он активирует этот блок и факел тухнет:

Файл:Redstone5.jpg

Как видите, то же самое происходит с факелом, расположенным на любой стороне "активированного" блока, не только на вершине, и этот факел перестаёт подавать энергию проводам:

Файл:Redstone6.jpg

Отсюда выводим важное свойство:

Факел, к которому не подведены горящие провода, будет гореть и подавать энергию другим проводам, однако если к блоку, на котором установлен этот факел, подвести горящий провод, то факел потухнет.

Провода можно также разветвлять:

Файл:Redstone7.jpg

"Зажигать" провода и факелы можно также с помощью рычагов, кнопок и нажимных плит.

Рычаг может переключаться между значениями 1 и 0 (включён и выключен)

Кнопка при нажатии передаёт значение 1 и переключается обратно на 0

Нажимная плита передает значение 1 пока она нажата, если она не нажата, она передаёт 0

Мы во всех примерах будем использовать рычаги, они более наглядны.

Рычаг, присоединённый к проводу, во включённом состоянии зажжёт его:

Файл:Redstone8.jpg

Рычаг, присоединённый напрямую к блоку с факелом, "активирует" блок и, соответственно, потушит факел:

Файл:Redstone9.jpg

Необязательно устанавливать факел наверх, его можно закрепить на любой стороне блока

Потушить рычагом факел можно и подсоединив его к проводу, который подключен к блоку с факелом:

Файл:Redstone10.jpg

Горящий провод на вершине блока потушит факел на стороне этого блока:

Файл:Redstone11.jpg

Основы алгебры логики в редстоун цепях

Как видно из всего выше перечисленного элементарными логическими операциями для редстоун цепей являются

  • инверсия (¬a; не a; not(a)) (выключение факела включенным проводом)
a 0 1
¬a 1 0
  • сложение (a+b; а или b; or(a,b)) (провод включен, если хотя бы один из воздействующих на него входов включен)
a 0 0 1 1
b 0 1 0 1
a+b 0 1 1 1

Все остальные логические операции [1] основаны на комбинациях этих двух. Для их построения используются также некоторые законы:

¬¬a=a (двойная инверсия)

a*a=a

a+a=a

a* ¬a=0

a+ ¬a=1

a*1=a

a*0=0

a+1=1

a+0=a

a+a*b=a (закон поглощения)

¬(a*b) = ¬a+ ¬b (инверсия умножения есть сложение инверсий)

¬(a+b) = ¬a* ¬b (инверсия сложения есть умножение инверсий)

Например операция умножения строится так:

а*b= ¬¬(a*b)= ¬(¬a+ ¬b)

Для построения сложных цепей с большим количеством входов и/или выходов удобно использовать так называемый метод дизъюнкции (сложения). Например нам нужна некоторая схема, которая на основе трех входов дает на выходе такие значения:

a 0 0 0 0 1 1 1 1
b 0 0 1 1 0 0 1 1
c 0 1 0 1 0 1 0 1
f(a,b,c) 0 1 1 0 0 0 1 0

Для нахождения функции f(a,b,c) выберем из таблицы все столбцы, в которых она принимает значение 1 (второй, третий и седьмой).

f(a,b,c) будет равна сумме произведений a, b и c по соответствующим столбцам: если какой-либо из входов в этом столбце равен 1, то в произведение войдет его истинное значение (a, b или c), если 0, то в произведение войдет его инверсия (¬a, ¬b или ¬c)

f(a,b,c)= (¬a* ¬b *c)+(¬a*b* ¬c)+(a*b* ¬c) (слагаемые соответсвуют второму, третьему и седьмому столбцу)

Теперь эту функцию можно реализовать в таком виде с помощью соответствующих гейтов AND, OR и NOT. Однако, для уменьшения размеров схемы ее можно упростить, например так:

f(a,b,c)= (¬a* ¬b *c)+(¬a*b* ¬c)+(a*b* ¬c)= (¬a* ¬b *c)+(b* ¬c)*(¬a+a)= (¬a* ¬b *c)+(b* ¬c)

или так:

f(a,b,c)= (¬a* ¬b *c)+(¬a*b* ¬c)+(a*b* ¬c)= ¬a*(¬b*c+b* ¬c)+(a*b* ¬c)= ¬a*xor(b,c)+(a*b* ¬c)[2]

Гейты

Гейт (англ. gate - шлюз) - конструкция, выполнящая простейшие логические операции, принимая один или несколько инпутов (входных значений) и, после некоторых преобразований, выводя их в один или несколько аутпутов (выходных значений).

NOT Gate

NOT(a)= ¬a

Данный гейт также называют инвертор, он выводит аутпут, противоположный инпуту.

То есть принимая значение 1, он выводит 0, и наоборот.

Файл:Redstone13.jpg

Два этих гейта подряд называются репитер: сигнал дважды инвертируется и выходной сигнал получается тот же, что и входной. Это используется, чтобы продлить цепь, так как длина одного провода ограничена 15-ю блоками, а с использованием репитера его можно продлить ещё на 15 и так до бесконечности. Также этот гейт можно использовать, чтобы "перехватить" сигнал (об этом позже)

Файл:Redstone14.jpg

OR Gate

OR(a,b,c)= ¬¬(a+b+c)

Этот гейт выводит аутпут 1, когда хотя бы один из инпутов равен 1

Файл:Redstone15.jpg

Инвертер можно и не использовать, тогда аутпут будет включен, когда все инпуты выключены, и выключен, когда хотя бы один инпут включён.

NOR(a,b,c)= ¬(a+b+c)

Файл:Redstone16.jpg

AND Gate

AND(a,b)= ¬(¬a+ ¬b)

Этот гейт выводит аутпут 1, когда оба инпута равны 1

Файл:Redstone17.jpg

Можно также не использовать инвертирование, тогда, соответственно, всё будет работать наоборот

NAND(a,b)= ¬a+ ¬b

Файл:Redstone18.jpg

XOR/XNOR Gate

XOR(a,b)= ¬(¬a+ ¬(¬a+ ¬b))+ ¬(¬b+ ¬(¬a+ ¬b))

Этот гейт выводит аутпут 1, когда инпуты НЕ равны друг другу.

Файл:Redstone19.jpg

Можно также использовать инвертер, чтобы аутпут выводил 1, когда инпуты РАВНЫ друг другу.

XNOR(a,b)= ¬[¬(¬a+ ¬(¬a+ ¬b))+ ¬(¬a+ ¬(¬a+ ¬b))]

Файл:Redstone20.jpg

RS NOR Latch

Простейшая запоминающая конструкция. Когда инпут "Input" включается, аутпут будет оставаться включённым, пока не будет задействован инпут "Reset", даже если вернуть значение 0 инпуту "Input"

Файл:Redstone21.jpg

Фишка здесь в том, что при включении инпута "Input", включается факел-перехватчик сигнала, который держит факел инпута "Input" включённым, пока факел-перехватчик не будет выключен инпутом "Reset".

Можно объяснить по-другому: замкнутая система из двух инвертеров стабильна и находится в одном из двух положений. (Инверторы могут быть включены двумя способами). Если подать ток на активный инвертор (выключить его) - система изменит свое положение на другое - это вход Input. Если подать ток на другой инвертер, система снова сменит свое состояние, т.е. вернется в первое положение - это работа входа Reset.

Примечание. Вместо рычага для Reset нужно использовать кнопку.

Вариант с одним переключателем

В некоторых случаях удобен элемент, имеющих один вход и два выхода и переключающийся между ними по сигналу со входа.

Файл:Button-controlled trigger.png

Работает эта схема так: при нажатии кнопки подаются сигналы на гейты AND, один из которых ("активный", на скриншоте - правый) пропускает сигнал и меняет состояние ячейки памяти. После смены состояния включается провод, ведущий к другому гейту, и он становится "активным". Таким образом, при следующем нажатии состояние выходов снова сменится. Повторители нужны для упорядочивания действий системы - сначала смена состояния запоминающей ячейки, потом отключение кнопки и только потом смена "активного" гейта.

Схема очень простая, но может возникнуть сложность с проводкой - в одном месте есть пересечение двух проводов, которые не должны замкнутся.

RS NAND Latch

Ещё одно запоминающее устройство. Когда оба инпута выключены, оба аутпута включены. Когда один из инпутов включается, аутпут рядом с ним гаснет. Если после этого включить второй инпут (не выключая первый), всё останется как было, пока противоположный инпут не будет выключен. Внимательно разберитесь как работает данный гейт.

Файл:Redstone22.jpg

Clock generators

Эти конструкции просто по очереди включают/выключают факелы бесконечно. Для этого нужно просто сделать замкнутую цепочку из инвертеров. Самая быстрая стабильная цепочка это 5 инвертеров (на скриншоте). Если делать их меньше, то цепь просто "перегорит". Чтобы сделать задержку между миганиями больше, просто ставьте больше инвертеров. Инвертеров должно быть нечетное количество.

Очень важный момент! Все схемы работающие на основе клок генератора останавливаются, если выходят за пределы активной зоны(если поблизости нет ни одного игрока). Для возвращения им работоспособности нужно перезапустить генератор.

Файл:Redstone23.jpg

Также можно сделать цепочку из 1 инвертора и 1 повторителя. Такая схема занимает меньше места, можно регулировать скорость (используя повторители, которых можно добавить сколько угодно), и, если на повторителе установить максимальную задержку, цепь не "перегорит" и будет работать гораздо быстрее, а также к инвертору можно добавить рычаг, чтобы включать/выключать генератор.

Файл:Clock generator1.png

Также, можно создать сверхбыстрый вариант Clock generator'a. Смысл его действия основан на том, что поданый красным факелом ток сразу же возвращается на блок откуда был подан. Это позволяет достичь максимальной скорости пульсирования. Что эффективно в совокупности, например, с Раздатчиком. Самый надежный вариант этой конструкции состоит из 4х красных факелов, 5 редстоуна и 5 токопроводимых блоков (напр. булыжника). Поставьте 1 токопроводимый блок. С 4 сторон на него установите красные факелы. Сверху каждого факела нужно поставить также по блоку. Середина между ними должна быть пуста. Сверху на все 5 блоков положите редстоун. Готово:
Вид сбоку (с раздатчиком)
Файл:Clockgener2.png
Вид сверху:
Файл:Clockgener3.png
Ну вот и всё. В принципе редстоун элементарен, главное разобраться в основах.

Также можно сделать Clock генератор из двух повторителей. Как его построить изображено на скриншоте ниже. Там где красный факел нарисован пэйнтом, его нужно поставить и сразу же убрать, чтобы не успело пройти время, за которое повторитель пускает сигнал. в случае на скриншоте, это 0.4 секунды. Можно попробовать и быстрее. Минусом является выключение при выходе с карты. Однако на серверах перезагрузка происходит редко. Красный факел лучше заменить на рычаг, а потом просто быстро включить и выключить его. Также после входа на карту, чтобы восстановить систему достаточно будет снова включить и выключить его. (Только если система заработала, рычаг больше не трогайте)

Файл:Redpulse.png

Смотрите также

Практическое применение редстоуна
Справка по элементам схем из красного камня

Примечания

    • умножение (a*b; a и b; and(a,b))
    • строгое или (a xor b; либо a либо b; xor(a,b))
    • операции nor(a,b), nand(a,b), xnor(a,b) являются инверсиями соответсвующих операций
    a 0 0 1 1
    b 0 1 0 1
    a*b 0 0 0 1
    xor(a,b) 0 1 1 0
  1. действительно, применяя метод дизъюнкции к таблице истинности для xor имеем: xor(a,b)= ¬a*b+b* ¬a
Advertisement