Bonjour,
Je me permet de faire appel à la communauté arduino car je suis dans une impasse. En effet dans le cadre d'un projet, je voudrais faire varier les couleurs d'une led et le filtre d'un son en fonction de la position du spectateur dans un couloir.
Le problème c'est que le détecteur de distance a tendance à "sauter" de temps en temps, c'est à dire qu'il détecte un présence et ne va par exemple rien détecté pendant 0,5 s ce qui va ramener sa valeur à -1 , ce qui fout la zizanie pour mon programme d'évolution du son et de la lumière.
Ce que je voudrais , c'est écrire une ligne qui me permette d'avoir un flux continu de donnés provenant du capteur.
Par exemple: le bout du couloir est à 2 m, du coup mon capteur affiche 200cm, quand une personne entre, la valeur varie entre 0 et 200 cm. Je voudrais une fonction qui, lorsqu'il y a une chute trop importante ou que la valeur mesuré est en dehors du range, extrapole la valeur précédente et le mette à la place...
Si quelqu'un pourrait m'aider je suis débutant dans la matière et je ne sais pas comment coder cela. Voici mon code actuel qui marche en soit très bien mis à part le saute de flux de donnée liés au capteur qui est très directif.
#define echoPin 11
#define trigPin 12
#define LEDPin 13
int maximumRange = 200;
int minimumRange = 0;
long duration, distance;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT);
}
void loop() {
digitalWrite(trigPin,LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds (10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin,HIGH);
distance = duration / 58.2;
if (distance >= maximumRange || distance <= minimumRange) {
Serial.println("-1");
digitalWrite(LEDPin, HIGH);
} else {
Serial.println(distance);
digitalWrite(LEDPin, LOW);
}
delay (50);
}
Merci d'avance de votre aide et bonne journée.