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.')