ws-robot.lua 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. return function (socket)
  2. --1=GPIO5, 2=GPIO4, 3=GPIO0, 4=GPIO2, 5=GPIO14, 6=GPIO12,
  3. --7=GPIO13, 8=GPIO15, 9=GPIO3, 10=GPIO1, 11=GPIO9, 12=GPIO10
  4. local leftpwm, leftduty, leftpin1, leftpin2 = 1, 818, 2, 4 --GPIO5, 80%, GPIO4, GPIO2
  5. local rightpwm,rightduty, rightpin1, rightpin2 = 5, 717, 6, 7 --GPIO14, 70%, GPIO12, GPIO13
  6. -- timer id(0-6), interval in ms
  7. local tmrId, tmrMs = 4, 800
  8. -- init motors
  9. pwm.setup(leftpwm, 500, leftduty)
  10. pwm.start(leftpwm)
  11. gpio.mode(leftpin1, gpio.OUTPUT)
  12. gpio.mode(leftpin2, gpio.OUTPUT)
  13. pwm.setup(rightpwm, 500, rightduty)
  14. pwm.start(rightpwm)
  15. gpio.mode(rightpin1, gpio.OUTPUT)
  16. gpio.mode(rightpin2, gpio.OUTPUT)
  17. function socket.onmessage(payload, opcode)
  18. curStep = payload:sub(1, 1)
  19. if (curStep == 'F') then
  20. gpio.write(leftpin1, gpio.LOW)
  21. gpio.write(leftpin2, gpio.HIGH)
  22. gpio.write(rightpin1, gpio.LOW)
  23. gpio.write(rightpin2, gpio.HIGH)
  24. elseif (curStep == 'B') then
  25. gpio.write(leftpin1, gpio.HIGH)
  26. gpio.write(leftpin2, gpio.LOW)
  27. gpio.write(rightpin1, gpio.HIGH)
  28. gpio.write(rightpin2, gpio.LOW)
  29. elseif (curStep == 'L') then
  30. gpio.write(leftpin1, gpio.LOW)
  31. gpio.write(leftpin2, gpio.HIGH)
  32. gpio.write(rightpin1, gpio.HIGH)
  33. gpio.write(rightpin2, gpio.LOW)
  34. elseif (curStep == 'R') then
  35. gpio.write(leftpin1, gpio.HIGH)
  36. gpio.write(leftpin2, gpio.LOW)
  37. gpio.write(rightpin1, gpio.LOW)
  38. gpio.write(rightpin2, gpio.HIGH)
  39. elseif (curStep == 'S') then
  40. gpio.write(leftpin1, gpio.LOW)
  41. gpio.write(leftpin2, gpio.LOW)
  42. gpio.write(rightpin1, gpio.LOW)
  43. gpio.write(rightpin2, gpio.LOW)
  44. end
  45. end
  46. function socket.onclose()
  47. pwm.stop(leftpwm)
  48. gpio.write(leftpin1, gpio.LOW)
  49. gpio.write(leftpin2, gpio.LOW)
  50. pwm.stop(rightpwm)
  51. gpio.write(rightpin1, gpio.LOW)
  52. gpio.write(rightpin2, gpio.LOW)
  53. end
  54. end