Stepper mótorar

https://defendtheplanet.net/2014/05/04/controlling-a-stepper-motor-28byi...

https://tutorials-raspberrypi.com/how-to-control-a-stepper-motor-with-ra...

import RPi.GPIO as gpio
import time import math

# Clean up GPIOs in case they have been preactivated gpio.cleanup()
# Use the BCM GPIO pin numbers rather than the physical pin numbers for
# portability.
gpio.setmode(gpio.BCM)
gpio.setwarnings(False)

# Set which pins we're using for the stepper control
# The order in the list is:
# [ blue, pink, yellow, orange ]
stepper_pins = [ 6, 13, 19, 26]
# Set the pins as outputs for pin in stepper_pins:
gpio.setup(pin,gpio.OUT)
gpio.output(pin,False)

# Quick pause for things to finish
time.sleep(0.5)

# Basic variables
wait_time = 0.002
# Single step sequence
single_steps = 4
# Define single_seq as a list
single_seq = []
# Temporarily populate it to make sure it has the right length
single_seq = range(single_steps)
# Set the sequence
single_seq[0] = [1,0,0,0]
single_seq[1] = [0,1,0,0]
single_seq[2] = [0,0,1,0]
single_seq[3] = [0,0,0,1]

def setStep(stepper_pins_states):
  # setStep takes in a list of states (True/False, or 1/0) and sets the GPIO
  # pins to high/low, accordingly.
  for i in range(len(stepper_pins)):
    gpio.output(stepper_pins[i],stepper_pins_states[i])

def turnSteps(num):
  # turnSteps takes in the number of steps the stepper motor should take,
  # with the sign determining the direction. The gearing ratio results in
  # there being 2048 steps in a full circle.
  count = 0
  print('In turnSteps')
  while abs(count) < abs(num):
    print(single_seq[count%len(single_seq)])
    setStep(single_seq[count%len(single_seq)])
    time.sleep(wait_time)
    print(count)
    print(math.copysign(1,num))
    count += int(math.copysign(1,num))
    print(count)

def turnCircles(circ):
  # turnCircles is just a shortcut to define the turn by a fraction of a
  # circle.
  turnSteps(circ*2048)

def stepperPowerdown():
  # Sets all the pins to low so that the stepper motor coils aren't
  # unnecessarily being powered.
  for pin in stepper_pins:
    gpio.setmode(gpio.BCM)
    gpio.setup(pin,gpio.OUT)
    gpio.output(pin,False)
    gpio.setup(21,gpio.IN)

# Main loop: Run the stepper motor
try: print('trying')
  while True:
    print(gpio.input(21))
    if not gpio.input(21):
      turnSteps(-1024)
    else:
      stepperPowerdown()
      time.sleep(0.1)
    except:
      print('exception called!!')
      gpio.cleanup()
    finally:
      print('Finally ...')
      gpio.cleanup() stepperPowerdown()