Wie schreibe ich dieses Programm in Computercraft (Minecraft)?
Hallo, ich brauche ein Programm was folgendes können soll: Wenn ein kurzes Redstone Signal (Zum Beispiel von einem Knopf) in die rechte Seite vom Computer eingeleitet wird soll der Computer nichts machen, wenn aber ein langes und bleibendes Redstone Signal von der rechten Seite des Computers eingeleitet wird soll der Computer ebenfalls ein Redstone Signal aus der linken Seite des Computers ausgeben, bis das Signal von rechts aufhört. Der Computer soll unendlich Prüfen ob ein kurzes oder ein langes Signal von rechts kommt. Ich hoffe ihr versteht was ich meine. Wäre total super wenn mir jemand helfen könnte.
2 Antworten
Die Auslösezeiten, kurz und lang müssen festgelegt werden.
Wir sagen mal 'kurz' ist bis zu einer Sekunde,
'lang' ist alles was darüber ist.
--erstmal warten bis ein Signal kommt
while rs.getInput("right") == false do
sleep(0.1) -- wir tun was in der schleife, damit CC nicht meckert.
end
-- jetzt liegt ein Signal an, also 'messen' wir die Dauer
dauer= 0
while rs.getInput("right")== true do
sleep(0.1)
dauer=dauer + 0.1
-- wenn das Signal nach einer Sekunde immer noch anliegt, schicken wir ein Signal nach links raus
if dauer > 1 then -- hier wird die grenze zwischen kurz / lang definiert
rs.setOutput("left", "true")
end
end
-- jetzt warten wir solange, bis das Signal erlischt.
while rs.getInput("right")== true
sleep(0.1)
end
-- Signal ist wieder weg, also schalten wir auch das Redstone Signal wieder aus
rs.setOutput("left", "false")
Spätestens hier fehlt mir die info für den 'äusseren Rahmen', soll die Funktion sich selber immer wieder aufrufen, oder was passiert da sonst noch. In welchen Kontext findet das Ganze statt ?
p.s.: ich hab nix getestet, das ist einfach so runtergeschrieben
Hy,
hier das fertige Programm. Es läuft in einer Endlosschleife.
Der Versuchsaufbau von links nach rechts ist
ein rs-schalter,zwei rs-leitungen,eine Turtle,zwei rs-leitungen, eine rs-lampe.
Die Kroete steht also zwischen Schalter und Lampe, verbunden durch rs Leitungen.
Gruss,
Hotte
while true do
signalverzoegerung= 2
ausloeser= false
-- warten bis ein Signal kommt
while rs.getInput("left")== false do
sleep(0.2)
end
-- Signallänge messen
while rs.getInput("left") == true and ausloeser == false do
sleep(0.2)
signalverzoegerung= signalverzoegerung - 0.2
if signalverzoegerung < 0 then
-- Zeit ist erreicht, Ausloeser setzen,
-- dadurch wird die Schleife verlassen
-- Sie wird auch dann verlassen, wenn das
-- Eingangssignal vorher abfällt, nur wurde
-- dann der Ausloeser nicht gesetzt
ausloeser= true
end
end
-- wenn der Ausloeser gesetzt wurde
if ausloeser== true then
-- Ausgangssignal setzen
rs.setOutput("right", true)
--warten bis der Eingang wieder abfällt
while rs.getInput("left") == true do
sleep(0.2)
end
-- Ausgang zurücksetzen
rs.setOutput("right", false)
end
end
Hy,
hier das fertige Programm. Es läuft in einer Endlosschleife.
Der Versuchsaufbau von links nach rechts ist
ein rs-schalter,zwei rs-leitungen,eine Turtle,zwei rs-leitungen, eine rs-lampe.
Die Kroete steht also zwischen Schalter und Lampe, verbunden durch rs Leitungen.
Gruss,
Hotte
p.s.: Ich habe den Verdacht, das könnte auch ganz leicht mit einer Redstoneschaltung erreichen, doch da kenn ich mich nicht so mit aus.
while true do
signalverzoegerung= 2
ausloeser= false
-- warten bis ein Signal kommt
while rs.getInput("left")== false do
sleep(0.2)
end
-- Signallänge messen
while rs.getInput("left") == true and ausloeser == false do
sleep(0.2)
signalverzoegerung= signalverzoegerung - 0.2
if signalverzoegerung < 0 then
-- Zeit ist erreicht, Ausloeser setzen,
-- dadurch wird die Schleife verlassen
-- Sie wird auch dann verlassen, wenn das
-- Eingangssignal vorher abfällt, nur wurde
-- dann der Ausloeser nicht gesetzt
ausloeser= true
end
end
-- wenn der Ausloeser gesetzt wurde
if ausloeser== true then
-- Ausgangssignal setzen
rs.setOutput("right", true)
--warten bis der Eingang wieder abfällt
while rs.getInput("left") == true do
sleep(0.2)
end
-- Ausgang zurücksetzen
rs.setOutput("right", false)
end
end

gerne geschehen,
nebenbei ist mir schon oft aufgefallen, das in irgendwelchen Foren blabla geschrieben wird anstatt ein Antwort zu präsentieren, anscheinend werden nur Punkte gesammelt.
Was hilft es jemandem wenn als antwort such mal bei Google geschrieben wird, dat is doch Kuhmist.
Vielen, Dank für deine Antwort. Ich habe ehrlich gesagt nicht mehr gedacht, dass jemand sich die Zeit nimmt um mir zu Helfen. Das Programm soll nach dem erfolgreichen Ablauf erneut von vorne beginnen. Wäre cool, wenn man das noch realisieren können. Danke nochmal