Files
HendiControlFirmware/Control/brewpi/pololu1376.py
T
jens 2e2c7e00a8 - made stirrer less verbose
git-svn-id: http://moon:8086/svn/projects/HendiControl@256 fda53097-d464-4ada-af97-ba876c37ca34
2019-04-23 10:46:53 +00:00

81 lines
1.6 KiB
Python

from astirrer import AStirrer
import serial
import time
import serial
class Pololu1376(AStirrer):
def __init__(self, params):
super(Pololu1376, self).__init__(params["dt"])
self.isMasterOn = 0
self.ser_speed = params["speed"]
self.ser_port = params["port"]
self.ser = serial.Serial(self.ser_port, self.ser_speed)
self.ser.set_output_flow_control(False)
try:
self.ser.open()
except:
self.ser.close()
self.ser.open()
self.ser_send('V')
print(self.ser_recv())
def ser_send(self, cmd):
self.ser.write((cmd + '\r\n').encode())
def ser_recv(self):
s = self.ser.readline().decode("utf-8").replace("\n", '').replace("\r", '')
return s
def getSpeed(self):
if self.isOn and self.isMasterOn:
return self.speed
return 0
def activate(self):
if self.isMasterOn == 0:
self.log("Stirrer: switched On")
self.isMasterOn = 1
self.ser_send("go")
def deactivate(self):
if self.isMasterOn == 1:
self.log("Stirrer: switched Off")
self.isMasterOn = 0
self.ser_send("x")
def onSetSpeed(self, speed):
self.ser_send("F" + str(speed) + "%")
self.log("Stirrer: Set speed to {} %".format(speed))
if __name__ == '__main__':
s = Pololu1376(1.0, "/dev/ttyACM0", "115200")
s.activate()
print ("Set some speeds")
s.setSpeed(50)
time.sleep(2)
s.setSpeed(20)
time.sleep(2)
s.setSpeed(50)
time.sleep(2)
print ("Pulsed operation, duty cycle = 50%")
s.setDutyCycle(0.5)
s.setCycleTime(10)
for i in range(1,30):
s.process()
time.sleep(1)
print ("Pulsed operation, duty cycle = 20%")
s.setDutyCycle(0.2)
s.setCycleTime(10)
for i in range(1,30):
s.process()
time.sleep(1)
s.deactivate()