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 1
1
import sys
2
- import time
3
2
"""
4
3
A simple file for shutting off all of the motors after a program gets interrupted from the REPL.
5
4
Run this file after interrupting a program to stop the robot by running "import XRPLib.resetbot" in the REPL.
6
5
"""
7
- print ("Stopping all motors and shutting down the robot..." )
6
+ print (sys . modules )
8
7
9
- if "XRPLib.encoded_motor" in sys . modules :
8
+ def reset_motors () :
10
9
from XRPLib .encoded_motor import EncodedMotor
11
10
# using the EncodedMotor since the default drivetrain uses the IMU and takes 3 seconds to init
12
11
for i in range (4 ):
13
12
motor = EncodedMotor .get_default_encoded_motor (i + 1 )
14
13
motor .set_speed (0 )
15
14
motor .reset_encoder_position ()
16
15
17
- if "XRPLib.board" in sys . modules :
16
+ def reset_led () :
18
17
from XRPLib .board import Board
19
18
# Turn off the on-board LED
20
19
Board .get_default_board ().led_off ()
21
20
22
- if "XRPLib.servo" in sys . modules :
21
+ def reset_servos () :
23
22
from XRPLib .servo import Servo
24
23
# Turn off both Servos
25
24
Servo .get_default_servo (1 ).free ()
26
25
Servo .get_default_servo (2 ).free ()
27
26
28
- if "XRPLib.webserver" in sys . modules :
27
+ def reset_webserver () :
29
28
from XRPLib .webserver import Webserver
30
29
# 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):
36
36
37
37
self ._servo = PWM (Pin (signal_pin , Pin .OUT ))
38
38
# Initialize base frequency for the PWM
39
- self ._servo .freq (50 )
39
+ self ._servo .init (freq = 50 )
40
+ self ._is_init = True
40
41
self .MICROSEC_PER_DEGREE : int = 10000
41
42
self .LOW_ANGLE_OFFSET : int = 500000
42
43
@@ -46,10 +47,14 @@ def set_angle(self, degrees: float):
46
47
:param degrees: The angle to set the servo to [0,200]
47
48
:ptype degrees: float
48
49
"""
50
+ if not self ._is_init :
51
+ self ._servo .init (freq = 50 )
52
+ self ._is_init = True
49
53
self ._servo .duty_ns (int (degrees * self .MICROSEC_PER_DEGREE + self .LOW_ANGLE_OFFSET ))
50
54
51
55
def free (self ):
52
56
"""
53
57
Allows the servo to spin freely without holding position
54
58
"""
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