/ Raspberry_Pi_Stepper_Motors / Raspberry_Pi_Stepper_Motors.py
Raspberry_Pi_Stepper_Motors.py
 1  # SPDX-FileCopyrightText: 2019 Mikey Sklar for Adafruit Industries
 2  #
 3  # SPDX-License-Identifier: MIT
 4  
 5  import time
 6  import board
 7  import digitalio
 8  
 9  enable_pin = digitalio.DigitalInOut(board.D18)
10  coil_A_1_pin = digitalio.DigitalInOut(board.D4)
11  coil_A_2_pin = digitalio.DigitalInOut(board.D17)
12  coil_B_1_pin = digitalio.DigitalInOut(board.D23)
13  coil_B_2_pin = digitalio.DigitalInOut(board.D24)
14  
15  enable_pin.direction = digitalio.Direction.OUTPUT
16  coil_A_1_pin.direction = digitalio.Direction.OUTPUT
17  coil_A_2_pin.direction = digitalio.Direction.OUTPUT
18  coil_B_1_pin.direction = digitalio.Direction.OUTPUT
19  coil_B_2_pin.direction = digitalio.Direction.OUTPUT
20  
21  enable_pin.value = True
22  
23  def forward(delay, steps):
24      i = 0
25      while i in range(0, steps):
26          setStep(1, 0, 1, 0)
27          time.sleep(delay)
28          setStep(0, 1, 1, 0)
29          time.sleep(delay)
30          setStep(0, 1, 0, 1)
31          time.sleep(delay)
32          setStep(1, 0, 0, 1)
33          time.sleep(delay)
34          i += 1
35  
36  def backwards(delay, steps):
37      i = 0
38      while i in range(0, steps):
39          setStep(1, 0, 0, 1)
40          time.sleep(delay)
41          setStep(0, 1, 0, 1)
42          time.sleep(delay)
43          setStep(0, 1, 1, 0)
44          time.sleep(delay)
45          setStep(1, 0, 1, 0)
46          time.sleep(delay)
47          i += 1
48  
49  def setStep(w1, w2, w3, w4):
50      coil_A_1_pin.value = w1
51      coil_A_2_pin.value = w2
52      coil_B_1_pin.value = w3
53      coil_B_2_pin.value = w4
54  
55  while True:
56      user_delay = input("Delay between steps (milliseconds)?")
57      user_steps = input("How many steps forward? ")
58      forward(int(user_delay) / 1000.0, int(user_steps))
59      user_steps = input("How many steps backwards? ")
60      backwards(int(user_delay) / 1000.0, int(user_steps))