Besoin d'aide ou de conseils

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 :frowning:

#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;}
}

Bonjour,
Les copies d'écran ne servent à rien, il faut mettre le code.
Consulte le message épinglé pour que l'on puisse répondre à ton problème.

d'accord merci je fait ça de suite

c'est bon comme ceci

Est-ce que la loop affiche quelque chose ?

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)

oui environ 10 par secondes

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
  …
}
1 Like

si je veux qu'il ne se passe rien que dois-je mettre dans la catégorie else ?

Vous ne mettez pas de else dans ce cas

if (dist < 100) {
  // ici ce qu’il faut faire si la distance est strictement inférieure à 100
  …
}
1 Like

d'accord merci

par contre je ne comprend toujours pas pourquoi, que je passe ma main ou pas devant le capteur, le code s'effectue une seule fois :frowning:

Ça veut dire quoi une seule fois ?

Postez votre code pour qu’on comprenne de quoi vous parlez

dans le haut de mon code j'ai créer un compteur pour que le code s'effectue qu'un certain nombre de fois (je veux dire tourner le moteur)

Ma boule de cristal est au lave vaisselle, de là où je suis je ne vois pas bien votre écran ni le haut de votre code …

ci-dessus c'est ce qui permet dechoisir le nombre de fois que le programme du moteur va s'effectuer

et le code juste en dessous

la loop ne fait toujours rien à part afficher la distance.. et le code est incomplet...

ok tu saurais ce que je dois faire pour changer ça ?

ah att je te remet le code x) j'ai oublier