from machine import Pin, PWM
import time
from time import sleep
from pico_i2c_lcd import I2cLcd
from machine import I2C
SW=Pin(15, Pin.IN, Pin.PULL_UP)
DT=Pin(14,Pin.IN)#, Pin.PULL_UP)
CLK=Pin(13,Pin.IN)#, Pin.PULL_UP)
pinEnabled = Pin(5, Pin.OUT,value=0)
pinStep = Pin(4, Pin.OUT)
pinDirection = Pin(0, Pin.OUT)
i2c = I2C(id=1,scl=Pin(27),sda=Pin(26),freq=100000)
lcd = I2cLcd(i2c, 0x27, 2, 16)
valor_anterior=True
SW_presionado=False
stepsPerRevolution = 200 #1.8 grados / paso
while 1:
if valor_anterior != CLK.value():
if CLK.value()==False:
if DT.value()==False:
pinDirection.off()
lcd.clear()
lcd.move_to(0,0)
lcd.putstr('Contra Reloj')
for i in range(0,stepsPerRevolution):
pinStep.on()
time.sleep_ms(10)
pinStep.off()
time.sleep_ms(10)
if SW.value()==False and not SW_presionado:
SW_presionado=True
lcd.clear()
lcd.move_to(0,0)
lcd.putstr('Stop')
break
else:
pinDirection.on()
lcd.move_to(0,0)
lcd.putstr('Reloj')
for i in range(0,stepsPerRevolution):
pinStep.on()
time.sleep_ms(10)
pinStep.off()
time.sleep_ms(10)
if SW.value()==False and not SW_presionado:
SW_presionado=True
lcd.clear()
lcd.move_to(0,0)
lcd.putstr('Stop')
break
valor_anterior = CLK.value()
if SW.value()==True and SW_presionado:
SW_presionado=False