diff --git a/README.MD b/README.MD index 3013117..85efc16 100644 --- a/README.MD +++ b/README.MD @@ -1,13 +1,24 @@ # ULN2003 for ESP32 uln2003 for `MicroPython` has been in github, here's the [link](https://github.com/IDWizard/uln2003). But it's work for `microbit`, so I change a little to transplant for my NodeMCU's `ESP-32s`. Here's the example: ```python -import Stepper -from machine import Pin -s1 = Stepper.create(Pin(16,Pin.OUT),Pin(17,Pin.OUT),Pin(5,Pin.OUT),Pin(18,Pin.OUT), delay=2) -s1.step(100) -s1.step(100,-1) # or s1.step(-100) -s1.angle(180) -s1.angle(360,-1) # or s1.angle(-360) +from stepper import Stepper + +in1 = 16 +in2 = 17 +in3 = 5 +in4 = 18 +delay = 2 +mode = 1 # 0 for half step, 1 for full step + +def main() -> None: + s1 = Stepper(in1, in2, in3, in4, delay, mode) + s1.step(100) + s1.step(100,-1) + s1.angle(180) + s1.angle(360,-1) + +if __name__ == "__main__": + main() ``` function `angle` is angle, and the PIN map: `IN1` link `PIN_16` diff --git a/boot.py b/boot.py index b189fb0..7a97160 100644 --- a/boot.py +++ b/boot.py @@ -1,5 +1,3 @@ -# This file is executed on every boot (including wake-boot from deepsleep) -# import esp -# esp.osdebug(None) -# import webrepl -# webrepl.start() +# from main import main + +# main() diff --git a/main.py b/main.py index d5673cb..987d5e7 100644 --- a/main.py +++ b/main.py @@ -1,13 +1,15 @@ -import Stepper -from machine import Pin -''' -IN1 --> 16 -IN2 --> 17 -IN3 --> 5 -IN4 --> 18 -''' -s1 = Stepper.create(Pin(16,Pin.OUT),Pin(17,Pin.OUT),Pin(5,Pin.OUT),Pin(18,Pin.OUT), delay=2) -s1.step(100) -s1.step(100,-1) -s1.angle(180) -s1.angle(360,-1) \ No newline at end of file +from stepper import Stepper + +in1 = 16 +in2 = 17 +in3 = 5 +in4 = 18 +delay = 2 +mode = 1 # 0 for half step, 1 for full step + +def main() -> None: + s1 = Stepper(in1, in2, in3, in4, delay, mode) + s1.step(100) + s1.step(100,-1) + s1.angle(180) + s1.angle(360,-1) \ No newline at end of file diff --git a/Stepper.py b/stepper.py similarity index 70% rename from Stepper.py rename to stepper.py index 9a1e0ea..0595b45 100644 --- a/Stepper.py +++ b/stepper.py @@ -1,4 +1,5 @@ import time +from machine import Pin # only test for uln2003 class Stepper: @@ -21,15 +22,17 @@ class Stepper: [0, 1, 0, 1], [1, 0, 0, 1] ] - def __init__(self, mode, pin1, pin2, pin3, pin4, delay): - if mode=='FULL_STEP': - self.mode = self.FULL_STEP + def __init__(self, pin1, pin2, pin3, pin4, delay, mode=1): + if mode == 1: + self.mode = self.FULL_STEP + elif mode == 0: + self.mode = self.HALF_STEP else: - self.mode = self.HALF_STEP - self.pin1 = pin1 - self.pin2 = pin2 - self.pin3 = pin3 - self.pin4 = pin4 + raise ValueError("Mode must be either 0 or 1") + self.pin1 = Pin(pin1, Pin.OUT) + self.pin2 = Pin(pin2, Pin.OUT) + self.pin3 = Pin(pin3, Pin.OUT) + self.pin4 = Pin(pin4, Pin.OUT) self.delay = delay # Recommend 10+ for FULL_STEP, 1 is OK for HALF_STEP # Initialize all to 0 @@ -49,13 +52,10 @@ class Stepper: time.sleep_ms(self.delay) self.reset() def angle(self, r, direction=1): - self.step(int(self.FULL_ROTATION * r / 360), direction) + self.step(int(self.FULL_ROTATION * r / 360), direction) def reset(self): # Reset to 0, no holding, these are geared, you can't move them self.pin1(0) self.pin2(0) self.pin3(0) self.pin4(0) - -def create(pin1, pin2, pin3, pin4, delay=2, mode='HALF_STEP'): - return Stepper(mode, pin1, pin2, pin3, pin4, delay)