/*=========== Lecture 2voies  proportionnelles pour piloter 8 relais  ================
Les 2 manches au neutre à la mise en route       ==> les  8 relais sont "off"
Pour les radios programmablles, débattements à 100%
Malheureusement les relais chinois que j'utilise fonctionne en logique inverse, donc relai appelé lorsque sortie Arduino = LOW
Donc ce programme est adapté en consequence (les sortie sont HIGH au repos)

On utilise les 8 positions cardinales des 2 manches pour piloter les 8 relais
Dans ce sketch lecture de la valeur des voies sur le moniteur série (peu être supprimée)                    
========================================================================= */
int signal1 = 2;         // Déclare le signal voie 1 sur le pin 2
int val1;                // Valeur du signal voie 1

int signal2 = 3;        // Déclare le signal voie 2 sur le pin 3
int val2;               // Valeur du signal voie 2

int cpt1 = 0;            // Compteur point 1
int etatpt1 = LOW;       // L'état de la position point 1 (voie 1 en haut)
int mempt1 = LOW;        // La mémoire de l'état de la position point 1 (voie 1 en haut)

int cpt2 = 0;            // Compteur point 2
int etatpt2 = LOW;      // L'état de la position point 2 (voie 1 en bas)
int mempt2 = LOW;       // La mémoire de l'état de la position point 2 (voie 1 en bas)


int cpt3 = 0;             // Compteur point 3
int etatpt3 = LOW;       // L'état de la position point 3 (voie 2 à gauche)
int mempt3 = LOW;        // La mémoire de l'état de la position point 3 (voie 2 à gauche)

int cpt4 = 0;            // Compteur point 4
int etatpt4 = LOW;      // L'état de la position point 4 (voie 2 à droite)
int mempt4 = LOW;       // La mémoire de l'état de la position point 4 (voie 2 à droite)

int cpt5 = 0;            // Compteur point 5
int etatpt5 = LOW;       // L'état de la position point 5 (voie 1 en haut et voie 2 à gauche en position médiane)
int mempt5 = LOW;        // La mémoire de l'état de la position point 5 (voie 1 en haut et voie 2 à gauche en position médiane)

int cpt6 = 0;            // Compteur point 6
int etatpt6 = LOW;       // L'état de la position point 6 (voie 1 en bas et voie 2 à droite en position médiane)
int mempt6 = LOW;        // La mémoire de l'état de la position point 6 (voie 1 en bas et voie 2 à droite en position médiane)

int cpt7 = 0;            // Compteur point 7
int etatpt7 = LOW;       // L'état de la position point 7 (voie 1 en bas et voie 2 à gauche en position médiane)
int mempt7 = LOW;        // La mémoire de l'état de la position point 75 (voie 1 en bas et voie 2 à gauche en position médiane)

int cpt8 = 0;            // Compteur point 8
int etatpt8 = LOW;       // L'état de la position point 8 (voie 1 en haut et voie 2 à droite en position médiane)
int mempt8 = LOW;        // La mémoire de l'état de la position point 6 (voie 1 en haut et voie 2 à droite en position médiane)

int mini = 1000;        // Valeur mini du signal
int maxi = 2000;        // Valeur maxi du signal

const int rel1 = 4;     // Relais 1 monté par pt1
const int rel2 = 5;     // Relais 2 monté par pt2
const int rel3 = 6;     // Relais 3 monté par pt3
const int rel4 = 7;     // Relais 4 monté par pt4
const int rel5 = 8;     // Relais 5 monté par pt5
const int rel6 = 9;     // Relais 6 monté par pt6
const int rel7 = 10;    // Relais 7 monté par pt7
const int rel8 = 11;    // Relais 8 monté par pt8

void setup()
{
   Serial.begin(9600);
  
  pinMode(signal1, INPUT);    // Déclare signal 1 comme une entrée
  pinMode(signal2, INPUT);    // Déclare signal 2 comme une entrée
  pinMode(rel1, OUTPUT);      // Déclare le pin 4 en sortie
  pinMode(rel2, OUTPUT);      // Déclare le pin 5 en sortie
  pinMode(rel3, OUTPUT);      // Déclare le pin 6 en sortie
  pinMode(rel4, OUTPUT);      // Déclare le pin 7 en sortie
  pinMode(rel5, OUTPUT);      // Déclare le pin 8 en sortie
  pinMode(rel6, OUTPUT);      // Déclare le pin 9 en sortie
  pinMode(rel7, OUTPUT);      // Déclare le pin 10 en sortie
  pinMode(rel8, OUTPUT);      // Déclare le pin 11 en sortie
  
  digitalWrite(rel1, HIGH);        // SORTIE4 (OFF) 
  digitalWrite(rel2, HIGH);        // SORTIE5 (OFF)
  digitalWrite(rel3, HIGH);        // SORTIE6 (OFF) 
  digitalWrite(rel4, HIGH);        // SORTIE7 (OFF)
  digitalWrite(rel5, HIGH);        // SORTIE8 (OFF) 
  digitalWrite(rel6, HIGH);        // SORTIE9 (OFF)
  digitalWrite(rel7, HIGH);        // SORTIE10 (OFF) 
  digitalWrite(rel8, HIGH);        // SORTIE11 (OFF)
  
}

void loop()
{
  val1 = pulseIn(signal1, HIGH), 30000;          //Lire signal voie1 et de le stocker en tant que val1
  val1 = map(val1, mini, maxi, 1000, 2000);      //Met en forme le signal entre 1000 et 2000
  val1 = constrain(val1, 1000, 2000);            //Contraint le signal entre 1000 et 2000

  
  val2 = pulseIn(signal2, HIGH), 30000;          //Lire signal voie 2 et de le stocker en tant que val2
  val2 = map(val2, mini, maxi, 1000, 2000);      //Met en forme le signal entre 1000 et 2000
  val2 = constrain(val2, 1000, 2000);            //Contraint le signal entre 1000 et 2000
   
  
  //---------------------------------------------------------------------------------- 
  // TRAITEMENT SIGNAL VOIE 1, POINT HAUT (PT1)
  //---------------------------------------------------------------------------------- 
  
  // Si le signal voie 1 à sa valeur haute >1900, on passe son état à HIGH

  if ((val1 > 1900) && (val1 < 2001) && (val2 < 1600) && (val2 > 1400))  // Voie1 en haut et voie 2 au milieu
      {
   etatpt1 = HIGH;     //on passe l'état point 1 à HIGH
      }
   else
       {
   etatpt1 = LOW;     //Sinon, on passe l'état point 1 à LOW
         }
  
  //---------------------------------------------------------------------------------- 
  
  if((etatpt1 != mempt1) && (etatpt1 == HIGH) && (cpt1 == 0))   // Si le signal point 1 a un état différent de celui enregistré et que cet état est "haut" + compteur=0 
    
    {
    
        cpt1 = 1;                   // on passe le compteur à 1
        mempt1 = etatpt1;           // on enregistre en mémoire l'état de la position  point 1 pour le tour suivant
        digitalWrite(rel1, LOW);    // relais 1 passe à ON (logique inverse)
    }
 
  //---------------------------------------------------------------------------------- 
  
  if((etatpt1 != mempt1) && (etatpt1 == LOW) && (cpt1 == 1))   // Si le signal point 1 a un état différent de celui enregistré et que cet état est "LOW" + compteur=1  (on à quitté le point 1)
    
    {
    
        
        mempt1 = 0;          // on enregistre en mémoire l'état de la position point 1  pour le tour suivant
        cpt1 = 2;            // on passe le compteur à 2
    }  
  //---------------------------------------------------------------------------------- 
  
  if((etatpt1 != mempt1) && (etatpt1 == HIGH) && (cpt1 == 2))   // Si le signal point 1 a un état différent de celui enregistré et que cet état est "haut" + compteur=2  (deuxième tour)
    
    {
        mempt1 = etatpt1;             // on enregistre en mémoire l'état de la position point 1 pour le tour suivant
        cpt1 = 3;                    // on passe le compteur à 3
        digitalWrite(rel1, HIGH);    // relais 1 passe à OFF (logique inverse)
    }
 //---------------------------------------------------------------------------------- 
  
  if((etatpt1 != mempt1) && (etatpt1 == LOW) && (cpt1 == 3))   // Si le signal point 1 a un état différent de celui enregistré et que cet état est "LOW" + compteur=3  (on à quitté le point 1, deuxième tour)
    
    {
    
        
        mempt1 = 0;          // on enregistre en mémoire l'état de la position point 1  pour le tour suivant
        cpt1 = 0;            // on passe le compteur à 0
    }  
   
  //---------------------------------------------------------------------------------- 
  // TRAITEMENT SIGNAL VOIE 1, POINT BAS (PT2)
  //----------------------------------------------------------------------------------  
  // Si le signal voie 1 à sa valeur basse <1100, on passe son état à HIGH

  if ((val1 < 1100) && (val1 > 999) && (val2 < 1600) && (val2 > 1400))  // Voie 1 en bas et voie 2 au milieu
      {
   etatpt2 = HIGH;     //on passe l'état voie 1 en bas à HIGH
      }
   else
       {
   etatpt2 = LOW;     //Sinon, on passe l'état voie 1 en bas à LOW
      }
  //---------------------------------------------------------------------------------- 
  
  if((etatpt2 != mempt2) && (etatpt2 == HIGH) && (cpt2 == 0))   // Si le signal point 2 a un état différent de celui enregistré et que cet état est "haut" + compteur=0 
    
    {
    
        cpt2 = 1;                   // on passe le compteur à 1
        mempt2 = etatpt2;           // on enregistre en mémoire l'état de la position point 2 pour le tour suivant
        digitalWrite(rel2, LOW);    // relais 2 passe à ON (logique inverse)
    }
  //---------------------------------------------------------------------------------- 
  
  if((etatpt2 != mempt2) && (etatpt2 == LOW) && (cpt2 == 1))   // Si le signal point 2 a un état différent de celui enregistré et que cet état est "LOW" + compteur=1  (on à quitté le point 2)
    
    {
    
        
        mempt2 = 0;          // on enregistre en mémoire l'état de la position point 2  pour le tour suivant
        cpt2 = 2;            // on passe le compteur à 2
    }  
  //---------------------------------------------------------------------------------- 
   if((etatpt2 != mempt2) && (etatpt2 == HIGH) && (cpt2 == 2))   // Si le signal point 2 a un état différent de celui enregistré et que cet état est "haut" + compteur=2  (deuxième tour)
    
    {
        mempt2 = etatpt2;            // on enregistre en mémoire l'état de la position point 2 pour le tour suivant
        cpt2 = 3;                    // on passe le compteur à 3
        digitalWrite(rel2, HIGH);    // relais 2 passe à OFF (logique inverse)
    }
 //---------------------------------------------------------------------------------- 
  
  if((etatpt2 != mempt2) && (etatpt2 == LOW) && (cpt2 == 3))   // Si le signal point 2 a un état différent de celui enregistré et que cet état est "LOW" + compteur=3  (on à quitté le point 2, deuxième tour)
    
    {
    
        
        mempt2 = 0;          // on enregistre en mémoire l'état de la position point 2  pour le tour suivant
        cpt2 = 0;            // on passe le compteur à 0
    }  
   
 //---------------------------------------------------------------------------------- 
  // TRAITEMENT SIGNAL VOIE 2, A GAUCHE (POINT 3)
  //---------------------------------------------------------------------------------- 
  
  // Si le signal voie 2 à sa valeur haute >1900, on passe son état à HIGH

  if ((val2 > 1900) && (val2 < 2001) && (val1 < 1600) && (val1 > 1400))  // Voie 2 à gauche et Voie 1 au milieu
      {
   etatpt3 = HIGH;     //on passe l'état point 3  à HIGH
      }
   else
       {
   etatpt3 = LOW;     //Sinon, on passe l'état point 3 à LOW
         }
  
  //---------------------------------------------------------------------------------- 
  
  if((etatpt3 != mempt3) && (etatpt3 == HIGH) && (cpt3 == 0))   // Si le signal  point 3 a un état différent de celui enregistré et que cet état est "haut" + compteur=0 
    
    {
    
        cpt3 = 1;                   // on passe le compteur à 1
        mempt3 = etatpt3;           // on enregistre en mémoire l'état de la position point 3 pour le tour suivant
        digitalWrite(rel3, LOW);    // relais 3 passe à ON (logique inverse)
    }
 
  //---------------------------------------------------------------------------------- 
  
  if((etatpt3 != mempt3) && (etatpt3 == LOW) && (cpt3 == 1))   // Si le signal point 3 a un état différent de celui enregistré et que cet état est "LOW" + compteur=1  (on a quitté le point 3)
    
    {
    
        
        mempt3 = 0;          // on enregistre en mémoire l'état de la position  point 3 pour le tour suivant
        cpt3 = 2;             // on passe le compteur à 2
    }  
  //---------------------------------------------------------------------------------- 
  
  if((etatpt3 != mempt3) && (etatpt3 == HIGH) && (cpt3 == 2))   // Si le signal point 3 a un état différent de celui enregistré et que cet état est "haut" + compteur=2  (deuxième tour)
    
    {
        mempt3 = etatpt3;            // on enregistre en mémoire l'état de la position point 3 pour le tour suivant
        cpt3 = 3;                    // on passe le compteur à 3
        digitalWrite(rel3, HIGH);    // relais 3 passe à OFF (logique inverse)
    }
 //---------------------------------------------------------------------------------- 
  
  if((etatpt3 != mempt3) && (etatpt3 == LOW) && (cpt3 == 3))   // Si le signal point 3 a un état différent de celui enregistré et que cet état est "LOW" + compteur=3  (on a quitté le point 3, deuxième tour)
    
    {
    
        
        mempt3 = 0;          // on enregistre en mémoire l'état de la position Voie 2  pour le tour suivant
        cpt3 = 0;        // on passe le compteur à 0
    }  
   
  //---------------------------------------------------------------------------------- 
  // TRAITEMENT SIGNAL VOIE 2,  A DROITE (POINT 4)
  //----------------------------------------------------------------------------------  
  // Si le signal voie 2 à sa valeur basse <1100, on passe son état à HIGH

  if ((val2 < 1100) && (val2 > 999) && (val1 < 1600) && (val1 > 1400))  // Voie 2 à droite et Voie 1 au milieu
      {
   etatpt4 = HIGH;     //on passe l'état point 4 à HIGH
      }
   else
       {
   etatpt4 = LOW;     //Sinon, on passe l'état point 4 à LOW
      }
  //---------------------------------------------------------------------------------- 
  
  if((etatpt4 != mempt4) && (etatpt4 == HIGH) && (cpt4 == 0))   // Si le signal point 4 a un état différent de celui enregistré et que cet état est "haut" + compteur=0 
    
    {
    
        cpt4 = 1;                   // on passe le compteur à 1
        mempt4 = etatpt4;           // on enregistre en mémoire l'état de la position  point 4 pour le tour suivant
        digitalWrite(rel4, LOW);    // relais 4 passe à ON (logique inverse)
    }
  //---------------------------------------------------------------------------------- 
  
  if((etatpt4 != mempt4) && (etatpt4 == LOW) && (cpt4 == 1))   // Si le signal point 4 a un état différent de celui enregistré et que cet état est "LOW" + compteur=1  (on à quitté le point 4)
    
    {
    
        
        mempt4 = 0;          // on enregistre en mémoire l'état de la position point 4  pour le tour suivant
        cpt4 = 2;            // on passe le compteur à 2
    }  
  //---------------------------------------------------------------------------------- 
   if((etatpt4 != mempt4) && (etatpt4 == HIGH) && (cpt4 == 2))   // Si le signal point 4 a un état différent de celui enregistré et que cet état est "haut" + compteur=2  (deuxième tour)
    
    {
        mempt4 = etatpt4;            // on enregistre en mémoire l'état de la position point 4 pour le tour suivant
        cpt4 = 3;                    // on passe le compteur à 3
        digitalWrite(rel4, HIGH);    // relais 4 passe à OFF (logique inverse)
    }
 //---------------------------------------------------------------------------------- 
  
  if((etatpt4 != mempt4) && (etatpt4 == LOW) && (cpt4 == 3))   // Si le signal point 4 a un état différent de celui enregistré et que cet état est "LOW" + compteur=3  (on à quitté le point 4, deuxième tour)
    
    {
    
        
        mempt4 = 0;          // on enregistre en mémoire l'état de la position point 4  pour le tour suivant
        cpt4 = 0;            // on passe le compteur à 0
    }  
   
   //---------------------------------------------------------------------------------- 
  // TRAITEMENT SIGNAL VOIE1 + VOIE 2, V1 en HAUT et V2 à GAUCHE EN POSITION MEDIANE (POINT 5)
  //----------------------------------------------------------------------------------  
  // Si le signal voie 1 à sa valeur comprise entre 1850 et 2001 ainsi que la voie 2, on est sur le point 5

  if ((val1 < 2001) && (val1 > 1850) && (val2 < 2001) && (val2 > 1850))  // on est sur le point 5
      {
   etatpt5 = HIGH;     //on passe l'état point 5 à HIGH
      }
   else
       {
   etatpt5 = LOW;     //Sinon, on passe l'état point 5 à LOW
      }
  //---------------------------------------------------------------------------------- 
 
  if((etatpt5 != mempt5) && (etatpt5 == HIGH) && (cpt5 == 0))   // Si le signal point 5 a un état différent de celui enregistré et que cet état est "haut" + compteur=0 
    
    {
    
        cpt5 = 1;                   // on passe le compteur à 1
        mempt5 = etatpt5;           // on enregistre en mémoire l'état de la position  point 5 pour le tour suivant
        digitalWrite(rel5, LOW);    // relais 5 passe à ON (logique inverse)
    }
 
  //---------------------------------------------------------------------------------- 
  
  if((etatpt5 != mempt5) && (etatpt5 == LOW) && (cpt5 == 1))   // Si le signal point 5 a un état différent de celui enregistré et que cet état est "LOW" + compteur=1  (on à quitté le point 5)
    
    {
    
        
        mempt5 = 0;          // on enregistre en mémoire l'état de la position point 5  pour le tour suivant
        cpt5 = 2;            // on passe le compteur à 2
    }  
  //---------------------------------------------------------------------------------- 
  
  if((etatpt5 != mempt5) && (etatpt5 == HIGH) && (cpt5 == 2))   // Si le signal point 5 a un état différent de celui enregistré et que cet état est "haut" + compteur=2  (deuxième tour)
    
    {
        mempt5 = etatpt5;             // on enregistre en mémoire l'état de la position point 5 pour le tour suivant
        cpt5 = 3;                    // on passe le compteur à 3
        digitalWrite(rel5, HIGH);    // relais 5 passe à OFF (logique inverse)
    }
 //---------------------------------------------------------------------------------- 
  
  if((etatpt5 != mempt5) && (etatpt5 == LOW) && (cpt5 == 3))   // Si le signal point 5 a un état différent de celui enregistré et que cet état est "LOW" + compteur=3  (on à quitté le point 5, deuxième tour)
    
    {
    
        
        mempt5 = 0;          // on enregistre en mémoire l'état de la position point 5  pour le tour suivant
        cpt5 = 0;            // on passe le compteur à 0
    }  
   
  //---------------------------------------------------------------------------------- 
   // TRAITEMENT SIGNAL VOIE1 + VOIE 2, V1 en BAS et V2 à DROITE EN POSITION MEDIANE  (POINT 6)
  //----------------------------------------------------------------------------------  
  // Si le signal voie 1 à sa valeur comprise entre 1100 et 999 ainsi que la voie 2, on est sur le point 6

  if ((val1 < 1100) && (val1 > 999) && (val2 < 1100) && (val2 > 999))  // on est sur le point 6
      {
   etatpt6 = HIGH;     //on passe l'état point 6 à HIGH
      }
   else
       {
   etatpt6 = LOW;     //Sinon, on passe l'état point 6 à LOW
      }
  //---------------------------------------------------------------------------------- 
 
  
  if((etatpt6 != mempt6) && (etatpt6 == HIGH) && (cpt6 == 0))   // Si le signal point 6 a un état différent de celui enregistré et que cet état est "haut" + compteur=0 
    
    {
    
        cpt6 = 1;                   // on passe le compteur à 1
        mempt6 = etatpt6;           // on enregistre en mémoire l'état de la position  point 6 pour le tour suivant
        digitalWrite(rel6, LOW);    // relais 6 passe à ON (logique inverse)
    }
 
  //---------------------------------------------------------------------------------- 
  
  if((etatpt6 != mempt6) && (etatpt6 == LOW) && (cpt6 == 1))   // Si le signal point 6 a un état différent de celui enregistré et que cet état est "LOW" + compteur=1  (on a quitté le point 6)
    
    {
    
        
        mempt6 = 0;          // on enregistre en mémoire l'état de la position point 6  pour le tour suivant
        cpt6 = 2;            // on passe le compteur à 2
    }  
  //---------------------------------------------------------------------------------- 
  
  if((etatpt6 != mempt6) && (etatpt6 == HIGH) && (cpt6 == 2))   // Si le signal point 6 a un état différent de celui enregistré et que cet état est "haut" + compteur=2  (deuxième tour)
    
    {
        mempt6 = etatpt6;             // on enregistre en mémoire l'état de la position point 6 pour le tour suivant
        cpt6 = 3;                    // on passe le compteur à 3
        digitalWrite(rel6, HIGH);    // relais 6 passe à OFF (logique inverse)
    }
 //---------------------------------------------------------------------------------- 
  
  if((etatpt6 != mempt6) && (etatpt6 == LOW) && (cpt6 == 3))   // Si le signal point 6 a un état différent de celui enregistré et que cet état est "LOW" + compteur=3  (on à quitté le point 6, deuxième tour)
    
    {
    
        
        mempt6 = 0;          // on enregistre en mémoire l'état de la position point 6  pour le tour suivant
        cpt6 = 0;            // on passe le compteur à 0
    }  
   
  //---------------------------------------------------------------------------------- 
   // TRAITEMENT SIGNAL VOIE1 + VOIE 2, V1 en BAS et V2 à GAUCHE EN POSITION MEDIANE  (POINT 7)
  //----------------------------------------------------------------------------------  
  // Si le signal voie 1 à sa valeur comprise entre 1100 et 999 1 et la voie 2 un signal compris entre 1850 et 2001, on est sur le point 7

  if ((val1 < 1100) && (val1 > 999) && (val2 < 2001) && (val2 > 1850))  // on est sur le point 7
      {
   etatpt7 = HIGH;     //on passe l'état point 7 à HIGH
      }
   else
       {
   etatpt7 = LOW;     //Sinon, on passe l'état point 7 à LOW
      }
  //---------------------------------------------------------------------------------- 
 
  
  if((etatpt7 != mempt7) && (etatpt7 == HIGH) && (cpt7 == 0))   // Si le signal point 7 a un état différent de celui enregistré et que cet état est "haut" + compteur=0 
    
    {
    
        cpt7 = 1;                   // on passe le compteur à 1
        mempt7 = etatpt7;           // on enregistre en mémoire l'état de la position  point 7 pour le tour suivant
        digitalWrite(rel7, LOW);    // relais 7 passe à ON (logique inverse)
    }
 
  //---------------------------------------------------------------------------------- 
  
  if((etatpt7 != mempt7) && (etatpt7 == LOW) && (cpt7 == 1))   // Si le signal point 7 a un état différent de celui enregistré et que cet état est "LOW" + compteur=1  (on a quitté le point 7)
    
    {
    
        
        mempt7 = 0;          // on enregistre en mémoire l'état de la position point 7  pour le tour suivant
        cpt7 = 2;            // on passe le compteur à 2
    }  
  //---------------------------------------------------------------------------------- 
  
  if((etatpt7 != mempt7) && (etatpt7 == HIGH) && (cpt7 == 2))   // Si le signal point 7 a un état différent de celui enregistré et que cet état est "haut" + compteur=2  (deuxième tour)
    
    {
        mempt7 = etatpt7;             // on enregistre en mémoire l'état de la position point 7 pour le tour suivant
        cpt7 = 3;                    // on passe le compteur à 3
        digitalWrite(rel7, HIGH);    // relais 7 passe à OFF (logique inverse)
    }
 //---------------------------------------------------------------------------------- 
  
  if((etatpt7 != mempt7) && (etatpt7 == LOW) && (cpt7 == 3))   // Si le signal point 7 a un état différent de celui enregistré et que cet état est "LOW" + compteur=3  (on à quitté le point 7, deuxième tour)
    
    {
    
        
        mempt7 = 0;          // on enregistre en mémoire l'état de la position point 7  pour le tour suivant
        cpt7 = 0;            // on passe le compteur à 0
    }  
   //---------------------------------------------------------------------------------- 
   // TRAITEMENT SIGNAL VOIE1 + VOIE 2, V1 en HAUT et V2 à DROITE EN POSITION MEDIANE  (POINT 8)
  //----------------------------------------------------------------------------------  
  // Si le signal voie 1 à sa valeur comprise entre 1850 et 2001 et la voie 2 un signal compris entre 999 et 1100, on est sur le point 8

  if ((val1 < 2001) && (val1 > 1850) && (val2 < 1100) && (val2 > 999))  // on est sur le point 8
      {
   etatpt8 = HIGH;     //on passe l'état point 8 à HIGH
      }
   else
       {
   etatpt8 = LOW;     //Sinon, on passe l'état point 8 à LOW
      }
  //---------------------------------------------------------------------------------- 
 
  
  if((etatpt8 != mempt8) && (etatpt8 == HIGH) && (cpt8 == 0))   // Si le signal point 8 a un état différent de celui enregistré et que cet état est "haut" + compteur=0 
    
    {
    
        cpt8 = 1;                   // on passe le compteur à 1
        mempt8 = etatpt8;           // on enregistre en mémoire l'état de la position  point 8 pour le tour suivant
        digitalWrite(rel8, LOW);    // relais 8 passe à ON (logique inverse)
    }
 
  //---------------------------------------------------------------------------------- 
  
  if((etatpt8 != mempt8) && (etatpt8 == LOW) && (cpt8 == 1))   // Si le signal point 8 a un état différent de celui enregistré et que cet état est "LOW" + compteur=1  (on a quitté le point 8)
    
    {
    
        
        mempt8 = 0;          // on enregistre en mémoire l'état de la position point 8  pour le tour suivant
        cpt8 = 2;            // on passe le compteur à 2
    }  
  //---------------------------------------------------------------------------------- 
  
  if((etatpt8 != mempt8) && (etatpt8 == HIGH) && (cpt8 == 2))   // Si le signal point 8 a un état différent de celui enregistré et que cet état est "haut" + compteur=2  (deuxième tour)
    
    {
        mempt8 = etatpt8;             // on enregistre en mémoire l'état de la position point 8 pour le tour suivant
        cpt8 = 3;                    // on passe le compteur à 8
        digitalWrite(rel8, HIGH);    // relais 7 passe à OFF (logique inverse)
    }
 //---------------------------------------------------------------------------------- 
  
  if((etatpt8 != mempt8) && (etatpt8 == LOW) && (cpt8 == 3))   // Si le signal point 8 a un état différent de celui enregistré et que cet état est "LOW" + compteur=3  (on à quitté le point 8, deuxième tour)
    
    {
    
        
        mempt8 = 0;          // on enregistre en mémoire l'état de la position point 7  pour le tour suivant
        cpt8 = 0;            // on passe le compteur à 0
    }  
    
  //---------------------------------------------------------------------------------- 
  
     Serial.print("val1 = ");
     Serial.println(val1);
     Serial.print("val2 = ");
     Serial.println(val2);
     
     delay(500);        
       }