Saint Gilles, 4 commandes sur un seul canal
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 :
- Le sitakiki de Christian
- Bateaux-trucs de M.Claverie
- RC Navy de Philippe Loussouarn
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.