from components import AStirrer import time import serial class StirrerPololu1376(AStirrer): def name(self): return "Pololu1376" def __init__(self, params): AStirrer.__init__(self, 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 serial.SerialException: 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): data = self.ser.readline().decode("utf-8").replace("\n", '').replace("\r", '') return data def get_speed(self): if self.isOn and self.is_activated(): return self.speed return 0 def on_activate(self, enable): self.ser_send("go") print("on_activate {}".format(enable)) def on_set_speed(self, speed): self.ser_send("F" + str(speed) + "%") print("Set speed to {} %".format(speed)) if __name__ == '__main__': s = StirrerPololu1376(dt=1.0, port="/dev/ttyACM0", baudrate=115200) s.activate(True) print("Set some speeds") s.set_speed(50) time.sleep(2) s.set_speed(20) time.sleep(2) s.set_speed(50) time.sleep(2) print("Pulsed operation, duty cycle = 50%") s.set_duty_cycle(0.5) s.set_cycle_time(10) for i in range(1, 30): s.process() time.sleep(1) print("Pulsed operation, duty cycle = 20%") s.set_duty_cycle(0.2) s.set_cycle_time(10) for i in range(1, 30): s.process() time.sleep(1) s.activate(False)