import time
time.sleep(0.1) # Wait for USB to become ready
print("Hello, Pi Pico W!")
from machine import Pin, Timer
import utime
dir_pin = Pin(16, Pin.OUT)
step_pin = Pin(17, Pin.OUT)
steps_per_revolution = 200
# Initialize timer
tim = Timer()
def step(t):
global step_pin
step_pin.value(not step_pin.value())
def rotate_motor(delay):
# Set up timer for stepping
tim.init(freq=1000000//delay, mode=Timer.PERIODIC, callback=step)
def loop():
while True:
# Set motor direction clockwise
dir_pin.value(1)
# Spin motor slowly
rotate_motor(2000)
utime.sleep_ms(steps_per_revolution)
tim.deinit() # stop the timer
utime.sleep(1)
# Set motor direction counterclockwise
dir_pin.value(0)
# Spin motor quickly
rotate_motor(1000)
utime.sleep_ms(steps_per_revolution)
tim.deinit() # stop the timer
utime.sleep(1)
if __name__ == '__main__':
loop()
from machine import Pin, Timer
import utime
dir_pin = Pin(16, Pin.OUT)
step_pin = Pin(17, Pin.OUT)
steps_per_revolution = 200
tim = Timer()
def step(t):
global step_pin
step_pin.value(not step_pin.value())
def rotate_motor(delay):
tim.init(freq=1000000//delay, mode=Timer.PERIODIC, callback=step)
def loop():
while True:
dir_pin.value(1)
rotate_motor(2000)
utime.sleep_ms(steps_per_revolution)
tim.deinit()
utime.sleep(1)
dir_pin.value(0)
rotate_motor(1000)
utime.sleep_ms(steps_per_revolution)
tim.deinit()
utime.sleep(1)
if __name__ == '__main__':
loop()
from machine import Pin
import utime
class Stepper:
def __init__(self, step_pin, dir_pin):
self.step_pin = Pin(step_pin, Pin.OUT)
self.dir_pin = Pin(dir_pin, Pin.OUT)
self.position = 0
def set_speed(self, speed):
self.delay = 1 / abs(speed) # delay in seconds
def set_direction(self, direction):
self.dir_pin.value(direction)
def move_to(self, position):
self.set_direction(1 if position > self.position else 0)
while self.position != position:
self.step_pin.value(1)
utime.sleep(self.delay)
self.step_pin.value(0)
self.position += 1 if position > self.position else -1
# Define the pins
step_pin = 17 # GPIO number where step pin is connected
dir_pin = 16 # GPIO number where dir pin is connected
# Initialize stepper
stepper = Stepper(step_pin, dir_pin)
def loop():
while True:
# Move forward 2 revolutions (400 steps) at 200 steps/sec
stepper.set_speed(200)
stepper.move_to(400)
utime.sleep(1)
# Move backward 1 revolution (200 steps) at 600 steps/sec
stepper.set_speed(600)
stepper.move_to(200)
utime.sleep(1)
# Move forward 3 revolutions (600 steps) at 400 steps/sec
stepper.set_speed(400)
stepper.move_to(600)
utime.sleep(3)
if __name__ == '__main__':
loop()
from machine import Pin, Timer
import utime
class Stepper:
def __init__(self, dir_pin, step_pin):
self.dir_pin = Pin(dir_pin, Pin.OUT)
self.step_pin = Pin(step_pin, Pin.OUT)
self.position = 0
def move(self, steps, delay, accel):
self.dir_pin.value(0 if steps > 0 else 1)
steps = abs(steps)
for i in range(steps):
self.step_pin.value(1)
utime.sleep_us(delay)
self.step_pin.value(0)
utime.sleep_us(delay)
if i < steps // 2 and delay > 100:
delay -= accel
elif i >= steps // 2 and delay < 2000:
delay += accel
self.position += steps if steps > 0 else -steps
step_pin = 17
dir_pin = 16
stepper = Stepper(dir_pin, step_pin)
def loop():
while True:
stepper.move(600, 2000, 5) # 2 revolutions forward
utime.sleep(1)
stepper.move(-600, 2000, 5) # 2 revolutions backward
utime.sleep(1)
if __name__ == '__main__':
loop()
from machine import Pin, ADC
import utime
# Define pin numbers
step_pin = Pin(17, Pin.OUT)
dir_pin = Pin(16, Pin.OUT)
pot = ADC(26) # A0 is on GP26 on Pico
# Set motor direction
dir_pin.high()
def map_val(value, in_min, in_max, out_min, out_max):
return (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
def loop():
while True:
# Read potentiometer value and map it to desired range
custom_delay = pot.read_u16() # read 16 bit value
custom_delay_mapped = map_val(custom_delay, 0, 65535, 300, 4000) # map 16 bit value to desired range
# Pulse the stepper motor
step_pin.high()
utime.sleep_us(int(custom_delay_mapped))
step_pin.low()
utime.sleep_us(int(custom_delay_mapped))
# Start the loop
loop()