clement_2006
im using a urm37 for controlling a servomotor but the measure drop every time to 0 and activate the motor then come back to right measure and all time like that
code
#include <Servo.h>
Servo myservo; // Créer un objet servo
int URECHO = 5; // Broche ECHO
int URTRIG = 4; // Broche TRIG
int servoPin = 9; // Broche du servomoteur
unsigned int DistanceMeasured = 0;
void setup() {
Serial.begin(9600); // Initialisation de la communication série
pinMode(URTRIG, OUTPUT); // Définir TRIG comme sortie
digitalWrite(URTRIG, HIGH); // Mettre TRIG à HIGH
pinMode(URECHO, INPUT); // Définir ECHO comme entrée
myservo.attach(servoPin); // Attacher le servomoteur à la broche PWM
delay(500);
Serial.println("Init the sensor");
}
void loop() {
Serial.print("Distance=");
digitalWrite(URTRIG, LOW);
digitalWrite(URTRIG, HIGH);
unsigned long LowLevelTime = pulseIn(URECHO, LOW); // Mesurer le temps bas
if (LowLevelTime >= 50000) { // La lecture est invalide
Serial.println("Invalid");
} else {
DistanceMeasured = LowLevelTime / 50; // Chaque 50us représente 1cm
Serial.print(DistanceMeasured);
Serial.println("cm");
// Contrôler le servomoteur en fonction de la distance
if (DistanceMeasured < 20) {
myservo.write(45); // Tourner le servomoteur à 45 degrés
delay(100);
} else {
myservo.write(0); // Tourner le servomoteur à 0 degré
delay(100);
}
}