Перейти к содержимому
  • 0
lag2016

управление редстоуном

Вопрос

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

"У меня вот на столе лежит непонятная штуковина, если её трясти долго то там появляются пузырьки, а если ею царапать стол, то пузырьки исчезают. Помогите найти зарядку для этой штуковины, она приятно пахнет"

Примерно так я вижу эту просьбу о помощи ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

могу посоветовать Stem для передачи данных

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Насколько я знаю сервер одновременно поддерживает максимум 4 Редстоун карты. Соответственно и выдавать сигнал сможет на 4 Редстоун линии. Теоретически это позволяет отсылать 4-х битный адрес с сервера и преобразовать его используя логические элементы из ванильного Майнкрафта в переключатель воздействующий максимум на 16-ть Редстоун линий. То есть если сам топик стартер может реализовать описанное выше преобразование используя ванильную Редстоун механику, то  ТЗ может быть кем-нибудь решено. Если, соответственно, найдется желающий заняться этим. 

Лично я не пользовался в Open Computers ни серверами, ни планшетами, а потому помочь вряд ли смогу. Да и сам Майнкрафт от меня сейчас далёк.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
59 минут назад, Taoshi сказал:

Насколько я знаю сервер одновременно поддерживает максимум 4 Редстоун карты

Если есть цветные провода редстоуна, то можно подавать информацию на 16 цветов провода, соотвественно 64 контакта можно задействовать. А если учесть, что можно задействовать внешний контроллер красного камня, то вырастает система до 354 контактов (59 блока), ну а если добавить контроллер линий, то тут уже я затрудняюсь подсчитать количество контактов, так как их становится очень много.

Скрытый текст

для тех кто не верит, что можно подключить столько контроллеров

ruwN2Mf.png

слева, вариант как задействавать все стороны контроллера

 

Изменено пользователем Asior
поправка рассчетов

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно наипростейшим способом будет использовать четыре сервера связанные с планшетом через сеть, сервера при первом включении отсылают сигнал через заданный порт. Планшет эти сигналы ловит и составляет список серверов одновременно номеруя их. После чего в сервера ставятся Редстоун карты в порядке соответствующем подключенным лампам. Сервера ловят события добавления компонента и составляют нлмерованную таблицу их. Во время работы планшет принимает от пользователя номер лампы, делит его на три чтобы узнать номер сервера для отправки данных и отсылает ему остаток от деления (0...2) означающий номер лампы в юрисдикции сервера. пример {lamp=0, set=on}.

Вроде расписал алгоритм в рамках мода opencomputers...

 

Так же смотрите

https://ocdoc.cil.li/block:redstone_io

Это позволит полностью решить задачу без эпичных вышеописанных костылей, фанатом которых я иногда являюсь :-)

Изменено пользователем Taoshi

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@lag2016 Если я верно понял, проще всего сделать так:

- консольная программа на OC-планшете (turn-on.lua, например) принимает в качестве аргумента номер лампы, которую надо включить/выключить, и пересылает на OC-сервер с помощью беспроводной сетевой карты сообщение;

- программа в авторане OC-сервера добавляет слушателя на сообщения беспроводной сетевой карты; этот слушатель и переключает редстоун-блоки.

Вот простейший вариант программы:

-- программа-клиент
-- использовать как  <путь к программе> +<номер лампы, чтобы включить>
--             либо  <путь к программе> -<номер лампы, чтобы выключить>
local com = require 'component'
local lamp = (...) -- достаём первый аргумент из переданных
com.modem.broadcast(8833, lamp)

-------------------

-- программа-сервер
local com = require 'component'
local evt = require 'event'
local sid = require 'sides'

local redstones = {}
for rs_addr in com.list('redstone') do
  redstones[#redstones + 1] = com.proxy(rs_addr)
end

com.modem.open(8833)
evt.listen('modem_message', function(_, _, _, port, _, data)
  if port ~= 8833 then return end
  if data:sub(1, 1) == '+' then
    redstones[tonumber(data:sub(2, 2))].setOutput(sid.top, 15)
  elseif data:sub(1, 1) == '-' then
    redstones[tonumber(data:sub(2, 2))].setOutput(sid.top, 0)
  end
end)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...