Kepi-IMP

Minetest - Luacontroller


Projekt im Rahmen des IMP-Profils am JKG Reutlingen


Rasmus, Klasse 10d


Gliederung

  1. luacontroller
  2. Einstieg ins Programmieren


Inhalt des Projekts


1.Luacontroller


In meinem Projekt ging es um den Luacontroller in Minetest. Mit dem Luacontroller kann man viele verschiedene Sachen programmieren. Wenn man auf den Luacontroller klickt öffnet sich ein Fenster in das man den Code eingibt, falls ein Fehler im Code ist wird das nach dem ausführen (wenn man auf den Excute button gedrückt hat) unter dieser grauen Box angezeigt. Durch Mesecons kann man den Luacontroller ganz einfach mit Stromverbrauchenden Elementen verbinden und mkit hilfe von digilines an andere Geräte (zum Besipiel an Bildschirme wie LCD)

2. Einstieg ins Programmieren


Der Luacontroller hat vier Seiten an die man etwas anschließen kann, diese nennt man Ports und sie werden von A-D bennant. Jeder Port kann als Input oder als Output benutzt werden. Ein Beispiel für Outputs:
port.a = true in diesem Fall wird aus Port A ein Signal gesendet (über Mesecons also Strom).
Bei einem Input heißt es statt port dann pin wenn wir jetzt noch die Dauerschleifen dazu nehmen,
if   Bedingung then
was auch immer dann passieren soll
end
kann man ganz sinnvolle Dinge schon programmieren.

Mein Beispiel dafür:

if pin.a == true then -- hierbei ist ganz wichtig dass Zwei Gleichzeichen da stehen, damit es als Bedingung erkannt wird.
port.b = true
end

Also wenn Strom in den Port A reingeht kommt Strom aus dem Port B raus.
Damit Port B nur an geht wenn Strom in Port A reinkommt kann man die Else-Funktion benutzen (wenn nicht) diese kann man ganz einfach in eine Dauerschleife einbauen und man ersetzt dadurch eine neue:
if pin.a == true then
port.b = true
end
if pin.a == false then
port.b = false
end

wird zu:
if pin.a == true then
port.b = true
else
port.b = false
end

Mann kann auch sämtliche Logikgater im Luacontroller ersetzen hierzu empfehle ich die Luacontroller Website die zwar echt nicht wirklich gut ist aber für Logikgater ausreicht ansonsten kann man auch im Minetest Forum nachschauen, ein Beispiel von mir für Logikgater (mit Dauerschleife):
if pin.a and pin.c == true then
port.b = true
end

oder auch
if pin.a == true then
port.b = true and port.c = true
end


Weitere Funktionen

Interrupt Funktion:

Die Interrupt Funktion stoppt den Code einfach für einen Gewisse zeit:
interrupt(5) in diesem Fall für 5 Sekunden

Und noch ein paar andere Funktionen anhand von einem Beispiel

if event.type == "program" then Die Event-Funktion ruft verschieden Ereignisse aus in diesem Beispiel program, das Ereignis läuft immer wenn das Programm ausgeführt wurde.
mem.anzahl = 0 Die Memory Funktion ist relativ praktisch, wenn man Variablen verändern will (in dem Fall mem.anzahl) Damit sie sich den alten Wert merkt und nicht immer wenn der Code neu ausgeführt wird wieder bei Null beginnt.
elseif event.type == "on" then esleif = sonst wenn
if event.pin.name == "A" then
mem.anzahl = mem.anzahl + 1
elseif event.pin.name == "C" then
mem.anzahl = mem.anzahl - 1
end
digiline_send("1", ""..mem.anzahl)
Die digiline_send Funktion ist wenn eine Digiline am Luacontroller angeschlossen ist und mit einem Bildschirm (zum Beispiel LCD) verbunden ist, schickt man mit dieser Funktion an einen Kanal. Wenn mehrere Displays verbunden sind kann man die Nachricht geziehlt nur an eins schicken: digiline_ send = ("Kanal","Nachricht")
end
Dieser Code zählt den Inhalt einer Truhe, vor und nach der Truhe sind "Detecting pneumatic tube segements" und jedes mal wenn da ein Gegenstand durchgeht senden sie ein Siganl (in Form von Strom über eine Mesecon-Leitung) an den Luacontroller (vor der Truhe Port A nach der Truhe Port C). Jedes mal wenn bei A Strom ankommt wir die Variable um eins größer und bei C um eins kleiner. Die Anzahl der Variable wird dann nach jeder Änderung ans Display geschickt (LCD). Wo man dann die Anzahl der Gegenstände sie in der Truhe sind sehen kann.


Fazit


Ich fand das Projekt sehr Informativ und es hat mir sehr geholfen ein bisschen meine Programmier Kentnisse aufzufrischen, deswegen würde ich den Luacontroller weiter empfehlen und nicht nur deswgen sondern auch weil man damit viele Wahnsinnig Tiefsinnige Ergebnisse erziehlen kann. Für Leute die aufjedenfall sehr viel irgenwelche Spiele spielen kann das sehr sinnvoll sein weil sie dann wenigstens dabei etwas lernen aber auch für den Unterricht ist es gut solche Projekte zu machen weil man dadurch einfach mehr Spaß an der Schule und am lernen hat.


Weiterführende Links