# https://dev.to/blues/a-practical-look-at-pio-on-the-raspberry-pi-pico-50j8 import time import rp2 from machine import Pin #@rp2.asm_pio(set_init=rp2.PIO.OUT_LOW, out_shiftdir=rp2.PIO.SHIFT_LEFT) @rp2.asm_pio(set_init=rp2.PIO.OUT_LOW) def set_pin(): pull() mov(x, osr) label("loop_2") set(pins, 1).delay(1) set(pins, 0) jmp(x_dec, "loop_2") set(pins, 1) @rp2.asm_pio(set_init=rp2.PIO.OUT_LOW) def clear_pin(): pull() set(pins, 0) sm0 = rp2.StateMachine(0, set_pin, freq=10_000, set_base=Pin(16)) sm1 = rp2.StateMachine(1, clear_pin, freq=10_000, set_base=Pin(16)) sm0.active(1) sm1.active(1) while(1): sm0.put(30) time.sleep(0.1) sm1.put(1) time.sleep(1)