Introduction

Controlling two motors through a f28379d microcontroller and two drv8305 motor drivers.

Installation

1 pip install git+https://github.com/cps-lab-saga/f28379d-drv8305-dual-comm.git@main

Basic usage

 1from math import pi, degrees
 2
 3from f28379d_drv8305_dual_comm import Controller
 4
 5c = Controller()  # connect to controller
 6
 7c.set_control_mode(1, "position control (speed)")  # set control mode for motor 1
 8c.disable_motor(2)  # disable motor 2
 9
10c.set_zero_angle(1)  # set current pos for motor 1 to zero
11
12c.set_pos(1, pi)  # set target position of motor 1 to pi radians
13
14# hold down the external pushbutton to run
15
16current_pos = c.get_pos(1)  # get current position of motor 1
17print(f"{degrees(current_pos)} degrees")
18
19c.disconnect()  # disconnect from controller

Read data using callback function

 1from time import sleep
 2
 3from f28379d_drv8305_dual_comm import Controller
 4
 5
 6def my_callback_func(measurements):
 7    print(measurements)
 8
 9
10c = Controller()  # connect to controller
11
12c.set_callback(my_callback_func)  # function is called when data arrived from controller
13
14sleep(5)
15
16c.disconnect()  # disconnect from controller

Read data from queue

1from f28379d_drv8305_dual_comm import Controller
2
3c = Controller()  # connect to controller
4
5for _ in range(500):
6    print(c.get_from_queue())
7
8c.disconnect()  # disconnect from controller