Bonjour, aujourd'hui je vais encore vous demander un coup de main, j'ai un moteur et un capteur a ultra son pour le moment et je souhaite faire fonctionner mon programme. Dans mon programme j'aimerais que dès que le capteur capte une action a moins de 100mm elle lance le programme lié a mon moteur.
Mais je n'y arrive pas
#include "Ultrasonic.h"
Ultrasonic ultrasonic(13, 12); // Trig et Echo
#include <Stepper.h>
int seuil = 1;
int i=0;
const int stepsPerRevolution = 750; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
void setup() {
Serial.begin(9600);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
// set the speed at 50 rpm:
myStepper.setSpeed(45);
// initialize the serial port:
Serial.begin(9600);
}
void loop () {
int dist = ultrasonic.read(CM);
Serial.print(dist);
Serial.println(" cm");
if (dist < 100) {;}
if (dist > 100) {;}
delay(100);
}
void fonction () {
if (i< seuil) {
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
}
Serial.println (i) ; {
++i;
if (i>seuil) i=seuil;}
}
quand je lance le programme la fonction void loop ne fait rien pour le moment, mais ce que je souhaite faire ce que quand je passe devant mon capteur a moins de 100mm alors le moteur s'active et bouge
Si vous ouvrez le moniteur série à 9600 bauds (virez un des begin() d’ailleurs du setup()) - voyez vous les distances défiler au rythme de 10 par secondes environ ?
(Je ne connais pas la bibliothèque Ultrasonic.h - on utilise plutôt newPing généralement)
Bon ça veut dire que la mesure fonction et que le circuit est sans doute correct
Dans la loop vous faites
if (dist < 100) {;}
if (dist > 100) {;}
C’est à dire vous testez la distance obtenue par rapport à 100 (centimètres) et vous ne faites rien. Puisqu’il n’y a rien dans les accolades
Un else serait plus approprié que deux tests d’ailleurs si vous voulez faire quelque chose si la distance est pile 100
if (dist < 100) {
// ici ce qu’il faut faire si la distance est strictement inférieure à 100
…
} else {
// ici ce qu’il faut faire si la distance est supérieure ou égale à 100
…
}