Начну издалека. Надеюсь, всем знакома такая штучка как повторитель. Как следует из названия, одна из основных его функций - повторять сигнал. Как известно, сигнал, распространяясь по красной пыли, ослабевает на 1 на каждый блок длины, на 15-м блоке имеет минимальную силу, а до 16-го блока совсем не дойдёт. Если нужно передать сигнал на большее расстояние, как раз и нужен повторитель. Принимая на входе сигнал любой силы, пусть хоть самый дохлый, на выходе повторитель выдаёт свеженький максимальный сигнал, который можно передать ещё на 15 блоков. То есть повторитель - это своего рода ретранслятор-усилитель. Однако у этой дивной приблуды есть ещё масса полезнейших свойств, и сегодня нас будет интересовать его способность задерживать сигнал.
По красной пыли сигнал распространяется теоретически мгновенно, а вот через повторитель - с задержкой. Причём задержку эту можно регулировать: от 0,1 до 0,4 секунды на каждом повторителе. То есть, если к повторителю подвести сигнал, то он "включится" и передаст усиленный сигнал дальше не сразу, а через 0,1-0,4 секунды. Важно, что он не только включается с задержкой, но и выключается. То есть если с входа повторителя убрать сигнал, то с его выхода сигнал тоже пропадёт, но не сразу, а с такой же задержкой.
Пара картинок для иллюстрации:
Для чего нам вообще нужна задержка сигнала? Навскидку - две основные надобности:
1) чтобы притормозить слишком быстрый процесс (например - открытие-закрытие двери) и
2) чтобы точно регулировать очерёдность нескольких процессов, например, чтобы какие-нибудь штучки включались не как повезёт, а в строго определённой последовательности - одни раньше, другие позже.
(Кстати, примечание: если кто-то не знает, инвертор, то есть блок с установленным на нём красным факелом гасит или зажигает факел при подаче/отключении сигнала на блок тоже не мгновенно, а с задержкой 0,1 сек. То есть задержку можно организовать без повторителей, при помощи кучи инверторов. Но с повторителями - удобнее и компактнее.)
Вот ещё пример:
Чтобы наша мигалка надёжно работала, нужно поставить на повторителе задержку, хотя бы 0,2 с. А можно добавить ещё один повторитель, это расширит возможности регулировки.
В итоге, у нас получилась стабильно действующая конструкция, которая называется генератор импульсов. В цепи генератора будет то появляться, то исчезать сигнал, частота которого будет зависеть от настройки задержки на повторителях. Что тут важно: во-первых, работать оно будет автоматически, а во вторых периоды включения/выключения будут строго определённой равной длительности (конкретно на картинке - по 0,7 секунды):
Если сигнал с генератора подать на какой-нибудь прибор (лампу, дверь, поршень и т.д.) то этот прибор, естественно, так же будет включаться/выключаться с заданным интервалом.
Очень важная штука!
Подобные красивые часто мигающие устройства могут довольно сильно грузить комп, в том числе и сервер, ведь процессору нужно будет помимо всех своих других забот непрерывно рассчитывать силу сигнала в каждой точке цепи, рассчитывать меняющийся уровень освещения от ламп, отображать соответствующую картинку и т.д. Поэтому не следует строить подобные постоянно работающие схемы без особенной надобности.
Наше же устройство почти всё время будет находиться в заблокированном (выключенном) состоянии и включаться будет лишь изредка и на очень короткое время.
План таков: использовать его в качестве автоматического переключателя, который в нужный момент будет зажигать лампу, а когда надобность исчезнет - гасить. То есть, нам нужно, чтобы генератор включался на короткое время, отрабатывал половину своего цикла, переключал состояние лампы, и снова выключался уже в другом состоянии.
Как это сделать? А есть такое средство. Моджанги почему-то не додумались сделать простейший выключатель, то есть размыкатель цепи, но зато эти ребята изобрели способ блокировки повторителей (кажется это дело введено с версии 1.7).
Примеры блокировки повторителей:
Применив блокирование одного из повторителей генератора в нашей схеме, мы получаем устройство, которое фактически тоже является ячейкой памяти: блокируя генератор в нужный момент, мы можем заставить его "запомнить" - подавать ли сигнал на лампу или нет, и оставлять его в таком состоянии на любое необходимое нам время.
В отличие от простейшей ячейки памяти (научно называемой RS NOR trigger), у которой переключение происходит подачей сигналов из двух разных источников, наша ячейка управляется (включается и выключается) по одной и той же линии - по линии блокировки повторителя. То есть включать-выключать лампу мы можем одной и той же кнопкой. Такая ячейка памяти называется T-trigger.
Т-триггеры вообще-то могут быть разных конструкций, в нашем случае - это генератор импульсов+возможность его блокировки. Симпатичная компактная схемка:
Вот в результате получилось устройство, позволяющее включать-выключать лампу нажатием одной и той же кнопки:
Если выставить общую задержку на генераторе не 0,3 секунды (как на картинке), а например 0,8-0,9 то данная схема будет отлично работать с каменной кнопкой. Схема вроде бы достаточно проста. Как ни странно, гораздо сложнее чётко уяснить КАК оно всё таки работает!
Смысл простой: снять с генератора блокировку (то есть включить его) нужно ровно на такое время, за которое он успеет переключиться в противоположное состояние, и не успеет ещё вернуться в исходное. А потом быстренько его выключить!
То есть если генератор настроен на переключение за 0,3 секунды (как на картинке), то, казалось бы, вот и ответ - на сколько нужно снимать блокировку. Однако ещё имеет важное значение от какого элемента генератора запитана лампа. Если внимательно посмотреть на схему, то станет ясно, что при данном расположении элементов сигнал на лампу будет подан уже через 0,1 секунду после снятия блокировки. То есть через 0,2 секунды уже можно спокойно снова заблокировать (отключить) генератор, в положении, в котором лампа - горит.
Однако если мы применяем именно каменную кнопку, блокировка с генератора будет снята не на 0,2 и не на 0,3 секунды, а ровно на секунду. Это обусловлено свойствами самой кнопки: она выдаёт сигнал длительностью 1 секунду, хотим мы этого или нет.
То есть, ещё раз: нажимая каменную кнопку, мы разблокируем (включаем) генератор импульсов ровно на 1 секунду. Поскольку цикл нашего генератора гораздо меньше, то за эту секунду лампа успеет несколько раз зажечься и снова погаснуть. В принципе не смертельно, но некрасиво.
Поскольку на саму кнопку мы повлиять не можем, остаются два выхода: или вставить между кнопкой и Т-триггером дополнительное устройство, формирующее сигнал нужной длительности (так называемый детектор фронта сигнала), или просто увеличить длительность цикла генератора, увеличив задержку на его повторителях.
Выставив на повторителях генератора максимальную задержку (по 0,4 сек.) мы получим такую картину (следите за махинациями внимательно):
1! Тыкнули в кнопку, блокировка снята, генератор включился, пошёл отсчёт времени.
2! Через 0,4 секунды включится первый повторитель (с которого сняли блокировку). Тут же загорится лампа.
3! Ещё через 0,4 секунды включится второй повторитель, лампа продолжает гореть.
4! Ещё через 0,1 секунды погаснет факел (лампа продолжает гореть, поддерживаемая первым повторителем).
5! Ещё через 0,4 секунды первый повторитель должен выключиться и погасить лампу, однако он не успеет этого сделать, потому что 1 секунда, любезно предоставленная нашей каменной кнопкой, к этому времени закончится, и повторитель (и генератор в целом) будет вновь заблокирован. Только уже в альтернативном состоянии. Лампа останется гореть, пока кто-то опять кнопкой не снимет блокировку.
Выключение лампы будет происходить по приблизительно такой же процедуре.
Данная схема с указанными настройками сможет работать только с каменной кнопкой, нажимными плитами, растяжками, поскольку время их срабатывания не превышает 1 секунды. Однако, например, деревянная кнопка остаётся нажатой целых полторы секунды, и все приведённые расчёты и настройки будут неактуальны. Чтобы адаптировать схему к деревянной кнопке, возможно придётся добавить в генератор третий повторитель... Впрочем - разберётесь )).
Лампу не обязательно подключать именно как на картинке. Её можно запитать от любого доступного элемента генератора - например от блока инвертора или от факела инвертора. Это повлияет на момент её зажигания, но на работоспособность всей схемы - нет. В нашей схеме лампа будет максимально быстро реагировать на нажатие кнопки, при подключении же к факелу инвертора лампа зажигалась бы и гасла с небольшой задержкой.
Прозорливый читатель скажет: "Ни фига се нагородил! Ведь всю эту замороку можно заменить ОДНИМ ЕДИНСТВЕННЫМ рычагом-выключателем! Повернул рычаг - включил лампу, повернул в другую сторону - выключил. Ни тебе повторителей, ни тебе генераторов, ни тебе бредовых T-trigger-ов и вычислений каких-то там миллисекунд..."
НО! Настоящий майнкрафтер - не ищет лёгких путей. Настоящие герои всегда идут в обход! И в конце концов - кого можно удивить банальным рычагом?
Если серьёзнее, то самое главное следствие из данного урока: нажатие на одну и ту же кнопку может давать РАЗНЫЙ результат. Например, можно придумать схемку, когда первое нажатие на кнопку открывает дверь, и идущий первым спокойно продолжает путь через открывшийся проход. Второе же нажатие, к примеру, может открывать уже другую дверь, или вообще - открывать секретный люк под ногами и сбрасывать неудачливого второго посетителя в погреб. Простор для фантазии...
По красной пыли сигнал распространяется теоретически мгновенно, а вот через повторитель - с задержкой. Причём задержку эту можно регулировать: от 0,1 до 0,4 секунды на каждом повторителе. То есть, если к повторителю подвести сигнал, то он "включится" и передаст усиленный сигнал дальше не сразу, а через 0,1-0,4 секунды. Важно, что он не только включается с задержкой, но и выключается. То есть если с входа повторителя убрать сигнал, то с его выхода сигнал тоже пропадёт, но не сразу, а с такой же задержкой.
Пара картинок для иллюстрации:
Для чего нам вообще нужна задержка сигнала? Навскидку - две основные надобности:
1) чтобы притормозить слишком быстрый процесс (например - открытие-закрытие двери) и
2) чтобы точно регулировать очерёдность нескольких процессов, например, чтобы какие-нибудь штучки включались не как повезёт, а в строго определённой последовательности - одни раньше, другие позже.
(Кстати, примечание: если кто-то не знает, инвертор, то есть блок с установленным на нём красным факелом гасит или зажигает факел при подаче/отключении сигнала на блок тоже не мгновенно, а с задержкой 0,1 сек. То есть задержку можно организовать без повторителей, при помощи кучи инверторов. Но с повторителями - удобнее и компактнее.)
Вот ещё пример:
Чтобы наша мигалка надёжно работала, нужно поставить на повторителе задержку, хотя бы 0,2 с. А можно добавить ещё один повторитель, это расширит возможности регулировки.
В итоге, у нас получилась стабильно действующая конструкция, которая называется генератор импульсов. В цепи генератора будет то появляться, то исчезать сигнал, частота которого будет зависеть от настройки задержки на повторителях. Что тут важно: во-первых, работать оно будет автоматически, а во вторых периоды включения/выключения будут строго определённой равной длительности (конкретно на картинке - по 0,7 секунды):
Если сигнал с генератора подать на какой-нибудь прибор (лампу, дверь, поршень и т.д.) то этот прибор, естественно, так же будет включаться/выключаться с заданным интервалом.
Очень важная штука!
Подобные красивые часто мигающие устройства могут довольно сильно грузить комп, в том числе и сервер, ведь процессору нужно будет помимо всех своих других забот непрерывно рассчитывать силу сигнала в каждой точке цепи, рассчитывать меняющийся уровень освещения от ламп, отображать соответствующую картинку и т.д. Поэтому не следует строить подобные постоянно работающие схемы без особенной надобности.
Наше же устройство почти всё время будет находиться в заблокированном (выключенном) состоянии и включаться будет лишь изредка и на очень короткое время.
План таков: использовать его в качестве автоматического переключателя, который в нужный момент будет зажигать лампу, а когда надобность исчезнет - гасить. То есть, нам нужно, чтобы генератор включался на короткое время, отрабатывал половину своего цикла, переключал состояние лампы, и снова выключался уже в другом состоянии.
Как это сделать? А есть такое средство. Моджанги почему-то не додумались сделать простейший выключатель, то есть размыкатель цепи, но зато эти ребята изобрели способ блокировки повторителей (кажется это дело введено с версии 1.7).
Примеры блокировки повторителей:
Применив блокирование одного из повторителей генератора в нашей схеме, мы получаем устройство, которое фактически тоже является ячейкой памяти: блокируя генератор в нужный момент, мы можем заставить его "запомнить" - подавать ли сигнал на лампу или нет, и оставлять его в таком состоянии на любое необходимое нам время.
В отличие от простейшей ячейки памяти (научно называемой RS NOR trigger), у которой переключение происходит подачей сигналов из двух разных источников, наша ячейка управляется (включается и выключается) по одной и той же линии - по линии блокировки повторителя. То есть включать-выключать лампу мы можем одной и той же кнопкой. Такая ячейка памяти называется T-trigger.
Т-триггеры вообще-то могут быть разных конструкций, в нашем случае - это генератор импульсов+возможность его блокировки. Симпатичная компактная схемка:
Вот в результате получилось устройство, позволяющее включать-выключать лампу нажатием одной и той же кнопки:
Если выставить общую задержку на генераторе не 0,3 секунды (как на картинке), а например 0,8-0,9 то данная схема будет отлично работать с каменной кнопкой. Схема вроде бы достаточно проста. Как ни странно, гораздо сложнее чётко уяснить КАК оно всё таки работает!
Смысл простой: снять с генератора блокировку (то есть включить его) нужно ровно на такое время, за которое он успеет переключиться в противоположное состояние, и не успеет ещё вернуться в исходное. А потом быстренько его выключить!
То есть если генератор настроен на переключение за 0,3 секунды (как на картинке), то, казалось бы, вот и ответ - на сколько нужно снимать блокировку. Однако ещё имеет важное значение от какого элемента генератора запитана лампа. Если внимательно посмотреть на схему, то станет ясно, что при данном расположении элементов сигнал на лампу будет подан уже через 0,1 секунду после снятия блокировки. То есть через 0,2 секунды уже можно спокойно снова заблокировать (отключить) генератор, в положении, в котором лампа - горит.
Однако если мы применяем именно каменную кнопку, блокировка с генератора будет снята не на 0,2 и не на 0,3 секунды, а ровно на секунду. Это обусловлено свойствами самой кнопки: она выдаёт сигнал длительностью 1 секунду, хотим мы этого или нет.
То есть, ещё раз: нажимая каменную кнопку, мы разблокируем (включаем) генератор импульсов ровно на 1 секунду. Поскольку цикл нашего генератора гораздо меньше, то за эту секунду лампа успеет несколько раз зажечься и снова погаснуть. В принципе не смертельно, но некрасиво.
Поскольку на саму кнопку мы повлиять не можем, остаются два выхода: или вставить между кнопкой и Т-триггером дополнительное устройство, формирующее сигнал нужной длительности (так называемый детектор фронта сигнала), или просто увеличить длительность цикла генератора, увеличив задержку на его повторителях.
Выставив на повторителях генератора максимальную задержку (по 0,4 сек.) мы получим такую картину (следите за махинациями внимательно):
1! Тыкнули в кнопку, блокировка снята, генератор включился, пошёл отсчёт времени.
2! Через 0,4 секунды включится первый повторитель (с которого сняли блокировку). Тут же загорится лампа.
3! Ещё через 0,4 секунды включится второй повторитель, лампа продолжает гореть.
4! Ещё через 0,1 секунды погаснет факел (лампа продолжает гореть, поддерживаемая первым повторителем).
5! Ещё через 0,4 секунды первый повторитель должен выключиться и погасить лампу, однако он не успеет этого сделать, потому что 1 секунда, любезно предоставленная нашей каменной кнопкой, к этому времени закончится, и повторитель (и генератор в целом) будет вновь заблокирован. Только уже в альтернативном состоянии. Лампа останется гореть, пока кто-то опять кнопкой не снимет блокировку.
Выключение лампы будет происходить по приблизительно такой же процедуре.
Данная схема с указанными настройками сможет работать только с каменной кнопкой, нажимными плитами, растяжками, поскольку время их срабатывания не превышает 1 секунды. Однако, например, деревянная кнопка остаётся нажатой целых полторы секунды, и все приведённые расчёты и настройки будут неактуальны. Чтобы адаптировать схему к деревянной кнопке, возможно придётся добавить в генератор третий повторитель... Впрочем - разберётесь )).
Лампу не обязательно подключать именно как на картинке. Её можно запитать от любого доступного элемента генератора - например от блока инвертора или от факела инвертора. Это повлияет на момент её зажигания, но на работоспособность всей схемы - нет. В нашей схеме лампа будет максимально быстро реагировать на нажатие кнопки, при подключении же к факелу инвертора лампа зажигалась бы и гасла с небольшой задержкой.
Прозорливый читатель скажет: "Ни фига се нагородил! Ведь всю эту замороку можно заменить ОДНИМ ЕДИНСТВЕННЫМ рычагом-выключателем! Повернул рычаг - включил лампу, повернул в другую сторону - выключил. Ни тебе повторителей, ни тебе генераторов, ни тебе бредовых T-trigger-ов и вычислений каких-то там миллисекунд..."
НО! Настоящий майнкрафтер - не ищет лёгких путей. Настоящие герои всегда идут в обход! И в конце концов - кого можно удивить банальным рычагом?
Если серьёзнее, то самое главное следствие из данного урока: нажатие на одну и ту же кнопку может давать РАЗНЫЙ результат. Например, можно придумать схемку, когда первое нажатие на кнопку открывает дверь, и идущий первым спокойно продолжает путь через открывшийся проход. Второе же нажатие, к примеру, может открывать уже другую дверь, или вообще - открывать секретный люк под ногами и сбрасывать неудачливого второго посетителя в погреб. Простор для фантазии...
Последнее редактирование: