Temporisation avec capteur de proximité

Bonjour,

J’essaye d’écrire un code qui me permettrait de pouvoir allumer une LED si aucune variation n’a été enregistré sur un capteur de proximité (HC-SR04) au bout de 10 minutes.

J’ai lu pas mal de posts où l’on parle de la fonction millis qui me semble être la plus appropriée.
Le souci que j’ai c’est à mon avis que je ne parviens pas à mémoriser la valeur de mon capteur.

En récapitulant :

  • Le capteur de proximité enregistre le passage en émettant un son à chaque fois qu’un mouvement est détecté.
  • Si au bout de 10 minutes, aucun mouvement n’est enregistré, une LED s’allume et reste allumée jusqu’à ce qu’un mouvement soit de nouveau enregistré.

J’attache le code que j’ai, mais qui ne fonctionne pas pour le moment.

Merci.

#include <NewPing.h>

// Déclaration du capteur de proximité
#define TRIGGER_PIN1 29
#define ECHO_PIN1 28
#define MAX_DISTANCE1 285
NewPing sonar1(TRIGGER_PIN1, ECHO_PIN1, MAX_DISTANCE1);

int ledPin1 = 8;

// Déclaration du temps
int tempoActive = 0;
unsigned long tempoDepart = 0;
int memoireProx = 0;
int etatLed4 = HIGH;
int etatProx = 0;

void setup() {
pinMode(ledPin1, OUTPUT);
}

void loop() {
int valping1 = map(sonar1.ping_cm(),0,MAX_DISTANCE3,0,1500);
etatProx = valping1;
if(etatProx != memoireProx && etatProx > 60) {
if (etatLed4 == LOW) {
etatLed4 == HIGH;

tempoActive = 1;
tempoDepart = millis();
}
}
if (tempoActive == 1) {
if ((millis() - tempoDepart) >= 2000) {

digitalWrite(ledPin4,1023);

tempoActive = 0;
}
}
memoireProx = etatProx;

}

Bonjour,

Je m'interroge sur la stabilité des valeurs du capteur dans le temps.

  1. Il faut lire les messages épinglés et entre autre pour le code tu aurai du lire ceci :

  2. Que veux tu détecter :

  • si un objet ne bouge pas ? --> la réponse sera toujours fluctuante il faut que tu fixe une borne min et une borne max.
  • si quelqu'un passe ?

J'ai les mêmes doutes que Standby : as tu testé un capteur HC-SR04 pendant 20 minutes et est-tu certain qu'il ne donne jamais de fausses réponses ?
Ou est-ce que les fausses réponses sont gérable et donc ne perturbent pas ?

Comme d'habitude avant de commencer à pondre des lignes de code , chaque fois que c'est possible, il faut faire des tests simples pour valider le matériel.

Bonjour,

Effectivement, au niveau de la stabilité des résultats, c'est pas terrible. J'ai ajouté un filtre RC en série pour lisser un peu et ça fonctionne relativement bien.
Donc les réponses me conviennent.

Ma question portait plus sur la gestion du temps et savoir comment fixer l'état des résultats du capteur bien entendu en deux bornes max.

Merci !

Bonjour,

J'ai du mal a visualiser ou tu as placé le filtre RC.

En sortie vers un connecteur monojack pour les mesures de tension.