from astirrer import AStirrer import serial class Pololu1376(AStirrer): def __init__(self, params, com_port='/dev/ttyUSB0', com_baud=115200): self.params = params self.rpm = 0 self.cycleTime = 1 self.dutyCycle = 1 self.cycleCounter = 0 self.isOn = 0 self.isMasterOn = 0 self.ser = serial.Serial(com_port, com_baud) self.ser.set_output_flow_control(False) try: self.ser.open() except: self.ser.close() self.ser.open() self.ser.write("V") print(self.ser.read()) def process(self): dt = self.params["dt"] self.cycleCounter -= dt if self.cycleCounter <= 0: self.cycleCounter = self.cycleTime if self.cycleCounter <= (self.cycleTime * self.dutyCycle): if not self.isOn: self.log ("Stirrer: On") self.isOn = 1 else: if self.isOn: self.log ("Stirrer: Off") self.isOn = 0 def setRpm(self, rpm): self.log ("Stirrer: Set RPM to {} rpm".format(rpm)) self.rpm = rpm self.ser.write("F" + str(rpm)) def setCycleTime(self, time): self.log ("Stirrer: Set cycle time to {} s".format(time)) self.cycleTime = time def setDutyCycle(self, dutyCycle): self.log ("Stirrer: Set duty cycle to {} %".format(100*dutyCycle)) self.dutyCycle = dutyCycle def getRpm(self): if self.isOn and self.isMasterOn: return self.rpm return 0 def start(self): self.isMasterOn = 1 self.log("Stirrer: switched On") def stop(self): self.isMasterOn = 0 self.log("Stirrer: switched Off") if __name__ == '__main__': s = Pololu1376(None, "/dev/ttyACM0", "115200")