Mini-Project 3 Analog Joystick+ 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()



### Add Hardware Enable(s) Here

loco_iot.enable(msg.SUBTYPE_DC_MOTOR)

loco_iot.enable(msg.SUBTYPE_JOYSTICK)


def map_to_range( sensor_value, sensor_min, sensor_max, new_min, new_max ):

# Check if the sensor_value is in the given range

if (sensor_value > sensor_max):

sensor_value = sensor_max

elif(sensor_value < sensor_min):

sensor_value = sensor_min


sensor_range = sensor_max - sensor_min

new_range = new_max - new_min

new_value = (((sensor_value - sensor_min) * new_range) / sensor_range) + new_min


return new_value


# Instruct the Microcontroller to Start Listening for Control/Request Messages

loco_iot.start()


motor_direction = 0



start_time = time.time()

while (time.time() - start_time) < 30:

joystick_dict = loco_iot.getData(msg.SUBTYPE_JOYSTICK)

#if joystick_dict["Y Value"] < 512:

#y_data = map_to_range((joystick_dict["Y Value"]), 0, 512, 0, 255)

#print(int(y_data))

#data_list = [msg.DC_BACKWARD, y_data]

#loco_iot.setData(msg.SUBTYPE_DC_MOTOR, data_list)

#else:

#y_data = map_to_range((joystick_dict["Y Value"]), 512, 1023, 0, 255)

#print(int(y_data))

#data_list = [msg.DC_FORWARD, y_data]

#loco_iot.setData(msg.SUBTYPE_DC_MOTOR, data_list)

if joystick_dict["Y Value"] < 512:

joystick_dict["Y Value"] == 512

y_data = int(map_to_range((joystick_dict["Y Value"]), 512, 1023, 0, 255))

time.sleep(.1)

print("titty")

elif joystick_dict['Button J'] == 0:

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

print("Button J pushed")

time.sleep(.1)

elif motor_direction == 0:

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

time.sleep(.1)

print("anoos")

elif motor_direction == 1:

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

time.sleep(.1)

print("cone fart")

time.sleep(.250)



# Close Connection to the Microcontroller

loco_iot.close()