bonjour à tous
Je remets mon programme :
//VARIABLES CONSTANTES
const int ILS1 = 0; // numéro pin branchement ILS1
const int ILS2 = 1; // numéro pin branchement ILS2
const int ILS3 = 2; // numéro pin branchement ILS3
const int V1=8; //numéro pin branchement voie 1
const int V2=9; //numéro pin branchement voie 2
const int V3=10; //numéro pin branchement voie 3
const int ttes_voies_occupees=11; //numéro pin toutes voies occupées
//VARIABLES QUI CHANGENT
int etat_V1=0; //sortie V1 0 libre 1 occupée
int etat_V2=0; //sortie V2 0 libre 1 occupée
int etat_V3=0; //sortie V3 0 libre 1 occupée
int etat_ttes_voies_occupees=0; //sortie ttes voies occupées 0 non 1 oui
int etat=0;
int unit=0;
void setup() {
// INITIALISE LES SORTIES VERS LES VOIES
pinMode(V1,OUTPUT); //pin 8 en sortie
pinMode(V2, OUTPUT); //pin 9 en sortie
pinMode(V3,OUTPUT); //pin 10 en sortie
//INITIALISE LES ENTREES ILS EN ENTREE
pinMode(ILS1,INPUT);
pinMode(ILS2,INPUT);
pinMode(ILS3,INPUT);
//INITIALISE SI TOUTES VOIES OCCUPEES
pinMode(ttes_voies_occupees,OUTPUT);
}
void loop() {
// lecture des entrées ILS
unit=0;
etat_V1=digitalRead(ILS1);
etat_V2=digitalRead(ILS2);
etat_V3=digitalRead(ILS3);
//vérifier si ILS 1 est actionné
// si oui, la sortie 8 est haute
if (etat_V1==HIGH){
//sortie V1 est on
//incrément du compteur
unit++;//on ajoute 1 à unit
delay (200);
digitalWrite(V1,HIGH); //sortie arret voie 2 activée
//digitalWrite(V3,LOW); //sortie voie 3 activée
}else{
digitalWrite(V1,LOW);
}
//vérifier si ILS 2 est actionné
// si oui, la sortie 9 est haute
if (etat_V2==HIGH){
//sortie V2 est on
//incrément du compteur
unit++;//on ajoute 1 à unit
delay (200);
digitalWrite(V2,HIGH); //sortie arret voie 2 activée
//digitalWrite(V3,LOW); //sortie voie 3 activée
}else{
digitalWrite(V2,LOW);
}
//vérifier si ILS 3 est actionné
// si oui, la sortie 10 est haute
if (etat_V3==HIGH){
//sortie V3 est on
//incrément du compteur
unit++;//on ajoute 1 à unit
delay (200);
digitalWrite(V3,HIGH); //sortie arret voie 2 activée
//digitalWrite(V3,LOW); //sortie voie 3 activée
}else{
digitalWrite(V3,LOW);
}
if (unit==3)
{
unit==0;
digitalWrite(ttes_voies_occupees,HIGH);
//(etat_V1=LOW);
//digitalWrite(V1,LOW);
//delay(1000);
}else{
digitalWrite(ttes_voies_occupees,LOW);
}
}
J'espère que cela va fonctionner.
Quant aux ILS, j"en ai mis un sur chaque voie, parallèlement aux voies, dans l'axe de la voie. Sur les locos, c'est en fonction de la place disponible. Généralement sur le boogie avant quand c'est possible. Je vais essayer de trouver des aimants Néodyne pour qu'ils soient plus puissants.
Voilà, j'espère avoir répondu à vos question;
cordialement
Marc