Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sc = sensor_control()
- svc = servo_control()
- holding_registers = 3
- input_registers = 4
- context = cntxt
- slave_id = 0x00
- temp_address = 0x00
- servo_address=0x20
- servo_status_address=0x25
- servo_status_values = context[slave_id].getValues(holding_registers, servo_status_address, count=3)
- servo_status_values[0] = 2
- servo_status_values[1] = 1
- servo_status_values[2] = 1
- context[slave_id].setValues(holding_registers, servo_status_address, servo_status_values)
- svc.setRotate_main(servo_status_values[0])
- svc.setPosition_left(servo_status_values[1])
- svc.setPosition_right(servo_status_values[2])
- while(True):
- sdata = sc.retrieve_sensor_data()
- sdataLen = len(sdata)
- values = context[slave_id].getValues(holding_registers, temp_address, count=sdataLen*2+4) # sdataLentemps + 4xhum
- for x in range(0, sdataLen):
- numb, rem = divmod((sdata[x]["data"]["temperature"]),1)
- values [x*2] = int(numb)
- values [(x*2)+1] = int(rem*100)
- # humidity 1
- numb, rem = divmod((sdata[3]["data"]["humidity"]),1)
- values [10] = int(numb)
- values [11] = int(rem*10)
- # humidity 2
- numb, rem = divmod((sdata[4]["data"]["humidity"]),1)
- values [12] = int(numb)
- values [13] = int(rem*10)
- #log.info("new values: " + str(values))
- context[slave_id].setValues(holding_registers, temp_address, values)
- # now, we read our own values.
- servo_values = context[slave_id].getValues(holding_registers, servo_address, count=3)
- servo_status_values = context[slave_id].getValues(holding_registers, servo_status_address, count=3)
- #log.info("new values: " + str(values))
- if (servo_values[0] != 0): # free rotation motor (main motor)
- # set the rotation
- # TODO: READ A POSITIONAL VALUE!
- svc.setRotate_main(servo_values[0])
- servo_status_values[0] = servo_values[0]
- servo_values[0] = 0;
- if (servo_values[1] != 0):
- svc.setPosition_left(servo_values[1]) # left valve (2)
- servo_status_values[1] = servo_values[1]
- servo_values[1] = 0;
- if (servo_values[2] != 0):
- svc.setPosition_right(servo_values[2]) # right valve (2)
- servo_status_values[2] = servo_values[2]
- servo_values[2] = 0;
- if (sdata[0]["data"]["temperature"] > 30): #max limit for sensor 1
- svc.setPosition_left(3)
- servo_status_values[1] = 3
- if (sdata[1]["data"]["temperature"] > 30): #max limit for sensor 2
- svc.setPosition_right(3)
- servo_status_values[2] = 3
- context[slave_id].setValues(holding_registers, servo_address, servo_values)
- context[slave_id].setValues(holding_registers, servo_status_address, servo_status_values)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement