# Skript sloužící k řízení krokového motoru.
#
# Vytvořeno v rámci bakalářské práce na téma Vytvoření 3D modelu za pomoci 
# laserového vzoru.
# Martin Krátký
# Vysoké učení technické v Brně
# Květen 2019
# Práce je dostupná na webové adrese:
# https://www.vutbr.cz/studenti/zav-prace/detail/119313 
#

from time import sleep
import RPi.GPIO as GPIO

from datetime import datetime
import os

# Nastaveni motoru

DIR = 20    # Direction pin
STEP = 21   # GPIO pin
CW = 1      # Smer otaceni ve smeru hodinovych rucicek
CCW = 0     # Smer otaceni v protismeru hodinovych rucicek
stepCount = 200  # Maximalni pocet kroku
steps = 200 # Pocet kroku
MODE = (14, 15, 18)     #GPIO piny na mikrokrokove rozliseni

GPIO.setmode(GPIO.BCM)
GPIO.setup(DIR, GPIO.OUT)
GPIO.setup(STEP, GPIO.OUT)
GPIO.output(DIR, CW)
GPIO.setup(MODE, GPIO.OUT)
GPIO.output(MODE, (1, 1, 0))

snapStep = stepCount/steps

# Hlavni program
path = datetime.now().strftime("%Y%m%dT%H%M%S")

k=0
for i in range(stepCount):
    GPIO.output(STEP, GPIO.HIGH)
    sleep(.0208)
    GPIO.output(STEP, GPIO.LOW)
    sleep(.0208)
    
    if not (i % snapStep):
        sleep(3)
# Udrzba
GPIO.cleanup()

# Reference
# [1] Raspberry Pi Stepper Motor Tutorial. Rototron [online]. 2017 [cit. 2019-05-19]. 
#     Dostupné z: https://www.rototron.info/raspberry-pi-stepper-motor-tutorial/
#