int ledState = LOW; // extinction de la signalisation LED au départ
unsigned long previousMillis = 0; // mise à zéro de la temporisation du clignotant
// constants
unsigned long interval = 42; // durée à varier pour la durée du clignotement (milliseconds attention ATTyni 45 20 Mhz pas égale à arduino)
const int diode_rouge = 0; // broche 5 de l'ATTINY45
const int ils_fer = 2; // broche 7 de l'ATTINY45
const int ils_ouv = 1; // broche 6 de l'ATTINY45
const int pn_1 = 3; // BROCHE 2 ATTINY 45
const int pn_2 = 4; // BROCHE 3 DE L'ATTINY 45
// variables
int ferme =0;
void setup() {
// affectation des broches
pinMode(diode_rouge, OUTPUT); // diode en sortie 0
pinMode(ils_fer, INPUT); // ILS entrée 2 ils demande fermeture du PN.
pinMode(ils_ouv, INPUT); // ILS entrée 1 ils demande ouverture du PN.
pinMode(pn_1, OUTPUT); // relais commande moteur d'un coté PN cela permet le réglage de chaque fil à mémoire.
pinMode(pn_2, OUTPUT); // relais de commande de l'aute coté du pn
}
void loop() // les instructions sont répétées tant que l' arduino fonctionne
{
int etat_fer = digitalRead(ils_fer); // On lit la valeur ils fer
if (etat_fer == 1) // detection arrivée train
{
ferme = 1;
delay(10);
digitalWrite(pn_1,1);// ajout lignes
digitalWrite(pn_2,1);// ajoout ligne
do
{
int etat_ouv = digitalRead(ils_ouv); // On lit la valeur ils ouv
if (etat_ouv == 1) // detection arrivée train
{
delay(10);
ferme = 0;
digitalWrite(pn_1,0);// ouverture
digitalWrite(pn_2,0);// ouverture
digitalWrite(diode_rouge,0);// signalisation éteinte
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval)
{ // met en mémoire la dernière permutation de la LED
previousMillis = currentMillis;
if (ledState == LOW) // si la LED est éteinte ellle s'allume et vice-versa:
{
ledState = HIGH;
}
else
{
ledState = LOW;
}
digitalWrite(diode_rouge, ledState); // la LED éteinte selon ledState
}
}
while (ferme == 1);
}
}