Using Classes and Methods#

This is Exercise 5 of the Micro Python Tutorial.

motor_controller.py#

# motor controller class from motor import Motor class MotorController: def __init__(self): self.port_forward_motor = Motor('pfwd') self.stbd_forward_motor = Motor('sfwd') print("motor controller ready.") def set_speed(self, port_speed, stbd_speed): self.port_forward_motor.set_speed(port_speed) self.stbd_forward_motor.set_speed(stbd_speed) def stop(self): self.port_forward_motor.stop() self.stbd_forward_motor.stop()

motor.py:#

# this is the motor class class Motor: def __init__(self, name): self.motor_name = name self.motor_speed = 0 print("motor {} ready.".format(self.motor_name)) def set_speed(self, speed): self.motor_speed = speed print("set motor {} speed to: {}".format(self.motor_name, speed)) def get_speed(self): return self.motor_speed def stop(self): self.motor_speed = 0 print('motor {} stopped.'.format(self.motor_name))

main.py:#

import time from motor_controller import MotorController motor_ctrl = None try: motor_ctrl = MotorController() # begin to accelerate in clockwise rotation for speed in range(0, 101): motor_ctrl.set_speed(speed,-speed) time.sleep(3) # wait 3 seconds # begin to decelerate down to zero (stopped) for speed in range(100, -1, -1): motor_ctrl.set_speed(speed,-speed) except Exception as ex: print('an error occurred: {}'.format(ex)) finally: # if motor_ctrl: same thing as: if motor_ctrl is not None: motor_ctrl.stop() print('complete.')