7
« le: février 14, 2023, 06:10:34 pm »
Merci pour vos réponses
Je n'ai pa
J'ai effectivement passer par le téléchargement puis fais un copier-coller
Il s'agit du programme suivant :
Passage à niveau géré par Arduino (1)
La détection de l’approche des trains
/********************************************************************************
* PN_TIB_survey.ino
********************************************************************************
* Ce programme est dans le domaine public. Il surveille la zone du PN
* Dernière mise a jour : 27 mai 2020
* pour eviter que ILS declenche deux fois lors du meme survol
*******************************************************************************/
const byte ILS=2; // Entree commune pour tous les ILS
unsigned int compteur = 1; // compteur d evenements (survol ILS)
volatile static boolean etatZonePN = true; // Initialiser avec trains en gare sur TIB
volatile static unsigned long old_top_debutISR; // Date anterieure d appel ISR
unsigned long old_top = 0; // variable pour afficher donnees utiles
void changeEtat() { // routine d'interruption (ISR)
unsigned long top_debutISR = millis(); // date appel ISR
if((top_debutISR - old_top_debutISR) > 2000) {
// 2 secondes au moins entre execution ISR
etatZonePN = !etatZonePN; // etat passe a etat oppose
old_top_debutISR = top_debutISR; // initialisation date anterieure d appel ISR
}
} // fin de ISR
void setup() {
// put your setup code here, to run once:
Serial.begin(115200); // Communication avec le moniteur
pinMode (ILS, INPUT_PULLUP);
pinMode (LED_BUILTIN, OUTPUT);
// changeEtat est la routine d'interruption sur l'entree ILS
// elle est declenchee par un front descendant
attachInterrupt (digitalPinToInterrupt(ILS), changeEtat, FALLING);
digitalWrite (LED_BUILTIN, LOW);
} // fin de setup
void loop() {
// put your main code here, to run repeatedly:
if(etatZonePN == false) {digitalWrite (LED_BUILTIN, LOW);}
if(etatZonePN == true) {digitalWrite (LED_BUILTIN, HIGH);}
if(old_top_debutISR != old_top) { // Affichage pour chaque nouveau survol ILS
Serial.print(compteur);
Serial.print(" ");
Serial.print(old_top_debutISR);
Serial.print(" ");
Serial.println(old_top_debutISR - old_top);
old_top = old_top_debutISR;
compteur = compteur + 1;
}
} // fin de loop