bonjour la team
après une absence pour prendre le temps de mieux connaitre la programmation sur Arduino
voici mon nouveau code pouvez-vous me dire se que vous en pensé
sachant que le train entre sur la zone d'arrêt et d'inverseur "inverseur activé"const int Broche_ILS1 = 3; //ILS commande d'arret (on relais 1 pendent une durer x)
const int Broche_ILS2 = 4; //ILS commande de l'inverseur de polariter après un temps x
const int Broche_LED1 = 6; //LED1 commande d'arret activé
const int Broche_LED2 = 7; //LED2 commande de l' inverseur activé
const int Broche_RELAIS1 = 9; //arret
const int Broche_RELAIS2 = 10; //inverseur
int Etat_ILS1 = 0; //arret
int Ordre_Tempo1 = 0; //arret
int Moteur1 = 0; //arret
int Etat_ILS2 = 0; //inverseur
int Ordre_Tempo2 = 0; //inverseur
int Moteur2 = 0; //inverseur
unsigned long Temps_Actuel1; //arret
unsigned long Temps_Precedent1; //arret
unsigned long Temps_Actuel2; //inverseur
unsigned long Temps_Precedent2; //inverseur
unsigned long Tempo_Repos1 = 10000; //arret
unsigned long Tempo_Repos2 = 8000; //inverseur
void setup()
{
Serial.begin (9600);
pinMode(Broche_ILS1, INPUT_PULLUP); //arret
pinMode(Broche_LED1, OUTPUT); //arret
pinMode(Broche_RELAIS1, OUTPUT); //arret
pinMode(Broche_ILS2, INPUT_PULLUP); //inverseur
pinMode(Broche_LED2, OUTPUT); //inverseur
pinMode(Broche_RELAIS2,OUTPUT); //inverseur
}
void loop()
{
//debut Loop arret
Temps_Actuel1 = millis();
Etat_ILS1 = digitalRead(Broche_ILS1);
if (Etat_ILS1 == HIGH)
{
digitalWrite(Broche_LED1,HIGH);
Temps_Precedent1 = Temps_Actuel1;
Ordre_Tempo1 = 1;
}
if (Ordre_Tempo1 == 1)
{
if ((Temps_Actuel1 - Temps_Precedent1) < Tempo_Repos1) {
Moteur1 = 1;
}
else {
Moteur1 = 0;
Ordre_Tempo1 = 0;
}
}
if (Moteur1 == 1)
{
digitalWrite(Broche_RELAIS1, HIGH);
}
else
{
digitalWrite(Broche_LED1, LOW);
digitalWrite(Broche_RELAIS1, LOW);
}
//fin Loop arret et debut LOOP inverseur
Temps_Actuel2 = millis();
Etat_ILS2 = digitalRead(Broche_ILS2);
if (Etat_ILS2 == HIGH)
{
digitalWrite(Broche_LED2,HIGH);
Temps_Precedent2 = Temps_Actuel2;
Ordre_Tempo2 = 1;
}
if (Ordre_Tempo2 == 1)
{
if ((Temps_Actuel2 - Temps_Precedent2) < Tempo_Repos2) {
Moteur2 = 1;
}
else {
Moteur2 = 0;
Ordre_Tempo2 = 0;
}
}
if (Moteur2 == 0)
{
digitalWrite(Broche_RELAIS2, HIGH);
}
else
{
digitalWrite(Broche_LED2, LOW);
digitalWrite(Broche_RELAIS2, LOW);
}
//fin LOOP inverseur
//affichage serie
Serial.print("; Etat_ILS1:"); Serial.print(Etat_ILS1);
Serial.print("; Etat_ILS2:"); Serial.print(Etat_ILS2);
}