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
Partager