diff --git a/Code/Python_Code/15.1.1_Sweep/Sweep.py b/Code/Python_Code/15.1.1_Sweep/Sweep.py index f5b1f6e..22f1234 100644 --- a/Code/Python_Code/15.1.1_Sweep/Sweep.py +++ b/Code/Python_Code/15.1.1_Sweep/Sweep.py @@ -7,39 +7,38 @@ ######################################################################## import RPi.GPIO as GPIO import time -OFFSE_DUTY = 0.5 #define pulse offset of servo -SERVO_MIN_DUTY = 2.5+OFFSE_DUTY #define pulse duty cycle for minimum angle of servo -SERVO_MAX_DUTY = 12.5+OFFSE_DUTY #define pulse duty cycle for maximum angle of servo +OFFSET_DUTY = 0.5 # define pulse offset of servo +SERVO_MIN_DUTY = 2.5 + OFFSET_DUTY # define pulse duty cycle for minimum angle of servo +SERVO_MAX_DUTY = 12.5 + OFFSET_DUTY # define pulse duty cycle for maximum angle of servo +SERVO_DELAY_SEC = 0.001 servoPin = 12 -def map( value, fromLow, fromHigh, toLow, toHigh): # map a value from one range to another range - return (toHigh-toLow)*(value-fromLow) / (fromHigh-fromLow) + toLow - def setup(): global p GPIO.setmode(GPIO.BOARD) # use PHYSICAL GPIO Numbering GPIO.setup(servoPin, GPIO.OUT) # Set servoPin to OUTPUT mode GPIO.output(servoPin, GPIO.LOW) # Make servoPin output LOW level - p = GPIO.PWM(servoPin, 50) # set Frequece to 50Hz + p = GPIO.PWM(servoPin, 50) # set Frequence to 50Hz p.start(0) # Set initial Duty Cycle to 0 def servoWrite(angle): # make the servo rotate to specific angle, 0-180 - if(angle<0): + if(angle < 0): angle = 0 elif(angle > 180): angle = 180 - p.ChangeDutyCycle(map(angle,0,180,SERVO_MIN_DUTY,SERVO_MAX_DUTY)) # map the angle to duty cycle and output it + dc = SERVO_MIN_DUTY + (SERVO_MAX_DUTY - SERVO_MIN_DUTY) * angle / 180.0 # map the angle to duty cycle + p.ChangeDutyCycle(dc) def loop(): while True: - for dc in range(0, 181, 1): # make servo rotate from 0 to 180 deg - servoWrite(dc) # Write dc value to servo - time.sleep(0.001) + for angle in range(0, 181, 1): # make servo rotate from 0 to 180 deg + servoWrite(angle) + time.sleep(SERVO_DELAY_SEC) time.sleep(0.5) - for dc in range(180, -1, -1): # make servo rotate from 180 to 0 deg - servoWrite(dc) - time.sleep(0.001) + for angle in range(180, -1, -1): # make servo rotate from 180 to 0 deg + servoWrite(angle) + time.sleep(SERVO_DELAY_SEC) time.sleep(0.5) def destroy():