aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xSystem/initialize_system.py2
-rwxr-xr-xSystem/system.py9
-rwxr-xr-xSystem/test_Encoder.py13
-rwxr-xr-xSystem/test_Motor.py28
4 files changed, 37 insertions, 15 deletions
diff --git a/System/initialize_system.py b/System/initialize_system.py
index 4eb287a..6df880f 100755
--- a/System/initialize_system.py
+++ b/System/initialize_system.py
@@ -1,7 +1,9 @@
# This file should be run on system startup. It will initialize the linear position to the center so that all tests originate from a proper position.
# The center is found by using the hardware limit switches
from system import System
+import RPi.GPIO as GPIO
# Main program
sys = System()
sys.initialize()
+GPIO.cleanup()
diff --git a/System/system.py b/System/system.py
index 8dd9f38..7b2ffcf 100755
--- a/System/system.py
+++ b/System/system.py
@@ -20,7 +20,7 @@ encoder_data_pin = 3
### Angular encoder pins
encoder_angular_cs_pin = 4
### Linear encoder pins
-encoder_linear_cs_pin = 14
+encoder_linear_cs_pin = 14
### Limit switch pins (configured to PULLUP)
limit_negative_pin = 19
limit_positive_pin = 26
@@ -89,6 +89,13 @@ class System:
self.encoder_thread.start()
# END __init__()
+ # Destructor
+ # Brake the motor and call GPIO.cleanup as a last-chance of doing so
+ def __del__(self):
+ self.motor.brake()
+ GPIO.cleanup()
+ # END __del__()
+
def initialize(self):
# Temporarily disable the limit switch interrupts: we do not want the program to exit if the switch is triggered
GPIO.remove_event_detect(limit_negative_pin)
diff --git a/System/test_Encoder.py b/System/test_Encoder.py
index b667cc1..d0b7ef8 100755
--- a/System/test_Encoder.py
+++ b/System/test_Encoder.py
@@ -1,5 +1,6 @@
from encoder import Encoder
import time
+import RPi.GPIO as GPIO
# Decide which pins to hook up to on the Pi before running
clk_pin = 2
@@ -9,6 +10,12 @@ data_pin = 3
e = Encoder(clk_pin, cs_pin, data_pin)
e.set_zero()
-while(1):
- print(e.read_position('Degrees'))
- time.sleep(0.001) \ No newline at end of file
+try:
+ while(1):
+ print(e.read_position('Degrees'))
+ time.sleep(0.001)
+except:
+ print("Program killed by Ctrl-C")
+finally:
+ # Perform GPIO cleanup. Things may get weird otherwise...
+ GPIO.cleanup()
diff --git a/System/test_Motor.py b/System/test_Motor.py
index 80cff1e..f48b6ee 100755
--- a/System/test_Motor.py
+++ b/System/test_Motor.py
@@ -1,5 +1,6 @@
from motor import Motor
import time
+import RPi.GPIO as GPIO
# Decide which pins to hook up to on the Pi before running
speed_pin = 17
@@ -10,14 +11,19 @@ m = Motor(speed_pin, forward_pin, reverse_pin)
dir = 'ascending'
speed = 0.0
-while 1:
- if speed >= 15.0:
- dir = 'descending'
- elif speed <= -15.0:
- dir = 'ascending'
- if dir == 'ascending':
- speed = speed + 2.0
- else:
- speed = speed - 2.0
- m.move(speed)
- time.sleep(0.1) \ No newline at end of file
+try:
+ while 1:
+ if speed >= 15.0:
+ dir = 'descending'
+ elif speed <= -15.0:
+ dir = 'ascending'
+ if dir == 'ascending':
+ speed = speed + 2.0
+ else:
+ speed = speed - 2.0
+ m.move(speed)
+ time.sleep(0.1)
+except:
+ print("Program killed by Ctrl-C")
+finally:
+ GPIO.cleanup() \ No newline at end of file