File tree Expand file tree Collapse file tree 2 files changed +31
-9
lines changed
Expand file tree Collapse file tree 2 files changed +31
-9
lines changed Original file line number Diff line number Diff line change 11import sys
2- import time
32"""
43A simple file for shutting off all of the motors after a program gets interrupted from the REPL.
54Run this file after interrupting a program to stop the robot by running "import XRPLib.resetbot" in the REPL.
65"""
7- print ("Stopping all motors and shutting down the robot..." )
6+ print (sys . modules )
87
9- if "XRPLib.encoded_motor" in sys . modules :
8+ def reset_motors () :
109 from XRPLib .encoded_motor import EncodedMotor
1110 # using the EncodedMotor since the default drivetrain uses the IMU and takes 3 seconds to init
1211 for i in range (4 ):
1312 motor = EncodedMotor .get_default_encoded_motor (i + 1 )
1413 motor .set_speed (0 )
1514 motor .reset_encoder_position ()
1615
17- if "XRPLib.board" in sys . modules :
16+ def reset_led () :
1817 from XRPLib .board import Board
1918 # Turn off the on-board LED
2019 Board .get_default_board ().led_off ()
2120
22- if "XRPLib.servo" in sys . modules :
21+ def reset_servos () :
2322 from XRPLib .servo import Servo
2423 # Turn off both Servos
2524 Servo .get_default_servo (1 ).free ()
2625 Servo .get_default_servo (2 ).free ()
2726
28- if "XRPLib.webserver" in sys . modules :
27+ def reset_webserver () :
2928 from XRPLib .webserver import Webserver
3029 # Shut off the webserver and close network connections
31- Webserver .get_default_webserver ().stop_server ()
30+ Webserver .get_default_webserver ().stop_server ()
31+
32+ def reset_hard ():
33+ reset_motors ()
34+ reset_led ()
35+ reset_servos ()
36+ reset_webserver ()
37+
38+ if "XRPLib.encoded_motor" in sys .modules :
39+ reset_motors ()
40+
41+ if "XRPLib.board" in sys .modules :
42+ reset_led ()
43+
44+ if "XRPLib.servo" in sys .modules :
45+ reset_servos ()
46+
47+ if "XRPLib.webserver" in sys .modules :
48+ reset_webserver ()
Original file line number Diff line number Diff line change @@ -36,7 +36,8 @@ def __init__(self, signal_pin:int):
3636
3737 self ._servo = PWM (Pin (signal_pin , Pin .OUT ))
3838 # Initialize base frequency for the PWM
39- self ._servo .freq (50 )
39+ self ._servo .init (freq = 50 )
40+ self ._is_init = True
4041 self .MICROSEC_PER_DEGREE : int = 10000
4142 self .LOW_ANGLE_OFFSET : int = 500000
4243
@@ -46,10 +47,14 @@ def set_angle(self, degrees: float):
4647 :param degrees: The angle to set the servo to [0,200]
4748 :ptype degrees: float
4849 """
50+ if not self ._is_init :
51+ self ._servo .init (freq = 50 )
52+ self ._is_init = True
4953 self ._servo .duty_ns (int (degrees * self .MICROSEC_PER_DEGREE + self .LOW_ANGLE_OFFSET ))
5054
5155 def free (self ):
5256 """
5357 Allows the servo to spin freely without holding position
5458 """
55- self ._servo .duty_ns (0 )
59+ self ._servo .deinit ()
60+ self ._is_init = False
You can’t perform that action at this time.
0 commit comments