Пример #1
0
	def servoRight(self):	
		waterLog.log("","")
		for i in range(self.SERVO_RIGHT_DEG,self.SERVO_MIDDLE_DEG):
			self.servoSet(self.SERVO_MIDDLE_DEG-i)
			sleep(self.SERVO_SPEED_DOWN)
			
		self.servoUse(self.SERVO_MIDDLE_DEG-i)			
Пример #2
0
	def servoLeft(self):
		waterLog.log("","")
		for i in range(self.SERVO_MIDDLE_DEG,self.SERVO_LEFT_DEG+1):	
			self.servoSet(i)
			sleep(self.SERVO_SPEED_DOWN)
			
		self.servoUse(self.SERVO_LEFT_DEG)	
Пример #3
0
	def waterTo(self,pump_no,pump_time_s):
		msg = "Running pump: %i. for %is" % (pump_no,pump_time_s)
		waterLog.log("","")
		waterLog.log("I",msg)
		end_time = pump_time_s * 1000 + self.getCurrentTimeMS()
		while self.getCurrentTimeMS() < end_time:
			self.runPumpTo(pump_no,255)
			sleep(1.0)
		self.runPumpTo(pump_no,0)
Пример #4
0
	def scaleReadTrue(self,n):
		x = self.scaleReadCont(n)	
		x = (x - self.SCALE_OFFSET) / self.SCALE_AMP
		x = round(x,1)	
		if x < -100.0 or x > 500:
			mes = "Value = %i" % n
			waterLog.log("E",mes)

		mes = "n = %i" % x	
		waterLog.log("",mes)
		return x	
Пример #5
0
	def serialReadBytes(self, cmd, n):
		self.port.flushInput() 			# flush input buffer to avid junk
		self.port.write(chr(cmd))	# Send Command
		tic = int(time.time()*100) + self.SERIAL_TIMEOUT_MS
		x = 0
		d = 0
		if n > 0:
			while tic > int(time.time()*100):
				if self.port.inWaiting() > 0:
					x = (x << 8) | ord(self.port.read(1))
					d = d + 1
					if d == n:	# Tjek all bytes received
						break
					
		mes = "Read %i of %i bytes" % (d, n)
		if d != n: # Tjek that all byte have been recieved
			waterLog.log("E",mes)
			
		#log("",mes)	
		return x				
Пример #6
0
	def usePumpOut(self,k):
		msg = "Value k = %i" % k
		waterLog.log("",msg)
		#if k < 0 and k > 255:
		if k < 0 or k > 255:
			msg = "%i < 0 and %i > 255" % (k,k)
			waterLog.log("E",msg)	

		self.serialReadBytes(self.CMD_SET_MOTOR_3,0)
		self.serialReadBytes(k,0)

		x = self.serialReadBytes(self.CMD_GET_MOTOR_3,1)
		if x != k:
			msg = "Aim: %i, Real: %i" % (k,x)
			waterLog.log("E",msg)		
Пример #7
0
	def runPumpTo(self,pump_no,k):
		if pump_no == 0:
			serial_cmd_set = self.CMD_SET_MOTOR_1
			serial_cmd_get = self.CMD_GET_MOTOR_1
		elif pump_no == 1:
			serial_cmd_set = self.CMD_SET_MOTOR_2
			serial_cmd_get = self.CMD_GET_MOTOR_2
		else: # Pump no. not existing
			msg = "Pump no. %i not existing" % pump_no
			waterLog.log("E",msg)
		
		msg = "Pump: %i, Value k = %i" % (pump_no,k)
		waterLog.log("",msg)
		if k < 0 or k > 255:
			msg = "%i < 0 and %i > 255" % (k,k)
			waterLog.log("E",msg)	
			
		self.serialReadBytes(serial_cmd_set,0)
		self.serialReadBytes(k,0)

		x = self.serialReadBytes(serial_cmd_get,1)
		if x != k:
			msg = "Aim: %i, Real: %i" % (k,x)
			waterLog.log("E",msg)
Пример #8
0
	def checkTOMS(self,k):
		if k < self.getCurrentTimeMS():
			waterLog.log("E","Time Out")
Пример #9
0
	def waterOut(self):
		mean_n = 10
		m_speed = 255
		sum = 0
		msg = "Weighting off water."
		waterLog.log("","")
		waterLog.log("I",msg)
		run = True
		while run:
			fill_time = self.WATER_FULL_BUCKET_OUT_TIME * 1000 + self.getCurrentTimeMS()
			waterLog.log("I","Setting Bucket Up")
			self.servoUp()
			waterLog.log("I","Filling bucket")
			x = 0
			#self.usePumpOut(m_speed)	# Start pump
			while x < self.WATER_BUCKET_MAX:
				if fill_time < self.getCurrentTimeMS():
					run = False
					break
				self.usePumpOut(m_speed)	# Start pump
				x = self.scaleReadTrue(1)
			self.usePumpOut(0)	# Start pump
			filled = self.scaleReadTrue(mean_n)
			self.servoLeft()
			sleep(1.0)
			self.servoUp()
			sleep(1.0)
			empty = self.scaleReadTrue(mean_n)
			sum = sum + (filled-empty)
			msg = "Filled: %i, Empty: %i, Bucket: %i, Sum: %i" % (filled,empty,filled-empty,sum)
			waterLog.log("I",msg)
			
			
		msg = "Weighting off finished with a sum of: %iml" % sum
		waterLog.log("I",msg)
		return sum
Пример #10
0
	def waterIn(self,k):
		mean_n = 10;
		m_speed = 255;
		# Calculate number of buckets and rest
		b_n = k / self.WATER_BUCKET_MAX
		rest = k
		msg = "Weighting of %iml in %i buckets." %(k,b_n+1)
		waterLog.log("","")
		waterLog.log("I",msg)
		print "b_n: %i, rest: %i" % (b_n,rest) # Print something here
		# Weight: b_n
		w_TO = (b_n + 1) * self.WATER_FILL_BUCKET_TIME * 1000 + self.getCurrentTimeMS()# Set TO
		sum = 0
		if not(rest > self.WATER_BUCKET_MAX):	# If no full buckets are used
			empty = self.scaleReadTrue(mean_n)
			
		while rest > self.WATER_BUCKET_MAX:		# Weight full buckets
			self.checkTOMS(w_TO) # Check Time Out
			waterLog.log("I","Setting Bucket Up")
			self.servoUp()
			msg = "Filling bucket to: %iml" % self.WATER_BUCKET_MAX
			waterLog.log("I",msg)
			self.usePumpIn(m_speed)	# Start pump
			x = 0
			b_TO = self.WATER_FILL_BUCKET_TIME * 1000 + self.getCurrentTimeMS()# Set TO
			while x < self.WATER_BUCKET_MAX:
				self.checkTOMS(w_TO) # Check Time Out
				self.checkTOMS(b_TO) # Check Time Out
				x = self.scaleReadTrue(1)

			self.usePumpIn(0)	# Stop pump
			sleep(1.0)
			filled = self.scaleReadTrue(mean_n)
			waterLog.log("I","Setting Bucket Right")
			self.servoRight()
			sleep(2.0)
			self.servoUp()
			sleep(1.0)	
			empty = self.scaleReadTrue(mean_n)
			sum = sum + filled-empty
			rest = rest - (filled-empty)
			msg = "Filled: %.1f, Empty: %.1f, Bucket: %.1f, Rest: %i, Sum: %.1f" % (filled,empty,filled-empty,rest,sum)
			waterLog.log("I",msg)

		# Weight: rest
		waterLog.log("I","Setting Bucket Up")
		self.servoUp()
		msg = "Filling bucket to: %iml" % rest
		waterLog.log("I",msg)
		self.usePumpIn(m_speed)	# Start pump
		x = empty
		b_TO = self.WATER_FILL_BUCKET_TIME * 1000 + self.getCurrentTimeMS()# Set TO
		while (x - empty) < rest:
			self.checkTOMS(w_TO) # Check Time Out
			self.checkTOMS(b_TO) # Check Time Out		
			x = self.scaleReadTrue(1)	

		self.usePumpIn(0)	# Stop pump
		sleep(1.0)
		filled = self.scaleReadTrue(mean_n)
		sum = sum + (filled-empty)
		rest = rest - (filled-empty)
		msg = "Filled: %.1f, Empty: %.1f, Bucket: %.1f, Rest: %i, Sum: %.1f" % (filled,empty,filled-empty,rest,sum)
		waterLog.log("I",msg)
		waterLog.log("I","Setting Bucket Right")
		self.servoRight()
		sleep(2.0)
		self.servoUp()

		return sum
Пример #11
0
	def servoUp(self):
		waterLog.log("","")
		self.servoUse(self.SERVO_MIDDLE_DEG)
Пример #12
0
	def servoUse(self,n):
		self.servoSet(n)
		x = self.servoGet()
		if x != n:
			mes = "Aim: %i, Real: %i" % (n,x)
			waterLog.log("E",mes)