Advertisement
FFGFlash

door.lua

Feb 14th, 2023 (edited)
753
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.96 KB | None | 0 0
  1. function translate(self, x, y)
  2.   sleep(self.translate(x, y))
  3.   self.stop()
  4. end
  5.  
  6. function rotate(self, x, y)
  7.   sleep(self.rotate(x, y))
  8.   self.stop()
  9. end
  10.  
  11. function signal(color)
  12.   local signal = rs.getBundledOutput("bottom")
  13.   if colors.test(signal, color) then signal = colors.subtract(signal, color)
  14.   else signal = colors.combine(signal, color)
  15.   end
  16.   rs.setBundledOutput("bottom", signal)
  17. end
  18.  
  19. local door = {
  20.   isOpen = false,
  21.   isRunning = false,
  22.   pins = peripheral.wrap("electric_motor_0"),
  23.   arm = peripheral.wrap("electric_motor_1"),
  24.   piston = peripheral.wrap("electric_motor_2"),
  25.   gantry = peripheral.wrap("electric_motor_3")
  26. }
  27.  
  28. function door:__call()
  29.   if self.isOpen then self:close()
  30.   else self:open()
  31.   end
  32. end
  33.  
  34. function door:initialize(isOpen)
  35.   self.isOpen = isOpen
  36.   if isOpen then signal(colors.red)
  37.   else signal(colors.green)
  38.   end
  39. end
  40.  
  41. function door:open()
  42.   if self.isRunning or self.isOpen then return end
  43.   self.isRunning = true
  44.   signal(colors.green)
  45.   signal(colors.brown)
  46.   translate(self.pins, 1, 16)
  47.   rotate(self.arm, 75, 6)
  48.   translate(self.piston, -3, 24)
  49.   signal(colors.white)
  50.   sleep(0.15)
  51.   signal(colors.white)
  52.   translate(self.piston, 3, 20)
  53.   sleep(0.2)
  54.   rotate(self.arm, -75, 6)
  55.   signal(colors.orange)
  56.   sleep(0.1)
  57.   signal(colors.orange)
  58.   translate(self.gantry, 5, 18)
  59.   signal(colors.brown)
  60.   signal(colors.red)
  61.   self.isOpen = true
  62.   self.isRunning = false
  63. end
  64.  
  65. function door:close()
  66.   if self.isRunning or not self.isOpen then return end
  67.   self.isRunning = true
  68.   signal(colors.red)
  69.   signal(colors.brown)
  70.   signal(colors.orange)
  71.   sleep(0.1)
  72.   signal(colors.orange)
  73.   translate(self.gantry, -5, 18)
  74.   rotate(self.arm, 75, 6)
  75.   translate(self.piston, -3, 20)
  76.   translate(self.piston, 3, 24)
  77.   rotate(self.arm, -75, 6)
  78.   translate(self.pins, -1, 16)
  79.   signal(colors.brown)
  80.   signal(colors.green)
  81.   self.isOpen = false
  82.   self.isRunning = false
  83. end
  84.  
  85. return setmetatable(door, door)
Advertisement
Comments
  • # text 0.14 KB | 0 0
    1. Amazing article, I strongly advise everyone to read as much as possible.
    2.  
    3. https://happytoothdentalclinic.com/dental-implants-in-siliguri/
    4.  
Add Comment
Please, Sign In to add comment
Advertisement