Bonjour lefourbi
Voilà qui est plus clair
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