/*
gestion d'un PN en remplcement des ils de détection
détecteur aaval:
au repos la sortie du détecteur Aval est LOW (estEnfonce()) et la sortie du montage est LOW
en cas de détection la sortie du détecteur Aval passe à HIGH durant le passage du train
puis revient à LOW le train étant passé,la sortie du montage envoie une impulsion HIGH qui commandera ultérieurement un relais
la led bleu visualise le niveau à la sortie du détecteur (LOW = allumé)
*/
const byte Sortie = 13; // Broche de la LED
const byte SortieDetecteur = 4; // Broche d'entrée pour le front descendant
bool etatPrecedent = LOW; // État précédent de l'entrée (initialisé à HIGH)
unsigned long dernierChangement = 0; // Dernier changement d'état
const unsigned long delaiAntiRebond = 50; // Délai anti-rebond (ms)
void setup() {
pinMode(Sortie, OUTPUT);
pinMode(SortieDetecteur, INPUT_PULLUP); // Active la résistance de pull-up interne
}
void loop() {
bool etatActuel = digitalRead(SortieDetecteur);
unsigned long maintenant = millis();
// Filtrage des rebonds
if (etatActuel != etatPrecedent && (maintenant - dernierChangement) > delaiAntiRebond) {
dernierChangement = maintenant;
// Détection d'un front descendant (passage de HIGH à LOW)
if (etatActuel == LOW) {
digitalWrite (Sortie, HIGH); // Allume la LED
delay(500); // Garde la LED allumée 500 ms
digitalWrite(Sortie, LOW); // Éteint la LED
}
etatPrecedent = etatActuel;
}
}