Skip to content
Snippets Groups Projects
Commit 1b696744 authored by SiccoColijn's avatar SiccoColijn
Browse files

Included PWM

parent a344012e
No related branches found
No related tags found
No related merge requests found
# Libraries
import RPi.GPIO as GPIO
import time
import Encoder from encoder
from encoder import Encoder
#import PWMoutputFunction
# GPIO Mode (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
print(GPIO.VERSION)
LEFTMOTOR = 17
GPIO.setup(LEFTMOTOR, GPIO.OUT)
class Driving:
def __init__ (self):
......@@ -23,13 +25,11 @@ class Driving:
self.rotationspeed = 0.2 #speed in PWM percentage
self.leftPWM = 0
self.rightPWM =0
self.encoderLeft= Encoder(left,23)
self.encoderRight = Encoder(right,24)
self.encoderLeft = Encoder(name="encoder1", encoder_pin=23)
self.encoderRight = Encoder(name="encoder1", encoder_pin=24)
def stop(self):
self.speed= 0
def driveForward(self, distance, speed):
#reset pulse count
......@@ -78,29 +78,51 @@ class Driving:
self.currentPulseCountRight= self.encoderRight.get_pulse_count()
if self.currentPulseCountLeft >= self.setpointPulseCountLeft:
self.leftPWM =0
self.leftPWM = 0
elif self.currentPulseCountLeft >= self.setpointPulseCountLeft-5:
self.leftPWM = self.speed*0.5
elif self.currentPulseCountLeft >= self.setpointPulseCountLeft-2:
elif self.currentPulseCountLeft >= self.setpointPulseCountLeft-2:
self.leftPWM = self.speed*0.1
else
else:
self.leftPWM = self.speed
if self.setpointPulseCountRight >= self.currentPulseCountRight:
self.rightPWM =0
#if self.setpointPulseCountRight >= self.currentPulseCountRight:
if self.currentPulseCountRight >= self.setpointPulseCountRight:
self.rightPWM = 0
elif self.currentPulseCountRight >= self.setpointPulseCountRight-5:
self.rightPWM = self.speed*0.5
elif self.currentPulseCountRight >= self.setpointPulseCountRight-2:
elif self.currentPulseCountRight >= self.setpointPulseCountRight-2:
self.rightPWM = self.speed*0.1
else
else:
self.rightPWM = self.speed
# safty control, left and right PWM should always be the same. If not, chose the smaler one
# safty control, left and right PWM should always be the same. If not, choose the smaller one
if self.leftPWM > self.rightPWM:
self.leftPWM = self.rightPWM
if self.rightPWM > self.leftPWM:
self.rightPWM = self.leftPWM
return self.leftPWM, self.rightPWM, self.directionLeftWheel, self.directionRightWheel
try:
motor = Driving()
motor.__init__()
leftPin = GPIO.PWM(LEFTMOTOR, 50)
leftPin.start(0)
motor.driveForward(30, 1)
while True:
leftDC, rightDC, dir1, dir2 = motor.getPWM()
leftPin.ChangeDutyCycle(leftDC)
print(leftDC)
time.sleep(0.01)
except KeyboardInterrupt: # Exit by pressing CTRL + C
leftPin.stop()
GPIO.cleanup()
print("Measurement stopped by User")
finally:
leftPin.stop()
GPIO.cleanup()
return self.leftPWM,self.rightPWM, self.directionLeftWheel, self.directionRightWheel
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment