Alors voici mon travail de la matinée. ça fonctionne au poil !!
Si quelqu'un a une idée pour ajouter des leds qui clignotent lorsque le pont bouge, je suis preneur !
Merci d'avance
//Automate pour pont levant automatique.
int pinLedpont = 13;
int ILS1 = 2;
int ILS2 = 3;
// Configure l'état initial des LEDs
byte etatpinLedpont = LOW;
//gestion du pont en H
int IN1 = 5; // commande pont en H "1"
int IN2 = 6; // commande pont en H "2"
// Nombre de millisecondes entre deux changements d'état des LED
const unsigned long CLIGNOTANT = 1000;
int a; //rapport cyclique entre 0 et 255
// tableau des machines à états
enum {monte, descend } etatpont ;
//////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
//leds pont
pinMode(pinLedpont, OUTPUT);
digitalWrite(pinLedpont, etatpinLedpont);
// Bouton poussoir 1
pinMode(ILS1, INPUT_PULLUP);
pinMode(ILS2, INPUT_PULLUP);
// initialisation du moteur vitesse à 255 sens descente (IN2)
digitalWrite(IN1, 0);
digitalWrite(IN2, 0);
// Initialisation des états
etatpont = descend ;
// initialisation du facteur d'incrémentation moteur
a=255;
}
void loop()
{ // Récuperer valeur des ILS
int amont = digitalRead(ILS1);
int aval = digitalRead(ILS2);
// Si passage ILS1
if (amont == HIGH)
{
a=0;
analogWrite(IN2, 0);
analogWrite(IN1, a);
ACCELERATION_monte();
etatpont = monte ;
a=255;
delay(10);
}
// Si passage ILS2
if (aval == HIGH )
{
a=0;
analogWrite(IN1, 0);
analogWrite(IN2, a);
ACCELERATION_descend ();
etatpont = descend;
a=255;
delay(10);
}
}
void ACCELERATION_monte()
{
while (a <=255)
{ // phase de montée.
analogWrite(IN1, a);
a = a + 1;
delay(5);
}
}
void ACCELERATION_descend()
{
while (a <=255)
{ // phase descente.
analogWrite(IN2, a);
a = a + 1;
delay(5);
}
}
void task_led1() {
static unsigned long previousMillisLed1 = 0;
static byte etatpinLedpont = LOW;
unsigned long currentMillis = millis();
// Si BLINK_INTERVAL_1 ou plus millisecondes se sont écoulés
if(currentMillis - previousMillisLed1 >= CLIGNOTANT) {
// Garde en mémoire la valeur actuelle de millis()
previousMillisLed1 = currentMillis;
// Inverse l'état de la LED 1
etatpinLedpont = !etatpinLedpont;
digitalWrite(pinLedpont, etatpinLedpont);
}
}