#made by DIEGO ;-)
#----Import de Bibliothèques----------------------------------------------
from machine import Pin
from time import sleep_ms
#----Ressources----------------------------------------------
#pour choisir comment régler ms1, ms2 et ms3
#https://tasmota.github.io/docs/A4988-Stepper-Motor-Controller/#tasmota-settings
#----Sorties LED----------------------------------------------
led_rouge = Pin(19, Pin.OUT)
led_vert = Pin(20, Pin.OUT)
led_jaune = Pin(18, Pin.OUT)
#----Sorties A4988----------------------------------------------
direction = Pin(0, Pin.OUT)
step = Pin(1, Pin.OUT)
ms1 = Pin(4, Pin.OUT)
ms2 = Pin(3, Pin.OUT)
ms3 = Pin(2, Pin.OUT)
enable = Pin(5, Pin.OUT) #pour allumer ou éteindre le driver A4988
#----Entrées Boutons----------------------------------------------
button_rouge = Pin(13, Pin.IN, Pin.PULL_UP)
button_vert = Pin(12, Pin.IN, Pin.PULL_UP)
button_jaune = Pin(11, Pin.IN, Pin.PULL_UP)
#----CREATION de fonctions----------------------------------------------
def tourner_sens_horaire():
direction.value(1)
step.value(1)
led_vert.value(1)
sleep_ms(delay)
step.value(0)
sleep_ms(delay)
def tourner_sens_trigonometrique():
direction.value(0)
step.value(1)
led_rouge.value(1)
sleep_ms(delay)
step.value(0)
sleep_ms(delay)
def LED_eteintes():
led_rouge.value(0)
led_vert.value(0)
#-----Conditions initiales---------------------------------------------
#-#----Compteur pour le Bouton-------------------------
comptBout = 0
etatLed = 0
#-#----LED éteintes---------------------------------------------
led_rouge.value(0)
led_vert.value(0)
led_jaune.value(0)
#-#----Moteur pas-à-pas---------------------------------------------
direction.value(0)
step.value(0)
ms1.value(0)
ms2.value(0)
ms3.value(0)
enable.value(0) #driver A4988 allumé à 0
#-#----temps entre 2 pas---------------------------------------------
delay = 1 #vitesse (plus le chiffre est grand, plus il y a de temps entre 2 pas)
pas = 0
#----Début du programme----------------------------------------------
while True:
if button_rouge.value() == 0 and button_vert.value() == 1 and etatLed == 1 :
tourner_sens_trigonometrique()
pas -= 1
degre = pas * 360/200
print("tourner_sens_trigonométrique():", pas, "pas, ce qui correspond à", degre, "°" )
if button_rouge.value() == 1 and button_vert.value() == 0 and etatLed == 1 :
tourner_sens_horaire()
pas += 1
degre = pas * 360/200
print("tourner_sens_horaire():", pas, "pas, ce qui correspond à", degre, "°" )
else:
LED_eteintes()
if button_jaune.value() == 0 and comptBout == 0 : #si bouton appuyé
comptBout = 1 #alors compteur bouton = 1
if etatLed == 0: #et si compteur led est à 0
etatLed = 1 #alors compteur led = 1
led_jaune.value(1) #allumer qqchose
enable.value(0) #allumer le driver A4988
print("allumé") #donner une information via l'ordinateur
else: #sinon
etatLed = 0 #alors compteur led = 0
led_jaune.value(0) #éteindre qqchose
enable.value(1) #éteindre le driver A4988
print("éteint") #donner une information via l'ordinateur
sleep_ms(100) #pause nécessaire pour éviter les rebonds
elif button_jaune.value() == 1 and comptBout == 1 : #si bouton appuyé et compteur bouton = 1
comptBout = 0 #alors compteur bouton = 0
sleep_ms(100) #pause nécessaire pour éviter les rebonds