import time
from machine import Pin

class A4988:
	def __init__(self, DIR_pin=0, STEP_pin=1):
		self._dir = Pin(DIR_pin, Pin.OUT)
		self._step = Pin(STEP_pin, Pin.OUT)
		self._dir.value(0)
		self._step.value(0)

	def step(self, forward=True):
		self._dir.value(1 if forward else 0)
		self._step.value(1)
		self._step.value(0)

	def move_sync(self, steps, speed=1000.0):
		self._dir.value(steps >= 0)
		time_per_step = 1.0 / speed
		for count in range(abs(steps)):
			self._step.value(1)
			self._step.value(0)
			time.sleep(time_per_step)

	def deinit(self):
		self._dir.init(Pin.IN)
		self._step.init(Pin.IN)
		self._dir = None
		self._step = None

	def __enter__(self):
		return self

	def __exit__(self):
		self.deinit()
