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
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:
Il faut installer la bibliothèque:
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
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
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 , 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
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 ?
Merci
Florian
Bonjour fleow
Il est dit "en cours de livraison", encore 2 ou 3 jours de patience
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:
Il faut la bibliothèque AccelStepper.h :
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 :
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
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
Super
Montres moi encore d'autres de tes oeuvres sera suffisant
Bonne journée
jpbbricole