diff options
author | Raspberry Pi <pi@umn.edu> | 2019-11-14 15:04:59 -0600 |
---|---|---|
committer | Raspberry Pi <pi@umn.edu> | 2019-11-14 15:04:59 -0600 |
commit | b012b03f8161492511ecfd74ee073210a53ceca3 (patch) | |
tree | c3f6b53937a87946a67a37a805e670f369dd61e0 | |
parent | Update initialize to not use wait_for_event for detecting limit switches. Upd... (diff) | |
download | ee4511w-b012b03f8161492511ecfd74ee073210a53ceca3.tar ee4511w-b012b03f8161492511ecfd74ee073210a53ceca3.tar.gz ee4511w-b012b03f8161492511ecfd74ee073210a53ceca3.tar.bz2 ee4511w-b012b03f8161492511ecfd74ee073210a53ceca3.tar.lz ee4511w-b012b03f8161492511ecfd74ee073210a53ceca3.tar.xz ee4511w-b012b03f8161492511ecfd74ee073210a53ceca3.tar.zst ee4511w-b012b03f8161492511ecfd74ee073210a53ceca3.zip |
A few more minor tweaks to initialization. Added public variables for linear extent. Tested initialization on functioning system - it works!
-rw-r--r-- | System_Python/system.py | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/System_Python/system.py b/System_Python/system.py index 078c1f9..8f67872 100644 --- a/System_Python/system.py +++ b/System_Python/system.py @@ -23,10 +23,18 @@ encoder_linear_cs_pin = 14 limit_negative_pin = 19
limit_positive_pin = 26
+# System parameters
+system_max_x = 16.5
+system_min_x = -16.5
+
# System Class
# This is the primary interface a student will use to control the pendulum.
class System:
def __init__(self, negative_limit=float('nan'), positive_limit=float('nan')):
+ GPIO.setwarnings(False)
+ # Initialize public variables
+ self.max_x = system_max_x
+ self.min_x = system_min_x
# Initialize the motor.
self.motor = Motor(motor_speed_pin, motor_forward_pin, motor_reverse_pin)
# Initialize the angular encoder.
@@ -70,7 +78,7 @@ class System: GPIO.remove_event_detect(limit_positive_pin)
# Begin moving slowly in the negative direction until the negative limit switch is triggered
if not GPIO.input(limit_negative_pin) == False:
- self.motor.move(-1)
+ self.motor.move(-4)
pressed = True
while pressed != False:
pressed = GPIO.input(limit_negative_pin)
@@ -80,7 +88,7 @@ class System: self.encoder_linear.set_zero()
sleep(1)
# Begin moving slowly in the positive direction until the positive limit switch is triggered
- self.motor.move(1)
+ self.motor.move(4)
pressed = True
while pressed != False:
# We must continue reading linear encoder motion to keep track of rotations
@@ -94,7 +102,7 @@ class System: # Move back towards the center until we reach position extent/2
position = extent
sleep(1)
- self.motor.move(-1)
+ self.motor.move(-4)
while position >= (extent / 2.):
position = self.encoder_linear.read_position()
sleep(0.01)
@@ -171,9 +179,9 @@ class System: position = self.encoder_linear.read_position()
# slowly move towards 0 until we get there
if position > 0:
- self.motor.move(-1)
+ self.motor.move(-4)
elif position < 0:
- self.motor.move(1)
+ self.motor.move(4)
while not position == 0:
position = self.encoder_linear.read_position()
self.motor.brake()
@@ -181,6 +189,7 @@ class System: # Callback for when negative limit switch is triggered.
def negative_limit_callback(self, channel):
+ self.motor.brake()
# Print negative limit trigger to the results file.
result_file = open(self.result_filename, "a")
result_file.write("Negative hardware limit has been reached!")
@@ -190,6 +199,7 @@ class System: # END negative_limit_callback
# Callback for when positive limit switch is triggered.
def positive_limit_callback(self, channel):
+ self.motor.brake()
# Print positive limit trigger to the results file.
result_file = open(self.result_filename, "a")
result_file.write("Positive hardware limit has been reached!")
@@ -198,8 +208,7 @@ class System: self.limit_triggered()
# END positive_limit_callback
def limit_triggered(self):
- self.motor.brake()
- sleep(2)
+ sleep(1)
self.return_home()
sys.exit(1)
# END System
|