Exercise DC Motor

# Module Import

import LocoIOT

import time


# Class Instances Creation

loco_iot = LocoIOT.LocoIOT()

msg = LocoIOT.IOT_Codes()


# Initiate Connection to the Microcontroller

loco_iot.connect()


# Enable DC Motor Hardware Configuration

loco_iot.enable(msg.SUBTYPE_DC_MOTOR)

loco_iot.enable(msg.SUBTYPE_SW_4)

loco_iot.enable(msg.SUBTYPE_SW_5)

loco_iot.enable(msg.SUBTYPE_SW_6)


# Start Listening for Control/Request Messages

loco_iot.start()


motor_data = [msg.DC_FORWARD, 0]

# Warn User Motor Is Beginning To Spin

print("Motor Starting")


# Infinite Loop: Press STOP to end the loop.

while True:

# Request Button State Data

btn_dict4 = loco_iot.getData(msg.SUBTYPE_SW_4)

btn_dict5 = loco_iot.getData(msg.SUBTYPE_SW_5)

btn_dict6 = loco_iot.getData(msg.SUBTYPE_SW_6)

# Button Checking Conditional Statements

if btn_dict4['Button 4'] == 0:

if motor_data == [msg.DC_BACKWARD]:

loco_iot.setData(msg.SUBTYPE_DC_MOTOR, [msg.DC_FORWARD, 0])

time.sleep(.2)

else:

loco_iot.setData(msg.SUBTYPE_DC_MOTOR, [msg.DC_FORWARD, +5])

time.sleep(.2)

print("Button 4 Pushed")

elif btn_dict5['Button 5'] == 0:

motor_data = [msg.SUBTYPE_DC_MOTOR, 0]

print("Button 5 Pushed")

time.sleep(.2)

elif btn_dict6['Button 6'] == 0:

if motor_data == [msg.DC_FORWARD]:

loco_iot.setData(msg.SUBTYPE_DC_MOTOR, [msg.DC_BACKWARD, 0])

time.sleep(.2)

else:

loco_iot.setData(msg.SUBTYPE_DC_MOTOR, [msg.DC_FORWARD, +5])

time.sleep(.2)

print("Button 6 Pushed")

time.sleep(.2)

elif motor_data >= [msg.DC_FORWARD, 255]:

loco_iot.setData(msg.SUBTYPE_DC_MOTOR, [msg.DC_FORWARD, 255])

print("Exceed max speed")

time.sleep(.2)

# Set Motor Parameters

loco_iot.setData(msg.SUBTYPE_DC_MOTOR, motor_data)


# Arbitrary Delay

time.sleep(0.5)

# Close Connection to the Microcontroller

loco_iot.close()