Merge pull request #29 from egoistka/sweep-cleanup

Fix typo and inline map() for improved readability in Sweep.py
This commit is contained in:
Suhayl
2020-12-12 16:37:52 +08:00
committed by GitHub
+14 -15
View File
@@ -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():