· 5 years ago · Jan 26, 2021, 07:36 PM
1-- Дверь по цифровой клавиатуре, работающая в фоне.
2-- Сделал AnimeSquad
3
4
5--Базовые настройки кодового замка
6local locked = "Закрыто" -- слово, которое будет отображаться при закрытой двери
7local keyWord = "753" -- пароль, который необходимо ввести
8local opened = "Открыто" -- слово, которое будет отображаться при открытой двери
9local wrong = "неверно" -- слово, которое будет отображаться при непрвильном вводе пароля
10local input = "" -- переменная для хранения цифрового ввода STRING
11
12--подключаемые библиотеки
13local computer = require("computer") --пускай будет, чтобы пищал
14local event = require("event") --API для эвентов
15local component = require("component") --API для работы с компонентами
16--local keypad = component.os_keypad --блок клавиш
17
18--Внимание! Необходимо сменить адреса номеронаберателей!
19local keypad = component.proxy(component.get("94727051-52ef-4662-8da6-e5dbe7d80082")) -- первый номеронабератель
20local keypad2 = component.proxy(component.get("70025e0e-18ad-4c3b-a1f2-a8b7f3d95e34"))-- второй номеронабератель
21local red = component.redstone --блок красной карты
22
23-- кто делал
24print("by AnimeSquad")
25keypad.setDisplay("AnimeSquad",1)
26os.sleep(1.5)
27
28--инициализация кнопок первого номеронобератиеля
29keypad.setDisplay(locked,4)
30keypad.setEventName("pressed")
31keypad.setKey(12,"Ок",2)
32keypad.setKey(11,"Зак",4)
33keypad.setKey(10,"Оч",4)
34
35--инициализация кнопок второго номеронобератиеля
36keypad2.setDisplay(locked,4)
37keypad2.setEventName("pressed2")
38keypad2.setKey(12,"Ок",2)
39keypad2.setKey(11,"Зак",4)
40keypad2.setKey(10,"Оч",4)
41
42--обработчик нажатий на кнопки
43function passwd(name, adress, key, button )
44 --print( name, adress, key, button ) отладочная информация, пускай будет
45
46 if key == 10 then --если нажата кнопка "очистить"
47 input = ""
48 computer.beep(600,0.01)
49 elseif key == 12 then --если нажата кнопка "Ввод"
50 if keyWord == input then --код верный, дверь открывается
51 --print(opened)
52 keypad.setDisplay(opened,2)
53 keypad2.setDisplay(opened,2)
54 red.setOutput(1,150)
55 input = ""
56 computer.beep(1500,0.5)
57 else --если введенный код неверный
58 keypad.setDisplay(wrong,6)
59 keypad2.setDisplay(wrong,6)
60 --print("Неверный код: ",input)
61 input = ""
62 computer.beep(1000,0.5)
63 end
64 elseif key == 11 then -- если нажата кнопка "Закрыть"
65 --print(locked)
66 keypad.setDisplay(locked,4)
67 keypad2.setDisplay(locked,4)
68 input = ""
69 computer.beep(1500,0.5)
70 computer.beep(1000,0.5)
71 red.setOutput(1,0)
72 else
73 input = input..button
74 computer.beep(1500,0.01)
75 end
76end
77
78--Запускаем первого демона
79if event.listen("pressed",passwd) then
80 print("listener первого номеранаберателя запущен")
81else
82 print("Проблемы при включении слушателя перого номеранаберателя")
83end
84
85--запускаем второго демона
86if event.listen("pressed2",passwd) then
87 print("listener второго номеранаберателя запущен")
88else
89 print("Проблемы при включении слушателя второго номеранаберателя")
90end
91
92--Сообщение для юзверей.
93print("Комьютер свободен. Можно заниматься своими делами, программа двери работает в фоне.")