Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Safe Code
- --local basalt = require("basalt")
- local doorStatus = false; --False Means Closed. True Means Open.
- local modemSide = "front";
- local protocol = "SAFE";
- rednet.open(modemSide);
- rednet.host(protocol, "safeController");
- print("Opened Connection");
- function save()
- local file = fs.open("save.dat", "w");
- file.write(tostring(doorStatus));
- file.close();
- end
- function load()
- if fs.exists("save.dat") == true then
- local file = fs.open("save.dat", "r");
- doorStatus = file.readAll("save.dat");
- file.close();
- if doorStatus == "false" then doorStatus = false; end
- if doorStatus == "true" then doorStatus = true; end
- if doorStatus == "opening" then doorStatus = true; end
- if doorStatus == "closing" then doorStatus = false; end
- end
- end
- load();
- function doorOperator() --Specifically Controls Door Operations.
- while true do
- local from, message = rednet.receive("SAFE");
- print(message);
- if message == "open" then
- open(from);
- elseif message == "close" then
- close(from);
- end
- sleep(0);
- end
- end
- function openDoor()
- redstone.setOutput("back", false);
- redstone.setOutput("left", true);
- sleep(.5);
- redstone.setOutput("left", false);
- end
- function closeDoor()
- redstone.setOutput("back", true);
- redstone.setOutput("left", true);
- sleep(.5);
- redstone.setOutput("left", false);
- end
- function turnWheelRight()
- redstone.setOutput("top", true);
- redstone.setOutput("right", true);
- end
- function turnWheelLeft()
- redstone.setOutput("top", false);
- redstone.setOutput("right", true);
- end
- function stopWheel()
- redstone.setOutput("right", false);
- end
- function open(client) --Operation To Open Door
- print("Opening Door...");
- doorStatus = "opening";
- save();
- turnWheelLeft();
- sleep(5);
- stopWheel();
- sleep(.5);
- openDoor();
- sleep(5);
- doorStatus = true;
- save()
- sleep(1);
- rednet.send(client, "opened", protocol);
- end
- function close(client) -- Operation To Close Door
- print("Closing Door...");
- doorStatus = "closing";
- save();
- closeDoor();
- sleep(5);
- turnWheelRight();
- sleep(5);
- stopWheel();
- doorStatus = false;
- save();
- sleep(1);
- rednet.send(client, "closed", protocol);
- end
- function api() --Specifically manages data being sent to and from tablet.
- while true do
- local from, message = rednet.receive("API");
- if message == "getDoorStatus" then
- rednet.send(from, doorStatus, "API");
- end
- end
- end
- parallel.waitForAny(api, doorOperator);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement