!!! Using Classes and Methods

This is __Exercise 5__ of the [Micro Python Tutorial].

!motor_controller.py
%%python {{{
# 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:
%%python {{{
# 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:
%%python {{{
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.')
}}}
%%

----
* [MicroPython Tutorial Exercise 4|MicroPythonTutorialExercise04]: classes
* [MicroPython Tutorial Exercise 6|MicroPythonTutorialExercise06]: tbd