diff --git a/Control/brewpi/stirrer.py b/Control/brewpi/stirrer.py new file mode 100755 index 0000000..12cb2c5 --- /dev/null +++ b/Control/brewpi/stirrer.py @@ -0,0 +1,83 @@ +from astirrer import AStirrer +import serial +import time +import serial + + +class Stirrer(AStirrer): + def name(self): + return "Stirrer" + + def __init__(self, params): + super(Stirrer_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') + 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("Switched On") + self.isMasterOn = 1 + self.ser_send("go") + + def deactivate(self): + if self.isMasterOn == 1: + self.log("Switched Off") + self.isMasterOn = 0 + self.ser_send("x") + + def onSetSpeed(self, speed): + self.ser_send("F" + str(speed) + "%") + self.log("Set speed to {} %".format(speed)) + + +if __name__ == '__main__': + s = Pololu1376({'dt': 1.0, "port":"/dev/ttyACM0", "speed":"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()