-
Notifications
You must be signed in to change notification settings - Fork 2
/
turn-table-and-save-steps-into-logfile.py
67 lines (52 loc) · 1.69 KB
/
turn-table-and-save-steps-into-logfile.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
62
63
64
65
66
# Import required modules
import time
from time import sleep
import RPi.GPIO as GPIO
# Store payload value in the variable 'value'
value = int(msg['payload'])
# Define control pins for the rotary table motor
control_pins = [26, 19, 13, 6]
# Set up GPIO outputs on the Raspberry Pi
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
# Define a 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))
# Define a function to read data from a log file
def load(parameter):
with open("/home/pi/shared/log/" + parameter + ".log", "r") as file:
parameter = file.read()
return parameter
# Load home position value from log file and store in 'homecounterTT'
homecounterTT = int(load("homeTT"))
# Set up motor control pins and initialize output to 0
for pin in control_pins:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, 0)
# Define half-step 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],
]
# Move the motor by the number of steps specified in 'value'
for i in range(value):
for halfstep in range(8):
# Iterate through each motor position in the sequence
for pin in range(4):
GPIO.output(control_pins[pin], halfstep_seq[halfstep][pin])
# Delay to allow for motor movement
time.sleep(0.001)
# Calculate new home position and update log file
newHome = homecounterTT - value
write("homeTT", newHome)
# Clean up GPIO pins
GPIO.cleanup()
# Return message
return msg