local component = require("component") local keypad = component.os_keypad local doorController = component.os_doorcontroller local event = require("event") local pin = "1234" local delay = 2 local input = "" local runInBack = false local function updateDisplay() local displayString = "" for i=1,#input do displayString = displayString .. "*" end keypad.setDisplay(displayString, 7) end local function checkPin() if input == pin then keypad.setDisplay("GRANTED", 2) doorController.open() os.sleep(delay) doorController.close() else keypad.setDisplay("DENIED", 4) end input = "" os.sleep(1) end local function keypadEvent(eventName, address, button, button_label) if button_label == "*" then input = string.sub(input, 1, -2) elseif button_label == "#" then checkPin() else input = input .. button_label end updateDisplay() end event.listen("keypad", keypadEvent) keypad.setDisplay("") if not runInBack then local stopMe = false event.listen("interrupted", function() stopMe = true; end) while not stopMe do os.sleep(0.1) end event.ignore("keypad", keypadEvent) event.setDisplay("Inactive", 6) end