Saint Gilles, 4 commandes sur un seul canal

Publié le par le Moujo

J'ai modifié ma télécommande pour disposer de 8 fonctions sur 1 seul canal (Voir la procédure pas à pas pour bénéficier de ces 8 canaux), mais sur le Saint Gilles je n'en ai besoin que de 4, ce qui me fait 8 voies en tout, c'est déjà pas mal... J'ai donc installé l'AT84 et un bloc de 4 relais dans la cale du bateau.

Des pages très riches en programmation Arduino :

voici le sketch inspiré de celui de Philippe Loussouarn pour 4 canaux :

== Sketch à copier dans l'IDE 1/08/10 Arduino, QuatreVoiesTor.ino==

/*== COMMMANDE DE 4 SORTIES ON/OFF PAR 4 INTERS POUSSOIR  ==

  •    Les broches 1.2.3.4 de l'Attiny sont connectées  aux prise in1, in2, in3, in4 des relais.
  •    La voie du récepteur est connecté à la prise n°0
  •    Il faut relier le GND de l'Attiny à la masse des servos  
  • Un appui furtif sur un bouton fait actionner le relais correspondant  qui reste collé.
  • Un deuxième appui furtif sur le même bouton fait décoller le relais correspondant.

================================*/
  int signal = 0;    // Signal recepteur commande aériens
  int val1;          // valeur du signal recepteur commande aériens
  int s1 = 1; int s2 = 2; int s3 = 3; int s4 = 4; // Declaration des sorties
  int e1 = 0; int e2 = 0; int e3 = 0; int e4 = 0; // declaration etat des sorties
  int mini = 1023;  // Mettre ici la valeur du signal lorsque l'on appui sur le bouton n°1
  int maxi = 1980;  // Mettre ici la valeur du signal lorsque l'on appui sur le bouton n°4
void setup()
{
  pinMode(s1,OUTPUT);  pinMode(s2,OUTPUT); pinMode(s3,OUTPUT); pinMode(s4,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 loop()
{   
   val1 = 0;
  val1 = pulseIn(signal, HIGH),30000; //Lire pulse1 et de le stocker en tant que val1
  val1 = map(val1,mini,maxi,1090,1910);
  // val1=constrain(val1, 900, 2000);
   
   delay (50);
   if (val1 > 2000 || val1 < 1000 )  { val1 = 1500; }
   
     if (val1 > 1000 && val1 < 1100 && e1 == 0)    { action1_1();  e1 = 1; val1 = 0;  delay(300);}
     if (val1 > 1000 && val1 < 1100 && e1 == 1)    { action1_0();  e1 = 0; val1 = 0;  delay(300);}
   
     if (val1 > 1120 && val1 < 1230 && e2 == 0)    { action2_1();  e2 = 1; val1 = 0;  delay(300);}
     if (val1 > 1120 && val1 < 1230 && e2 == 1)    { action2_0();  e2 = 0; val1 = 0;  delay(300);}
   
      if (val1 > 1240 && val1 < 1350 && e3 == 0)   { action3_1();  e3 = 1; val1 = 0;  delay(300);}
      if (val1 > 1240 && val1 < 1350 && e3 == 1)   { action3_0();  e3 = 0; val1 = 0;  delay(300);}
   
      if (val1 > 1350 && val1 < 1430 && e4 == 0)   { action4_1();  e4 = 1; val1 = 0;  delay(300);}
      if (val1 > 1350 && val1 < 1430 && e4 == 1)   { action4_0();  e4 = 0; val1 = 0;  delay(300);}
   }
 //================ FIN DU PROGRAMME ========

Voici le cablage final, dans le bateau, avec un bloc 8 relais. Le gnd Attiny est relié impérativement au gnd relais.

 

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article