#made by DIEGO ;-)
#Si le JOYSTICK est déplacé vers le haut :
#Varier l'intensité de 1 LED verte et du moteur pas-à-pas 2 et le faire pivoter dans le sens horaire en continu
#Si le JOYSTICK est déplacé vers le bas :
#Varier l'intensité de 1 LED verte et du moteur pas-à-pas 2 et le faire pivoter dans le sens trigonométrique en continu
#Si le JOYSTICK est déplacé vers la gauche :
#Varier l'intensité de 1 LED rouge et du moteur pas-à-pas 1 et le faire pivoter dans le sens trigonométrique en continu
#Si le JOYSTICK est déplacé vers la droite :
#Varier l'intensité de 1 LED rouge et du moteur pas-à-pas 1 et le faire pivoter dans le sens horaire en continu
#----Import de Bibliothèques----------------------------------------------
from machine import Pin, ADC
from time import sleep_ms, sleep_us
#----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(18, Pin.OUT)
led_vert = Pin(19, Pin.OUT)
#----Sorties A4988 M1----------------------------------------------
m1_direction = Pin(11, Pin.OUT)
m1_step = Pin(12, Pin.OUT)
m1_ms1 = Pin(15, Pin.OUT)
m1_ms2 = Pin(14, Pin.OUT)
m1_ms3 = Pin(13, Pin.OUT)
#----Sorties A4988 M2----------------------------------------------
m2_direction = Pin(6, Pin.OUT)
m2_step = Pin(7, Pin.OUT)
m2_ms1 = Pin(10, Pin.OUT)
m2_ms2 = Pin(9, Pin.OUT)
m2_ms3 = Pin(8, Pin.OUT)
#----Entrées JOYSTICK----------------------------------------------
xAxis = ADC(Pin(26))
yAxis = ADC(Pin(27))
#----CREATION de fonctions----------------------------------------------
def m1_tourner_sens_horaire():
m1_direction.value(1)
m1_step.value(1)
led_rouge.value(1)
sleep_us(delay)
m1_step.value(0)
sleep_us(delay)
def m1_tourner_sens_trigonometrique():
m1_direction.value(0)
m1_step.value(1)
led_rouge.value(1)
sleep_us(delay)
m1_step.value(0)
sleep_us(delay)
def m2_tourner_sens_horaire():
m2_direction.value(1)
m2_step.value(1)
led_vert.value(1)
sleep_us(delay)
m2_step.value(0)
sleep_us(delay)
def m2_tourner_sens_trigonometrique():
m2_direction.value(0)
m2_step.value(1)
led_vert.value(1)
sleep_us(delay)
m2_step.value(0)
sleep_us(delay)
def LED_eteintes():
led_rouge.value(0)
led_vert.value(0)
#-----Conditions initiales---------------------------------------------
#-#----LED éteintes---------------------------------------------
led_rouge.value(0)
led_vert.value(0)
#-#----Moteur pas-à-pas---------------------------------------------
m1_direction.value(0)
m1_step.value(0)
m1_ms1.value(0)
m1_ms2.value(0)
m1_ms3.value(0)
m2_direction.value(0)
m2_step.value(0)
m2_ms1.value(0)
m2_ms2.value(0)
m2_ms3.value(0)
#-#----temps entre 2 pas---------------------------------------------
delay = 400 ##en us vitesse (plus le chiffre est grand, plus il y a de temps entre 2 pas)
pas = 0
vitesse_max = 50 #en us
#----Début du programme----------------------------------------------
while True:
xValue = xAxis.read_u16() #lecture de la valeur sur X du joystick
yValue = yAxis.read_u16() #lecture de la valeur sur Y du joystick
print(xValue, yValue)
if yValue < 32000 : #si bouton appuyé
m2_tourner_sens_trigonometrique()
pas -= 1
degre = pas * 360/200
#print("M2 : tourner_sens_trigonométrique():", pas, "pas, ce qui correspond à", degre, "°" )
temps_de_pause = int((abs(yValue-32759)/32759)*vitesse_max)
#print(temps_de_pause)
sleep_us(temps_de_pause)
if yValue > 33000 : #si bouton appuyé
m2_tourner_sens_horaire()
pas += 1
degre = pas * 360/200
#print("M2 : tourner_sens_horaire():", pas, "pas, ce qui correspond à", degre, "°" )
temps_de_pause = int(((yValue-32759)/32759)*vitesse_max)
#print(temps_de_pause)
sleep_us(temps_de_pause)
if yValue <= 33000 and yValue >= 32000 :
LED_eteintes()
if xValue < 32000 : #si bouton appuyé
m1_tourner_sens_horaire()
pas += 1
degre = pas * 360/200
#print("M1 : tourner_sens_horaire():", pas, "pas, ce qui correspond à", degre, "°" )
temps_de_pause = int(((yValue-32759)/32759)*vitesse_max)
#print(temps_de_pause)
sleep_us(temps_de_pause)
if xValue > 33000 : #si bouton appuyé
m1_tourner_sens_trigonometrique()
pas -= 1
degre = pas * 360/200
#print("M1 : tourner_sens_trigonométrique():", pas, "pas, ce qui correspond à", degre, "°" )
temps_de_pause = int((abs(yValue-32759)/32759)*vitesse_max)
#print(temps_de_pause)
sleep_us(temps_de_pause)
if xValue <= 33000 and xValue >= 32000 :
LED_eteintes()