Joystick / arduino / step moteur . Aide pour le programme a integrer dans l arduino

et du coup ton choix de pin devrait marcher.

Bonjour fleow

Non, pas tout à fait, il y a de l'électronique entre l'Arduino et le moteur, c'est le driver L293, il faut que je trouve quelles sont les pin qui commandent ce driver, c'est pour demain :wink:

Bonne journée.
Cordialement
jpbbricole

sa marche,
moi je vais me diriger vers mon atelier,
j ai toujours etais meilleur pour regler les problemes a grand coup de marteau ;D
merci encore
Flo

Bonjour fleow
Si tu câbles ton moteur comme indiqué ici:
image

Il faut installer la bibliothèque:
image

et que tu charges ce programme:

// https://learn.adafruit.com/adafruit-motor-shield/using-stepper-motors
#include <AFMotor.h>

// Number of steps per output rotation
// Change this as per your motor's specification
const int stepsPerRevolution = 200;

// connect motor to port #2 (M3 and M4)
AF_Stepper motor(stepsPerRevolution, 2);

void setup() 
{
	Serial.begin(115200);
	Serial.println("Stepper test!");

	motor.setSpeed(20);  // 20 rpm
}

void loop() 
{
	motor.step(200, FORWARD, DOUBLE);
	motor.step(200, BACKWARD, DOUBLE);
}

Ton moteur doit tourner d'un tour, dans un sens et dans l'autre, alternativement.
Je n'ai pas ce shield pour t'aider plus efficacement :woozy_face:

Cordialement
jpbbricole

Bonsoir / bonjour .

Je suppose que c est une maniere de verifier mon cablage ;D
et oui cela marche parfaitement

Merci
FLo

Bonsoir fleow

Pas faux :wink:
Le problème est que je n'ai pas cette carte donc je peux essayer de bricoler ce programme ou tu patientes une dizaine de jours que je reçoive cette carte pour faire du bon boulot.

A+
Cordialement
jpbbricole

non non,
soit j achete une carte qui pourrait faire le travail,
soit je vous paye le shield en question .

Vous n allez pas payer pour me rendre service .
Cordialement
Flo

si on fait un nouveau montage avec une nouvelle carte que vous connaissez ,
Je vous envoi la XC4472 que j ai la,
soyons clair, je suis chaudronnier . si je ne m en sert pas, cela va prendre la poussiere indefiniment .
Merci

Florian

Bonjour fleow

Pourquoi pas, moins de 3€ c'est pas la ruine :wink:, tu n'est pas le premier a qui je fais ça, ne te fais aucun soucis.

Cordialement
jpbbricole

Bon soit,
tenez moi au courrant . je vais mettre mon materiel de cotes .

Voila une photo de mon montage. je pense que cela peut etre utile pour le code ( identifier le bon borgner pour le moteur )

Merci
Bonne soiree

Flo

Bonjour fleow

Dernière question, as-tu déjà le joystick?

A+
Cordialement
jpbbricole

Apres, je me repete surement, mais j ai besoin que d un axe, pas besoin d acceleration ( l avoir pourrait meme etre source de probleme ) vitesse lente ( je pense pouvoir gerer cela une fois le code fait ) et les moteurs bloquers, garder les moteurs en prise ) je serai en GRBL, ce serait $1 = 255. si c est plus claire :stuck_out_tongue_winking_eye:

Merci encore
Flo

je ferai surement une boite avec l imprimante 3d une fois le tout fonctionnel

Bonjour,

Victime de la penenurie des semi conducteurs ou vous avez eut l occasion d obtenir ce shield exotique ? :stuck_out_tongue_winking_eye:

Merci
Florian

Bonjour fleow

Il est dit "en cours de livraison", encore 2 ou 3 jours de patience :wink:

Une toute belle journée à toi!
jpbbricole

Bonjour fleow

J’ai enfin reçu le shield, et ai fait le programme, le moteur pas à pas (MPAP) utilisé est le 2 et le joystick est connecté sur A0:

image
Il faut la bibliothèque AccelStepper.h :
image

La vitesse minimum et maximum du MPAP se règlent par ces 2 variables :

float const mpap2MinSpeed = 20;     // Vitesse maximum du moteur
float const mpap2MaxSpeed = 650;     // Vitesse maximum du moteur

Le nombre de « crans » du joystick se règle par cette variable :
const int joySubdivisions = 10; // Nombre de subdivisions (crans) de -sub. 0, +sub

Le « cran » minimum de déclenchement de la rotation du MPAP est défini par :
const int joySubMoveLimite = 2; // Subdivision (cran) de début du mouvement

La vitesse du MPAP est en rapport avec la position du joystick.

N’hésites pas à poser des questions, j’ai mis un maximum de remarques et les variables « parlent » également.

Si tu mets la console de l’IDE Arduino à 115200 :
image
Tu as des indications sur le fonctionnement du MPAP :

CW > 2 20.00
CW > 2 20.00
CW > 2 20.00
CW > 2 20.00
CW > 2 20.00
CW > 2 20.00
CCW < -2 20.00
CCW < -2 20.00
CCW < -2 20.00
CCW < -2 20.00
CCW < -2 20.00

Qui indiquent le sens de rotation, le "cran" do joystick et la vitesse du MPAP.

Le programme:


/*
Name:       ARDFR_fleow_AxeZetJoystick.ino
Created:	08.10.2023
Author:     jpbbricoler/fleow
https://forum.arduino.cc/t/joystick-arduino-step-moteur-aide-pour-le-programme-a-integrer-dans-l-arduino/1168268

Commander l'axe Z d'une CNC avec un joystick
*/

#include <AccelStepper.h>     // https://www.airspayce.com/mikem/arduino/AccelStepper/classAccelStepper.html
							  // https://github.com/adafruit/AccelStepper
							  // https://www.pjrc.com/teensy/td_libs_AccelStepper.html
#include <AFMotor.h>

//--------------------------------------- Moteur pas à pas (mpap)
AF_Stepper mpap2(200, 2);

void mpap2forwardStep() { mpap2.onestep(FORWARD, SINGLE); }
void mpap2backwardStep() { mpap2.onestep(BACKWARD, SINGLE); }
AccelStepper mpap2As(mpap2forwardStep, mpap2backwardStep);
boolean mpapRunning = false;     // Si le moteur doit tourner

float const mpap2MinSpeed = 20;     // Vitesse maximum du moteur
float const mpap2MaxSpeed = 650;     // Vitesse maximum du moteur
float const mpap2Acceleration = 8000.0;     // Accélération du moteur

String mpapMode = "";     // Mode de fonctionnement du moteur

//------------------------------------- Joystick (joy)
const int joyPin = A0;     // Pin du joystick
const int joySubdivisions = 10;     // Nombre de subdivisions (crans) de -sub. 0, +sub
const int joySubMoveLimite = 2;     // Subdivision (cran) de début du mouvement
int joyPosition = 0;     // Position du joystick

void setup()
{
	Serial.begin(115200);

	mpap2As.setMaxSpeed(mpap2MaxSpeed);
	mpap2As.setAcceleration(mpap2Acceleration);
}

void loop()
{
	// Calcul de la position du joystick https://www.arduino.cc/reference/en/language/functions/math/map/
	joyPosition = map(analogRead(joyPin), 0, 1024, -joySubdivisions, joySubdivisions);

	// https://www.arduino.cc/reference/en/language/functions/math/abs/
	if (abs(joyPosition) >= joySubMoveLimite)     // Si l'on est au seuil de mouvement
	{
		mpapRunning = true;     // Moteur en marche
		float mpapSpeed = map(abs(joyPosition), joySubMoveLimite, joySubdivisions, mpap2MinSpeed, mpap2MaxSpeed);

		if (joyPosition > 0)
		{
			mpapMode = "CW > " + String(joyPosition) + " " + String(mpapSpeed);     // Mpap sens des aiguilles d'une montre (CW)
			mpap2As.move(10000);
		}
		else
		{
			mpapMode = "CCW < " + String(joyPosition) + " " + String(mpapSpeed);     // Mpap sens des aiguilles d'une montre (CW)
			mpap2As.move(-10000);
		}
		mpap2As.setMaxSpeed(mpapSpeed);
	}
	else
	{
		mpapRunning = false;     // Arrêt du moteur
		mpap2As.setCurrentPosition(0);
	}
	
	if (mpapRunning)
	{
		Serial.println(mpapMode);
		mpap2As.run();
	}
}

Le montage de développement du programme:

Amuses toi bien

Cordialement
jpbbricole

Salut Jp,

Merci encore,
J ai eu de grosses journee au travail la je regarderai cela a tete reposer demain .
je te tiens au courant

Flo

Putain JP PRESIDENT !
sa marche impeccable .
tu viens de diviser le risque de ma machine par 3 ou 4 .
Jusqu a present, je devais appuyer sur la tole ou faire levier pour etre sur que le contact avec le plasma se fasse .
Je vais pouvoir faires mes sculptures low polygone sans risquer de perdre un doigt :stuck_out_tongue_winking_eye:

Je peux pas aider a grand chose en matiere d electronique, si il y a autres chose que je peux faire tiens moi au jus,

Merci encore

Flo

Bonjour fleow

Ma modestie va en souffrir :blush:

Super :+1:

Montres moi encore d'autres de tes oeuvres sera suffisant :wink:

Bonne journée
jpbbricole

https://www.youtube.com/watch?v=3lHyvkOZrhY...

:stuck_out_tongue_winking_eye:

1 Like