Files
picar/MotorControl/motor.py
2019-01-07 14:23:06 +10:30

99 lines
2.0 KiB
Python

import time
from RPi import GPIO
"""This module controls the Motor and Servo control.
This module provides an interface for interacting with
the motor on the Traxxas Slash using a Raspberry Pi
3B+.
"""
class MotorController:
def __init__(self, pin_number, frequency, duty_cycle=0):
self._duty_cycle = duty_cycle
self._operating_frequency = frequency
self._running = False
self.pin_number = pin_number
# Pulse width was mentioned to be 6-7.2% by uni group.
GPIO.setmode(GPIO.OUT)
GPIO.setup(self.pin_number, self._operating_frequency)
self._control_pin = GPIO.PWM(self.pin_number, self._duty_cycle)
@property
def duty_cycle(self):
return self._duty_cycle
@duty_cycle.setter
def duty_cycle(self, value):
if value > 0 and value < 100:
self._duty_cycle = value
# Change the current duty cycle of the GPIO.
self._control_pin.changeDutyCycle
def start(self):
if self._running:
return
else:
self._control_pin.start(self._duty_cycle)
def stop(self):
self._control_pin.stop()
def arm(self):
# Set pulse width 0
# Wait 1s
# Set pulse width to maximum
# Wait 1s
# set pulse width minimum
# Wait 1s
# Set pulse width to idle
pass
def setThrottle(self, throttle: float):
pass
class MotorDetails:
def __init__(self):
pass
@property
def minDutyCycle(self):
return self._minDutyCycle
@minDutyCycle.setter
def minDutyCycle(self, value):
self._minDutyCycle = value
@property
def maxDutyCycle(self):
return self._maxDutyCycle
@maxDutyCycle.setter
def maxDutyCycle(self, value):
self._maxDutyCycle = value
@property
def idle(self):
return self._idle
@idle.setter
def idle(self, value):
self._idle = value
class Connection:
def __init__(self):
pass