JoonBug03

trackless_master

Aug 15th, 2026 (edited)
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.69 KB | None | 0 0
  1. local perf = peripheral.getNames()
  2.  
  3. local relay = peripheral.wrap(perf[2])
  4.  
  5. local m1 = peripheral.wrap(perf[3])
  6. local m2 = peripheral.wrap(perf[5])
  7. local m3 = peripheral.wrap(perf[8])
  8. local m4 = peripheral.wrap(perf[4])
  9.  
  10. local motor = {m1,m2,m3,m4}
  11.  
  12. local w1 = peripheral.wrap(perf[7])
  13. local w2 = peripheral.wrap(perf[9])
  14. local w3 = peripheral.wrap(perf[6])
  15. local w4 = peripheral.wrap(perf[10])
  16.  
  17. local wheel = {w1,w2,w3,w4}
  18.  
  19. for x = 1, 4 do
  20. wheel[x].setSteering(0)
  21. motor[x].setGeneratedSpeed(0)
  22. wheel[x].setBrake(0)
  23. end
  24.  
  25. function spin_cw(speed, time)
  26. parallel.waitForAll(function(spawn)
  27. spawn(function(); m1.setGeneratedSpeed(speed) end)
  28. spawn(function(); m2.setGeneratedSpeed(speed) end)
  29. spawn(function(); m3.setGeneratedSpeed(speed) end)
  30. spawn(function(); m4.setGeneratedSpeed(speed) end)
  31. end)
  32. sleep(time)
  33. end
  34.  
  35. function spin_cc(speed, time)
  36. parallel.waitForAll(function(spawn)
  37. spawn(function(); m1.setGeneratedSpeed(-speed) end)
  38. spawn(function(); m2.setGeneratedSpeed(-speed) end)
  39. spawn(function(); m3.setGeneratedSpeed(-speed) end)
  40. spawn(function(); m4.setGeneratedSpeed(-speed) end)
  41. end)
  42. sleep(time)
  43. end
  44.  
  45. function stop()
  46. parallel.waitForAll(function(spawn)
  47. spawn(function(); w1.setBrake(1) end)
  48. spawn(function(); w2.setBrake(1) end)
  49. spawn(function(); w3.setBrake(1) end)
  50. spawn(function(); w4.setBrake(1) end)
  51. end)
  52. for x = 1, 4 do
  53. wheel[x].setSteering(0)
  54. wheel[x].setBrake(0)
  55. motor[x].setGeneratedSpeed(0)
  56. end
  57. end
  58.  
  59. function pause(time)
  60. stop()
  61. sleep(time)
  62. end
  63.  
  64. function forward(speed, time)
  65.  
  66. parallel.waitForAll(function(spawn)
  67. spawn(function(); m1.setGeneratedSpeed(-speed) end)
  68. spawn(function(); m2.setGeneratedSpeed(0) end)
  69. spawn(function(); m3.setGeneratedSpeed(speed) end)
  70. spawn(function(); m4.setGeneratedSpeed(0) end)
  71. end)
  72.  
  73. sleep(time)
  74. end
  75.  
  76. function reverse(speed, time)
  77.  
  78. parallel.waitForAll(function(spawn)
  79. spawn(function(); m1.setGeneratedSpeed(speed) end)
  80. spawn(function(); m2.setGeneratedSpeed(0) end)
  81. spawn(function(); m3.setGeneratedSpeed(-speed) end)
  82. spawn(function(); m4.setGeneratedSpeed(0) end)
  83. end)
  84.  
  85. sleep(time)
  86. end
  87.  
  88. function left(speed, time)
  89.  
  90. parallel.waitForAll(function(spawn)
  91. spawn(function(); m1.setGeneratedSpeed(0) end)
  92. spawn(function(); m2.setGeneratedSpeed(-speed) end)
  93. spawn(function(); m3.setGeneratedSpeed(0) end)
  94. spawn(function(); m4.setGeneratedSpeed(speed) end)
  95. end)
  96.  
  97. sleep(time)
  98. end
  99.  
  100. function right(speed, time)
  101.  
  102. parallel.waitForAll(function(spawn)
  103. spawn(function(); m1.setGeneratedSpeed(0) end)
  104. spawn(function(); m2.setGeneratedSpeed(speed) end)
  105. spawn(function(); m3.setGeneratedSpeed(0) end)
  106. spawn(function(); m4.setGeneratedSpeed(-speed) end)
  107. end)
  108.  
  109. sleep(time)
  110. end
  111.  
  112. function f_left(speed, time)
  113.  
  114. parallel.waitForAll(function(spawn)
  115. spawn(function(); m1.setGeneratedSpeed(-speed) end)
  116. spawn(function(); m2.setGeneratedSpeed(-speed) end)
  117. spawn(function(); m3.setGeneratedSpeed(speed) end)
  118. spawn(function(); m4.setGeneratedSpeed(speed) end)
  119. end)
  120.  
  121. sleep(time)
  122. end
  123.  
  124. function f_right(speed, time)
  125.  
  126. parallel.waitForAll(function(spawn)
  127. spawn(function(); m1.setGeneratedSpeed(-speed) end)
  128. spawn(function(); m2.setGeneratedSpeed(speed) end)
  129. spawn(function(); m3.setGeneratedSpeed(speed) end)
  130. spawn(function(); m4.setGeneratedSpeed(-speed) end)
  131. end)
  132.  
  133. sleep(time)
  134. end
  135.  
  136. function b_left(speed, time)
  137.  
  138. parallel.waitForAll(function(spawn)
  139. spawn(function(); m1.setGeneratedSpeed(speed) end)
  140. spawn(function(); m2.setGeneratedSpeed(-speed) end)
  141. spawn(function(); m3.setGeneratedSpeed(-speed) end)
  142. spawn(function(); m4.setGeneratedSpeed(speed) end)
  143. end)
  144.  
  145. sleep(time)
  146. end
  147.  
  148. function b_right(speed, time)
  149.  
  150. parallel.waitForAll(function(spawn)
  151. spawn(function(); m1.setGeneratedSpeed(speed) end)
  152. spawn(function(); m2.setGeneratedSpeed(speed) end)
  153. spawn(function(); m3.setGeneratedSpeed(-speed) end)
  154. spawn(function(); m4.setGeneratedSpeed(-speed) end)
  155. end)
  156.  
  157. sleep(time)
  158. end
  159.  
  160. local dock = 0
  161.  
  162. function toggle_dock()
  163. if dock == 0 then
  164. dock_on()
  165. dock = 1
  166. elseif dock == 1 then
  167. dock_off()
  168. dock = 0
  169. end
  170. end
  171.  
  172. function dock_on()
  173. relay.setOutput("front", true)
  174. end
  175.  
  176. function dock_off()
  177. relay.setOutput("front", false)
  178. end
  179.  
  180. repeat
  181. write("Enter direction: ")
  182. dir = read()
  183. if dir == "x" then
  184. return
  185. elseif dir == "d" then
  186. goto skip
  187. end
  188. write("Enter power: ")
  189. pow = tonumber(read())
  190. if pow == "x" then
  191. return
  192. end
  193. write("Enter time: ")
  194. time = tonumber(read())
  195. if time == "x" then
  196. return
  197. end
  198. ::skip::
  199. if dir == "f" then
  200. forward(pow, time)
  201. elseif dir == "b" then
  202. reverse(pow, time)
  203. elseif dir == "l" then
  204. left(pow, time)
  205. elseif dir == "r" then
  206. right(pow, time)
  207. elseif dir == "cw" then
  208. spin_cw(pow, time)
  209. elseif dir == "cc" then
  210. spin_cc(pow, time)
  211. elseif dir == "fl" then
  212. f_left(pow, time)
  213. elseif dir == "fr" then
  214. f_right(pow, time)
  215. elseif dir == "bl" then
  216. b_left(pow, time)
  217. elseif dir == "br" then
  218. b_right(pow, time)
  219. elseif dir == "d" then
  220. toggle_dock()
  221. end
  222. stop()
  223. until dir == "x"
  224.  
  225. stop()
Advertisement
Add Comment
Please, Sign In to add comment