diff --git a/motor.py b/motor.py index f77af72..4ece8f7 100644 --- a/motor.py +++ b/motor.py @@ -9,13 +9,13 @@ SERVO1_PIN = 19 SERVO2_PIN = 18 # Buttons -BUTTON1_FWD = 5 # Motor1 forward -BUTTON1_BWD = 6 # Motor1 backward -BUTTON2_FWD = 17 # Motor2 forward -BUTTON2_BWD = 27 # Motor2 backward +BUTTON1_FWD = 5 # Motor1 increase speed +BUTTON1_BWD = 6 # Motor1 decrease speed +BUTTON2_FWD = 17 # Motor2 increase speed +BUTTON2_BWD = 27 # Motor2 decrease speed SHUTDOWN_BTN = 26 # Shutdown button -# Setup buttons (pulled down, pressed = HIGH) +# Setup buttons for button in [BUTTON1_FWD, BUTTON1_BWD, BUTTON2_FWD, BUTTON2_BWD, SHUTDOWN_BTN]: GPIO.setup(button, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) @@ -35,14 +35,18 @@ def pulse_to_duty(pulse_us): return (pulse_us / 20000.0) * 100.0 # 20ms period → duty % # Pulse limits -STOP_PULSE = 1500 -MIN_PULSE = 1000 -MAX_PULSE = 1500 - -# Initialize at 1200 µs +MIN_PULSE = 1000 +MAX_PULSE = 1500 INIT_PULSE = 1200 -servo1.ChangeDutyCycle(pulse_to_duty(INIT_PULSE)) -servo2.ChangeDutyCycle(pulse_to_duty(INIT_PULSE)) +STEP = 10 # how much to change per press (µs) + +# Speed variables +pulse1 = INIT_PULSE +pulse2 = INIT_PULSE + +# Initialize servos +servo1.ChangeDutyCycle(pulse_to_duty(pulse1)) +servo2.ChangeDutyCycle(pulse_to_duty(pulse2)) # ---------------------------- # Main loop @@ -54,19 +58,17 @@ try: # Motor 1 if GPIO.input(BUTTON1_FWD) == GPIO.HIGH: - servo1.ChangeDutyCycle(pulse_to_duty(MAX_PULSE)) + pulse1 = min(MAX_PULSE, pulse1 + STEP) elif GPIO.input(BUTTON1_BWD) == GPIO.HIGH: - servo1.ChangeDutyCycle(pulse_to_duty(MIN_PULSE)) - else: - servo1.ChangeDutyCycle(pulse_to_duty(STOP_PULSE)) + pulse1 = max(MIN_PULSE, pulse1 - STEP) + servo1.ChangeDutyCycle(pulse_to_duty(pulse1)) # Motor 2 if GPIO.input(BUTTON2_FWD) == GPIO.HIGH: - servo2.ChangeDutyCycle(pulse_to_duty(MAX_PULSE)) + pulse2 = min(MAX_PULSE, pulse2 + STEP) elif GPIO.input(BUTTON2_BWD) == GPIO.HIGH: - servo2.ChangeDutyCycle(pulse_to_duty(MIN_PULSE)) - else: - servo2.ChangeDutyCycle(pulse_to_duty(STOP_PULSE)) + pulse2 = max(MIN_PULSE, pulse2 - STEP) + servo2.ChangeDutyCycle(pulse_to_duty(pulse2)) time.sleep(0.05)