by adversity » Thu Nov 15, 2012 21:26
Hey all,
In case my prior post was not detailed enough, I have conducted more tests in an effort to gain a better understanding of the mechanics. I also managed to find more questions.
/Begin wall of text:
Legend:
cb = cobblestone
mc = microcontroller
sn = sand
sp = sticky piston
sw = switch
Scenario 1:
Sand block on top of 1 Up sticky piston on top of another Up sticky piston powered by switch with just plain mesecon wiring between the bottom UP sticky piston and the switch.
Pre-power:
[sn]
[sp]
[sp]--[sw]
Powered:
[sn]
[sp]
][
[sp]--[sw]
The first piston extends as intended and the second piston does not extend but the sand moves up a block as if the second piston did extend.
Post-power:
[sn]
[sp]
[sp]--[sw]
Turning off the switch retracts the first piston which also lowers the second piston but the sand now stays suspended 2 blocks above the second piston. Oddly enough, if I place a new sand block directly below the suspended sand block, they both fall as intended.
Scenario 2:
Sand block on top of 1 Up sticky piston on top of another Up sticky piston powered by switch with an insulated mesecon connection to just the bottom most piston and another insulated mesecon connection that is 2 blocks high to the top most piston. The connections are separate but run to the same switch.
Pre-power:
[sn]
[sp]---|
[sp]--[sw]
Powered:
[sn]
[sp]
][ ---|
[sp]--[sw]
The first piston extends as intended and the second piston does not extend but the sand moves up a block as if the second piston did extend.
Post-power:
[sn]
[sp]---|
[sp]--[sw]
The outcome is the same as Scenario 1 even though the supply of power has been split for each piston as it is still all arriving immediately.
Scenario 3:
Sand block on top of 1 Up sticky piston on top of another Up sticky piston powered by switch with an insulated mesecon connection to just the bottom most piston and another insulated mesecon connection that is 2 blocks high to the top most piston with an inline micrcontroller delaying the signal to the second piston by 2 seconds. The connections for each piston are separate but run to the same switch.
microcontroller code: after(2, "sbi(A, C)");
{C is the switch side and A is the top piston side}
Pre-power:
[sn]
[sp]--[mc]
[sp]---|--[sw]
Powered:
[sn]
][
[sp]
][ --[mc]
[sp]---|--[sw]
This setup works correctly other than prior to the top piston extending the sand is already a block above the top piston. Once the top piston extends though, everything looks correct.
Post-power:
[sn]
][
[sp]--[mc]
[sp]---|--[sw]
Turning off the switch correctly retracts the bottom piston but breaks the top piston by retracting the bottom half of the piston and leaving the extended arm in place which also keeps the sand suspended. The arm is permanent and cannot be altered by tools.
The only known ways to clean up the arm is to either turn on the switch and turn it off before the 2 second delay powers the top piston or change the microcontroller code to after(2, "sbi(A, C)") off(A); (the latter method actually makes the entire mechanism work correctly - see Scenario 4).
Scenario 4:
Cobblestone block on top of 1 Up sticky piston on top of another Up sticky piston powered by switch with an insulated mesecon connection to just the bottom most piston and another insulated mesecon connection that is 2 blocks high to the top most piston with an inline micrcontroller delaying the signal to the second piston by 2 seconds. The connections for each piston are separate but run to the same switch.
microcontroller code: after(2, "sbi(A, C)") off(A); {C is the switch side and A is the top piston side}
Pre-power:
[cb]
[sp]--[mc]
[sp]---|--[sw]
Powered:
[cb]
][
[sp]
][ --[mc]
[sp]---|--[sw]
This setup works correctly other than prior to the top piston extending the cobblestone is already a block above the top piston. Once the top piston extends though, everything looks correct.
Post-power:
[cb]
[sp]--[mc]
[sp]---|--[sw]
Turning off the switch correctly retracts the bottom piston and the top piston but the cobblestone remains 1 block above the now retracted top piston. No know way to get the suspended cobblestone re-stick to the top sticky piston.
/End wall of text
Can someone smarter than me please explain the following:
Scenario 1 & 2: What causes the sand to stay suspended? It seems something is in the block below it which is why it does not fall as it should nor be pulled down by the sticky piston immediately below it.
Scenario 3: After modifying the microcontroller code to get the mechanism to work correctly, is this working as intended or will there be changes? Are there better means to accomplish the same goal?
Scenario 4: Why does the cobblestone stay suspended?
Thanks for suffering through this long post and for any feedback given!