Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. sc = sensor_control()
  2. svc = servo_control()
  3. holding_registers = 3
  4. input_registers = 4
  5.  
  6. context = cntxt
  7. slave_id = 0x00
  8. temp_address = 0x00
  9.  
  10. servo_address=0x20
  11. servo_status_address=0x25
  12.  
  13. servo_status_values = context[slave_id].getValues(holding_registers, servo_status_address, count=3)
  14. servo_status_values[0] = 2
  15. servo_status_values[1] = 1
  16. servo_status_values[2] = 1
  17. context[slave_id].setValues(holding_registers, servo_status_address, servo_status_values)
  18. svc.setRotate_main(servo_status_values[0])
  19. svc.setPosition_left(servo_status_values[1])
  20. svc.setPosition_right(servo_status_values[2])
  21.  
  22. while(True):
  23. sdata = sc.retrieve_sensor_data()
  24. sdataLen = len(sdata)
  25.  
  26. values = context[slave_id].getValues(holding_registers, temp_address, count=sdataLen*2+4) # sdataLentemps + 4xhum
  27. for x in range(0, sdataLen):
  28. numb, rem = divmod((sdata[x]["data"]["temperature"]),1)
  29. values [x*2] = int(numb)
  30. values [(x*2)+1] = int(rem*100)
  31. # humidity 1
  32. numb, rem = divmod((sdata[3]["data"]["humidity"]),1)
  33. values [10] = int(numb)
  34. values [11] = int(rem*10)
  35. # humidity 2
  36. numb, rem = divmod((sdata[4]["data"]["humidity"]),1)
  37. values [12] = int(numb)
  38. values [13] = int(rem*10)
  39. #log.info("new values: " + str(values))
  40. context[slave_id].setValues(holding_registers, temp_address, values)
  41.  
  42.  
  43. # now, we read our own values.
  44. servo_values = context[slave_id].getValues(holding_registers, servo_address, count=3)
  45. servo_status_values = context[slave_id].getValues(holding_registers, servo_status_address, count=3)
  46. #log.info("new values: " + str(values))
  47. if (servo_values[0] != 0): # free rotation motor (main motor)
  48. # set the rotation
  49. # TODO: READ A POSITIONAL VALUE!
  50. svc.setRotate_main(servo_values[0])
  51. servo_status_values[0] = servo_values[0]
  52. servo_values[0] = 0;
  53. if (servo_values[1] != 0):
  54. svc.setPosition_left(servo_values[1]) # left valve (2)
  55. servo_status_values[1] = servo_values[1]
  56. servo_values[1] = 0;
  57. if (servo_values[2] != 0):
  58. svc.setPosition_right(servo_values[2]) # right valve (2)
  59. servo_status_values[2] = servo_values[2]
  60. servo_values[2] = 0;
  61.  
  62. if (sdata[0]["data"]["temperature"] > 30): #max limit for sensor 1
  63. svc.setPosition_left(3)
  64. servo_status_values[1] = 3
  65.  
  66. if (sdata[1]["data"]["temperature"] > 30): #max limit for sensor 2
  67. svc.setPosition_right(3)
  68. servo_status_values[2] = 3
  69. context[slave_id].setValues(holding_registers, servo_address, servo_values)
  70. context[slave_id].setValues(holding_registers, servo_status_address, servo_status_values)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement