Bonjour les amis,
je viens vous faire-part d’un problème constaté avec l’utilisation de PulseIn()
j’ai essayé ce sketch sur deux Uno différents et aussi avec deux microservos 9g différents ,à chaque fois il y a la même anomalie :
le servo avance par à-coups , par contre si je mets le doigt sur la broche 11 ou même d’autres broches non loin , tout rentre dans l’ordre ! Il suffit même d’approcher le doigt.
Si on met duration =0 ; aux ligne 30 et 48 çà va bien aussi.
Je précise que pour l’instant je n’ai rien installé d’autre que le Uno et le servo, pas de HC-SR04.
Je suis sûr que ce n’est pas un mauvais contact , j’ai aussi essayé de mettre un petit condensateur entre le Pin 11 et la masse( ou le 5v) .
merci d’avance de votre aide.
Preformatted text
#include <Servo.h>
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distinCM;
Servo radarServo;
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
radarServo.attach(11);
}
void loop()
{
for (int i = 0; i <= 180; i++)
{
radarServo.write(i);
delay(50);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distinCM = duration * 0.034 / 2;
Serial.print(i);
Serial.print("*");
Serial.print(distinCM);
Serial.print("#");
}
for (int i = 180; i >= 0; i--)
{
radarServo.write(i);
delay(50);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration =pulseIn(echoPin, HIGH);
distinCM = duration * 0.034 / 2;
Serial.print(i);
Serial.print("*");
Serial.print(distinCM);
Serial.print("#");
}
}Preformatted text
Je viens de remarquer que la led RX clignote plus ou moins selon que le servo tourne ou s'arrête .