-
Notifications
You must be signed in to change notification settings - Fork 2
/
save_home_in_log_file.py
61 lines (49 loc) · 1.44 KB
/
save_home_in_log_file.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import time
from time import sleep
import RPi.GPIO as GPIO
# Set GPIO mode and disable warnings
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# Function to write data to a log file
def write(parameter, value):
with open("/home/pi/shared/log/" + parameter + ".log", "w") as file:
file.write(str(value))
# Function to load data from a log file
def load(parameter):
with open("/home/pi/shared/log/" + parameter + ".log", "r") as file:
parameter = file.read()
return parameter
# Motor control pins
control_pins = [5, 11, 9, 10]
# Load home position counter and increment by 5
homecounter = str(load("home"))
stepshome = int(homecounter) + int(5)
# Initialize control pins and set output to 0
for pin in control_pins:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, 0)
# Define halfstep sequence for motor control
halfstep_seq = [
[1, 0, 0, 1],
[0, 0, 0, 1],
[0, 0, 1, 1],
[0, 0, 1, 0],
[0, 1, 1, 0],
[0, 1, 0, 0],
[1, 1, 0, 0],
[1, 0, 0, 0],
]
# Execute motor movement based on halfstep sequence
for i in range(stepshome):
for halfstep in range(8):
for pin in range(4):
GPIO.output(control_pins[pin], halfstep_seq[halfstep][pin])
time.sleep(0.001)
# Clean up GPIO pins
GPIO.cleanup()
# Reset home position counter and update the log file
write("home", 0)
# Set message payload to 0
msg['payload'] = "0"
# Return message
return msg