nap14hockey icon

RFID

nap14hockey | PRO | 09/06/14 09:39:29 PM UTC | 0 ⭐ | 354 👁️ | Never ⏰ | []
Lua |

2.63 KB

|

None

|

0 👍

/

0 👎

---------------------------------------------------------------------------------------
-- MineCraft ComputerCraft - RFID Door lock (use Immibis's Peripherals)
-- Written by Ty94, ComputerCraft Info Forums
-- Source: http://www.computercraft.info/forums2/index.php?/topic/3984-rfid-door-lock-use-immibiss-peripherals/
---------------------------------------------------------------------------------------
--If you want this to start at every boot of a computer run the following line of code in the startup
-- shell.run("RFID","door")
 
--The door stays open as long as you stay in the area of the reader
--                        !!! Make sure there is no creeper behind you !!!
-- Set up your own door system
 
doorPass = "wsxedcrfvbgtnhzmjuzvrnzcif" --Max Length 82 chars
cardLabel = "Ident: Front Door"  --Max Length 20 chars
--Make sure the following sides are equal to your build
 
readerSide = "left"
writerSide = "right"
redstoneSide = "bottom"
 
--(Don´t change)
tArgs = {...}
lastTimer = {}
 
-- Check the arguments given
if #tArgs < 1 then
print("Usage:")
print("RFID write")
print("RFID door")
return
end
 
mode = tArgs[1]
shell.run("clear")
 
if mode == "write" then
writer = peripheral.wrap(writerSide)
print("Enter writing mode")
print("Insert card in the writer")
while not writer.isPresent() do --Waits until a card is in the writer
  sleep(0)
end
 
if writer.encode(doorPass, cardLabel) then --Start write to card
  print("Start writing Pass to card")
else --Error handling
  if writer.isCoded() then
   print("Card is already coded\nInsert a blank card")
  elseif #cardLabel > 20 then
   print("Card Label is too long max. 20 char")
  elseif #doorPass > 82 then
   print("Data is too long max. 82 char")
  else
   print("Leave the card in the writer")
  end
  return
end
os.pullEvent("rfid_written") --Wait until the card is written
print("RFID card is coded")
print("Take the card out of the writer")
 
while writer.isCoded() do --Ends the program when the card is taken out of the writer
  sleep(0)
end
shell.run("clear")
 
------------------------------------------------------
------------------------------------------------------
elseif mode == "door" then
reader = peripheral.wrap(readerSide)
print("Door Contol is running")
while true do
  reader.scan() --Creats an "rfid_detected" when a card is in range
  event, p1 = os.pullEvent()
  if event == "rfid_detected" then
   if p1 == doorPass then
        rs.setOutput(redstoneSide, true)
        lastTimer = os.startTimer(1)
   end
  elseif event == "timer" and lastTimer == p1 then
   rs.setOutput(redstoneSide, false)
  end
end
end

Comments