Bonjour,

Je viens de faire un montage avec une carte uno et un moteur sg90 commandé par un module ultra sons hc sr04, une idée de passage à niveau, la barrière se baisse reste 5 secondes en bas puis se reléve s'il n'y a pas de détection ( train )

Mon code est bien compilé mais voila que la barriére se baisse bien mais reste en bas

Si vous avez une idée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <Servo.h>
#include <Ultrasonic.h>
 
const int Trig = 5; // pin trigger HC-SR04
const int Echo = 6; // pin echo HC-SR04
Servo servoBarriere;
 
long cm; // variable de stockage de distance de l'objet en cm
 
Ultrasonic HCSR04 (Trig, Echo);
 
 
void setup() 
{ 
  servoBarriere.attach(3); // servo leve barriere
 
} 
 
void loop() 
{ 
 
 
 
   if(cm >0 && cm < 20) // un train passe
   {
     servoBarriere.write (0); // La barrière est baissée (ajustez la valeur en fonction de la calibration de votre servo pour avoir la barrière à l'horizontale)
      delay(5000); // Temps de traitement du baisser de barrière en millisecondes (15000 millisecondes = 15 secondes). Changez cette valeur si vous voulez rallonger ou raccourcir la durée.
   }
   else if(cm >= 20)  // Il n'y a pas de présence du train. Ici la valeur du rayonnement des ultrasons est d'environ 20 cms.
   {
     servoBarriere.write(90); // Lève la barrière à 90² (ajustez la valeur en fonction de la calibration de votre servo pour avoir la barrière à la verticale)
   }  
}

Cordialement

Stéphanie