Nema 17 et driver A4988

Bonjour lefourbi

Voilà qui est plus clair :wink:

Ca ne fonctionnait pas du fait d'un mauvais choix quand à la fonction AccelStepper choisie;

		stepperMotor.setSpeed(motorPas); //vitesse en fonction de motor speed
		stepperMotor.runSpeed(); // Fait tourner le moteur à la vitesse définie "200 pas" et intensité du potar

je les ai changées par:

		stepperMotor.move(motorPas);
		stepperMotor.runToPosition();

Je te laisses regarder la doc.

J'ai changé la variable:
int motorSpeed
en
int motorPas
Ainsi le potentiomètre règle le déplacement du moteur, en pas.

La vitesse du moteur ainsi que son accélération se règlent dans setup():

	stepperMotor.setMaxSpeed(200);     // Vitesse maximum du moteur
	stepperMotor.setAcceleration(200);     // Accélération du moteur

Le programme:

// 1 Bibliotheque de controle utilisé (ultra son et driver A4988)

#include <NewPing.h>
#include <AccelStepper.h>

// 2 Déclaration des broches conecter a l'arduino

#define POTENTIOMETER_PIN A0  // Broche du potentiomètre
#define DIR_PIN 8             // Broche direction du moteur pas à pas
#define STEP_PIN 9            // Broche du nombres de pas du moteur pas à pas
#define TRIGGER_PIN 10        // Broche qui envoie l'onde capteur ultrasonique
#define ECHO_PIN 11           // Broche de réception de l'onde du capteur ultrasonique
#define ENABLE_PIN 6          // Broche d'activation/désactivation de la carte driver 4988

// 3 Initialisation du capteur et actioneur (moteur et capteur ultrason)

AccelStepper stepperMotor(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); // Initialise le moteur

NewPing sonar(TRIGGER_PIN, ECHO_PIN);  // Initialise le capteur ultrason

// 4 Déclaration des variables (integration vitesse et distance minimale)

int motorPas = 0;  // Variable pour la vitesse du moteur
int minDistance = 10;  // Distance minimale pour déclencher le moteur (en cm)

// 5 Fonction de contrôle du moteur :

void controlMotor() {
	int distance = sonar.ping_cm(); // analyse de la longueur de l'onde

	int potValue = analogRead(POTENTIOMETER_PIN);// Lecture de la valeur du potentiomètre pour ajuster manuellement la vitesse
	motorPas = map(potValue, 0, 1023, 0, 200); // remplacer (2OO) pour augmenter les nompre de pas (200 = tour complet)

	//distance = 7;     // Pour les essais jpbbricole
	//motorPas = 100;

	// Activation/Désactivation du moteur en fonction de la distance
	// si la distance est inf a distance mini=10 et vitesse moteur sup a zero
	if (distance < minDistance && motorPas > 0) {
		stepperMotor.enableOutputs(); //activation cable enable
		stepperMotor.move(motorPas);
		stepperMotor.runToPosition();
		//stepperMotor.setSpeed(motorPas); //vitesse en fonction de motor speed
		//stepperMotor.runSpeed(); // Fait tourner le moteur à la vitesse définie "200 pas" et intensité du potar
		Serial.println(distance); // ecrit la distance en cm du ultrason sur l'ecran de controle ide
		} else {  // sinon
		stepperMotor.disableOutputs();// pas du moteur eteint en sortie
	}
}


// 6 le setup le code qui ce lit qu'une fois

void setup() {
	Serial.begin(9600); // il escrit des choses dans l'ecran de controle ide(je c'est pas trop ce quil ecrit pour le moment)

	stepperMotor.disableOutputs(); // Désactive le moteur au demarrage
		stepperMotor.setMaxSpeed(200);     // Vitesse maximum du moteur
		stepperMotor.setAcceleration(200);     // Accélération du moteur
}

// 7 loop le programme qui tourne en rond (comme le chat)

void loop() {
	controlMotor(); // Appelle la fonction de contrôle du moteur
	/*
	void controlMotor() {
	int distance = sonar.ping_cm(); // analyse de la longueur de l'onde

	int potValue = analogRead(POTENTIOMETER_PIN);// Lecture de la valeur du potentiomètre pour ajuster manuellement la vitesse
	motorSpeed = map(potValue, 0, 1023, 0, 200); // remplacer (2OO) pour augmenter les nompre de pas (200 = tour complet)

	// Activation/Désactivation du moteur en fonction de la distance
	// si la distance est inf a distance mini=10 et vitesse moteur sup a zero
	if (distance < minDistance && motorSpeed > 0) {
	stepperMotor.enableOutputs(); //activation cable enable
	stepperMotor.setSpeed(motorSpeed); //vitesse en fonction de motor speed
	stepperMotor.runSpeed(); // Fait tourner le moteur à la vitesse définie "200 pas" et intensité du potar
	Serial.println(distance); // ecrit la distance en cm du ultrason sur l'ecran de controle ide
	} else {  // sinon
	stepperMotor.disableOutputs();  pas du moteur eteint en sortie
	}
	}*/

	delay(50); // delais entre chaque loop
}

J'ai laissé les lignes obsolètes en remarque.
C'est essayé "en vrai" mais sans le RADAR,

A+
Cordialement
jpbbricole