I am trying to get two pistons to synch their pulses for an item sorter (nether).

In the attached pic:

  1. Observer which has a string in front of it (far side) that sees items drop down out of a cobweb, it pulses the redstone to start the pistons
  2. The primary piston (#2) that pushes the items a block over towards the secondary piston (#3)
  3. The Secondary piston (#3) that pushes the items along the ice path.

The redstone and repeaters are currently set up so that the observer pulse pushes the primary piston first, then after a short delay pushes the secondary piston.

What I am trying to do is prevent the primary piston from extending while the secondary is active. What’s happening is every now and again due to timing of items dropping past the string, the secondary piston is extended and the primary piston pulses pushing items onto the top of the extended slime block attached to the secondary piston, vs. those items dropping into the empty space while it’s withdrawn.

Any help appreciated!

  • Swaziboy@lemmy.worldOP
    link
    fedilink
    English
    arrow-up
    0
    ·
    5 months ago

    OK, so here’s the update. thanks to all the suggestions - I combined a few ideas, and came up with the following solution.

    The observer triggers as items drop, this does two things at once:

    1. Drives a pulse extender which immediately retracts the secondary piston
    2. Pulses the primary piston after a short delay to push the items into the space that the secondary piston just made

    As the clock decays fully the secondary piston fires and pushes the items.

    An added bonus here is spam protection - so if items drop consecutively more quickly than the clock decays, it simply resets the clock so you don’t get pistons firing together, or too quickly. This way nothing ever ends up on the top of the slime/honey blocks. I’ve added a front-side view for those curious as well.

    Thanks for all the help and tips!

  • authorinthedark@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    0
    ·
    5 months ago

    what you could do is set piston 2 to be on an inverted signal from piston 1, instead of having a unique timing.

    what this would do in effect is that piston 2 is extended by default, until an item passes in front of your observer, then piston 2 retracts and piston 1 extends, dropping the item in front of piston 2. and then when the pulse ends piston 1 retracts and piston 2 extends

  • Krucian@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    0
    ·
    5 months ago

    I am by no means good at redstone, so I do not know if my solution is compact or efficient (or any good at all!).

    My approach is to make the pistons fire alternatively constantly until the string is not triggered for a few seconds then it stops firing the pistons. This way there is always a constant piston firing rate and after the last item has fallen through the string the pistons still fire a couple of times just in case some items fell on top of a slime block then this will clear the items.

    In the images you can see I made a pulse extender coming off the observer that is looking at the string. Then there are observers looking at the dust that is part of the pulse extender and every time the pulse degrades the observers trigger. Then after those observers are repeaters to slightly extend the pulse so that the pistons fire slow enough not to leave their slime blocks behind.

    Note that the repeater after the left observer is 3 ticks and the repeater after the right observer is 4 ticks.

    • Swaziboy@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      5 months ago

      I tried to implement this, however my right hand side piston stays extended for the duration of the pulse extender rather than firing and retracting like the left hand side one does. Not sure if I am missing something in the pic that I cannot see. I also wasn’t able to figure out what you’re doing with the dropper - seems like it’s on top of the observer for some reason and the clock coming out of it doesn’t do anything?

      • Krucian@lemmy.sdf.org
        link
        fedilink
        English
        arrow-up
        0
        ·
        5 months ago

        I took another crack at it using a similar concept. This time I separated the pulse extender and the clock. This way it is very reliable and the clock speed and the speed between pistons extending can be easily controlled with the repeaters.

        Basically I have the same pulse extender which switches on a clock. Then each pulse from the clock is connected to the pistons with a repeater going into one piston to make it extend after the first one.

        By the way, the dropper and stuff coming out of it previously was just stuff I saw in your pic and tried to replicate it to see what space I was dealing with, it did nothing. I removed all the extra stuff in the new pics.

        Here are some pics:

        • Swaziboy@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          0
          ·
          5 months ago

          nice! I see we both landed on very similar solutions to this. I’m going to implement your double-reversi loop to see how that plays out - it’s the main difference to mine which keeps the secondary piston extended by default, and it retracts and pushes based on the pulse-extender decaying fully.

          I like this, thanks for sharing!

    • Swaziboy@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      5 months ago

      ok, I think I see how your system works now - I moved the dropper so it drops on the right spot and I now see the pistons firing regularly as expected. It does get a little messy with the speeds of them firing however I really like the idea so thanks for sharing.

  • Cethin@lemmy.zip
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    5 months ago

    I haven’t done much MC Redstone in a long time (not in any significant way since some time observers were added). Couldn’t you take the inverse signal for piston 2 and put it in an and gate to piston 1 (or vice versa). Basically make your circuit (p1/2 is piston 1/2) : p1= observer && !p2. p2 = delayed observer.

    Edit: Actually, the delay might fuck this up. I don’t know if I can help. It’s been far too long. I don’t have the intuition for it anymore.