/*================= COMMMANDE DE 8 SORTIES ON/OFF PAR 8 INTERS POUSSOIR  ========================
   Ce sketch pilote un Arduino Nano
   Les 8 relais sont connectés aux prises n°1,2,3,4,5,6,7,8
   La voie du récepteur est connectée à la prise n°0
   Un appui furtif sur un bouton  actionne le relais correspondant  qui reste collé.
   Un deuxième appui furtif sur le même bouton décolle le relais correspondant.

================================================================================================*/
int signal = 10;    // Signal récepteur commande aériens
int val1;          // valeur du signal récepteur commande aériens
int varX;          // Variable à zéro à la mise sous tension pour le test point milieu ce qui met toutes les sorties a 1
int s1 = 2; int s2 = 3; int s3 = 4; int s4 = 5; int s5 = 6; int s6 = 7; int s7 = 8; int s8 = 9; // Déclarion des sorties
int e1 = 0; int e2 = 0; int e3 = 0; int e4 = 0; int e5 = 0; int e6 = 0; int e7 = 0; int e8 = 0; // déclaration état des sorties
int mini = 1000;  // Mettre ici la valeur mini du signal 
int maxi = 2000;  // Mettre ici la valeur maxi du signal 
void setup()
{
  pinMode(s1, OUTPUT);  pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(s4, OUTPUT);
  pinMode(s5, OUTPUT); pinMode(s6, OUTPUT);  pinMode(s7, OUTPUT); pinMode(s8, OUTPUT);
 
}
//======================== sous programme action_x =============================================
void action1_1()  {
  digitalWrite(s1, HIGH);
}
void action1_0()  {
  digitalWrite(s1, LOW);
}

void action2_1()  {
  digitalWrite(s2, HIGH);
}
void action2_0()  {
  digitalWrite(s2, LOW);
}

void action3_1()  {
  digitalWrite(s3, HIGH);
}
void action3_0()  {
  digitalWrite(s3, LOW);
}

void action4_1()  {
  digitalWrite(s4, HIGH);
}
void action4_0()  {
  digitalWrite(s4, LOW);
}

void action5_1()  {
  digitalWrite(s5, HIGH);
}
void action5_0()  {
  digitalWrite(s5, LOW);
}

void action6_1()  {
  digitalWrite(s6, HIGH);
}
void action6_0()  {
  digitalWrite(s6, LOW);
}

void action7_1()  {
  digitalWrite(s7, HIGH);
}
void action7_0()  {
  digitalWrite(s7, LOW);
}

void action8_1()  {
  digitalWrite(s8, HIGH);
}
void action8_0()  {
  digitalWrite(s8, LOW);
}

//==============================================================================================

void loop()
{
  val1 = 0;
  val1 = pulseIn(signal, HIGH), 30000; //Lire pulse1 et de le stocker en tant que val1
  val1 = map(val1, mini, maxi, 1000, 2000);
  val1 = constrain(val1, 1000, 2000);
  
  delay (50);
  if (val1 > 2000 || val1 < 1000 )  {
    val1 = 1486; // mettre ici la valeur du neutre de votre clavier huit boutons
  }

  if (val1 > 1486 && val1 < 1513 && varX == 0)    {
    action1_1(); action2_1(); action3_1(); action4_1(); action5_1(); action6_1(); action7_1(); action8_1(); e1 = 1;  e2 = 1;  e3 = 1;
    e4 = 1;  e5 = 1;  e6 = 1;  e7 = 1;  e8 = 1; varX = 1; val1 = 0;  delay(300);
  }

  if (val1 > 1000 && val1 < 1200 && e1 == 0)    {
    action1_1();
    e1 = 1;
    val1 = 0;
    delay(300);
  }
  if (val1 > 1000 && val1 < 1200 && e1 == 1)    {
    action1_0();
    e1 = 0;
    val1 = 0;
    delay(300);
  }

  if (val1 > 1200 && val1 < 1270 && e2 == 0)    {
    action2_1();
    e2 = 1;
    val1 = 0;
    delay(300);
  }
  if (val1 > 1200 && val1 < 1270 && e2 == 1)    {
    action2_0();
    e2 = 0;
    val1 = 0;
    delay(300);
  }

  if (val1 > 1270 && val1 < 1325 && e3 == 0)   {
    action3_1();
    e3 = 1;
    val1 = 0;
    delay(300);
  }
  if (val1 > 1270 && val1 < 1325 && e3 == 1)   {
    action3_0();
    e3 = 0;
    val1 = 0;
    delay(300);
  }

  if (val1 > 1325 && val1 < 1400 && e4 == 0)   {
    action4_1();
    e4 = 1;
    val1 = 0;
    delay(300);
  }
  if (val1 > 1325 && val1 < 1400 && e4 == 1)   {
    action4_0();
    e4 = 0;
    val1 = 0;
    delay(300);
  }

  if (val1 > 1500 && val1 < 1585 && e5 == 0)   {
    action5_1();
    e5 = 1;
    val1 = 0;
    delay(300);
  }
  if (val1 > 1500 && val1 < 1585 && e5 == 1)   {
    action5_0();
    e5 = 0;
    val1 = 0;
    delay(300);
  }

  if (val1 > 1585 && val1 < 1640 && e6 == 0)   {
    action6_1();
    e6 = 1;
    val1 = 0;
    delay(300);
  }
  if (val1 > 1585 && val1 < 1640 && e6 == 1)   {
    action6_0();
    e6 = 0;
    val1 = 0;
    delay(300);
  }

  if (val1 > 1640 && val1 < 1700 && e7 == 0)   {
    action7_1();
    e7 = 1;
    val1 = 0;
    delay(300);
  }
  if (val1 > 1640 && val1 < 1700 && e7 == 1)   {
    action7_0();
    e7 = 0;
    val1 = 0;
    delay(300);
  }

  if (val1 > 1700 && val1 < 2000 && e8 == 0)   {
    action8_1();
    e8 = 1;
    val1 = 0;
    delay(300);
  }
  if (val1 > 1700 && val1 < 2000 && e8 == 1)   {
    action8_0();
    e8 = 0;
    val1 = 0;
    delay(300);
  }
}
//============================ FIN DU PROGRAMME =================================================