From 458b0ac209b1737355ddbaa5d9a7fa6ba4f1e46e Mon Sep 17 00:00:00 2001 From: ZodiusInfuser Date: Wed, 3 Apr 2024 14:29:01 +0100 Subject: [PATCH] Added a speed reading example for inventor --- .../inventor2040w/motors/read_speeds.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 micropython/examples/inventor2040w/motors/read_speeds.py diff --git a/micropython/examples/inventor2040w/motors/read_speeds.py b/micropython/examples/inventor2040w/motors/read_speeds.py new file mode 100644 index 00000000..f8e3a245 --- /dev/null +++ b/micropython/examples/inventor2040w/motors/read_speeds.py @@ -0,0 +1,46 @@ +import time +from inventor import Inventor2040W, NUM_MOTORS # , MOTOR_A, MOTOR_B +# from pimoroni import REVERSED_DIR + +""" +Demonstrates how to read the speeds of Inventor 2040 W's two encoders. + +Press "User" to exit the program. +""" + +# Wheel friendly names +NAMES = ["LEFT", "RIGHT"] + +# Constants +GEAR_RATIO = 50 # The gear ratio of the motor +SPEED = 1.0 # The speed to drive the motors at +SLEEP = 0.1 # The time to sleep between each capture + +# Create a new Inventor2040W +board = Inventor2040W(motor_gear_ratio=GEAR_RATIO) + +# Uncomment the below lines (and the top imports) to +# reverse the counting direction of an encoder +# encoders[MOTOR_A].direction(REVERSED_DIR) +# encoders[MOTOR_B].direction(REVERSED_DIR) + +# Set both motors driving +for motor in board.motors: + motor.speed(SPEED) + +# Variables for storing encoder captures +captures = [None] * NUM_MOTORS + +# Read the encoders until the user button is pressed +while not board.switch_pressed(): + + # Capture the state of all the encoders since the last capture, SLEEP seconds ago + for i in range(NUM_MOTORS): + captures[i] = board.encoders[i].capture() + + # Print out the speeds from each encoder + for i in range(NUM_MOTORS): + print(NAMES[i], "=", captures[i].revolutions_per_second, end=", ") + print() + + time.sleep(SLEEP) \ No newline at end of file