mirror of
https://github.com/KevinMidboe/curtains_avantGarde.git
synced 2025-10-29 09:30:18 +00:00
69 lines
1.3 KiB
Python
69 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
# @Author: KevinMidboe
|
|
# @Date: 2017-08-25 16:04:49
|
|
# @Last Modified by: KevinMidboe
|
|
# @Last Modified time: 2017-08-25 17:34:07
|
|
|
|
from time import sleep
|
|
import RPi.GPIO as gpio
|
|
|
|
class Stepper:
|
|
# Initiate stepper
|
|
# Pins = [pin1, pin2, pin3, pin4]
|
|
def __init__(self, pins):
|
|
self.pins = pins
|
|
|
|
gpio.setmode(gpio.BCM)
|
|
|
|
for pin in self.pins:
|
|
gpio.setup(pin, gpio.OUT)
|
|
gpio.output(pin, False)
|
|
|
|
# Clears the GPIO settings
|
|
def cleanGPIO(self):
|
|
gpio.cleanup()
|
|
|
|
def rotate(self, l, n=1):
|
|
return l[n:] + l[:n]
|
|
|
|
def togglePin(self, pins):
|
|
for pin in self.pins:
|
|
if pin in pins:
|
|
gpio.output(pin, True)
|
|
else:
|
|
gpio.output(pin, False)
|
|
|
|
sleep(0.001)
|
|
|
|
def step(self, rotations, dir, speed=1, forever=False):
|
|
for pin in self.pins:
|
|
gpio.output(pin, True)
|
|
|
|
turnLeft = True
|
|
if (dir == 'right'):
|
|
turnLeft = False
|
|
elif (dir != 'left'):
|
|
raise ValueError('STEPPER ERROR: no direction supplied')
|
|
return False
|
|
|
|
steps = rotations * 500
|
|
pinState = self.pins
|
|
|
|
while steps > 0:
|
|
for i in range(2):
|
|
self.togglePin([pinState[0]])
|
|
self.togglePin([pinState[0], pinState[1]])
|
|
|
|
pinState = self.rotate(pinState)
|
|
|
|
|
|
steps -=1
|
|
|
|
|
|
if __name__ == '__main__':
|
|
pins = [17, 18, 27, 22]
|
|
stepper = Stepper(pins)
|
|
stepper.step(10, 'left')
|
|
stepper.cleanGPIO()
|