voilier connecté

Bonjour à tous.

J'ai utilisé ce site pour obtenir des informations bien utiles et je vous en remercie. Je pense avoir fini mon projet: domotique d'un voilier (batotique?)

voici le programme pour arduino méga. Double objectif: - telecommande à distance pour le pilote automatique. - telecommande pour les circuits permanents.

Le tout via un smartphone (appli appinventor) Il fonctionne.

/* * Arduino mega * commandes pour un tableau electrique d'un bateau. * fermeture ou ouverture des circuits via un smartphone. * les relais 1 à 6 sont dédiés au pilote auto. Ils fonctionnent comme des boutons poussoirs (pilote ST4000) * * Les relais 7 à 23 commandent les circuits permanents. * * relais1 = 26;//STANDBY relais2 = 27;//AUTO relais3 = 28;//-10 relais4 = 29;//+10 relais5 = 30;//-1 relais6 = 31;//+1

relais7 = 32;//auxi1 relais8 = 33;//auxi2 relais9 = 34;//instruments relais10 = 35;//pilote relais11 = 36;//navtex relais12 = 37;//eclairage relais13 = 38;//frigo relais14 = 39;//grpe eau relais15 = 40;//prises exterieur relais16 = 41;//feux nav relais17 = 42;//feu hune relais18 = 43;//feu mouillage relais19 = 44;//ecl pont relais20 = 45;//pompe douches relais21 = 46;//pompe cale relais22 = 47;//prises 12V relais23 = 48;//tv */ int mem[17];// memoire des relais 7 à 23 int pos = 0;// variable de position dans tableau des memoires : pos1 = memoire relais8 = mem[pos] int broche = 0;// definit la broche de sortie (serialA + 25) int serialA; // variable de reception de donnée via RX

void setup() {

Serial1.begin(9600); // initialisation de la connexion série (avec le module bluetooth hc06)

for (int i = 26 ; i < 49; i++) //on utilise les sorties 26 à 48 { digitalWrite(i, HIGH);// les relais optocoupleurs sont "active low" } for (int j =26 ; j < 49; j++) { pinMode(j, OUTPUT);// broches de sortie } for (int k = 0; k < 17 ; k++)// mise des memoires à 0 pour les relais 7 à 23 {mem[k] = 0; }

}

void loop() { while (Serial1.available() == 0); serialA = Serial1.read(); // stocker la valeur reçue dans la variable SerialA pos = serialA - 1; // position dans le tableau (utile à partir de case 7) broche = serialA + 25; // calcul broche de sortie switch (serialA) { case 1: // si arduino reçois le chiffre 1 à 6 case 2: case 3: case 4: case 5: case 6: digitalWrite(broche, LOW); // ferme le relais delay (500); digitalWrite(broche, HIGH);// fin d'impulsion et ouverture du relais break;

case 7: // si arduino reçois le chiffre 7 à 23" case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: if (mem[pos] == 0){ digitalWrite(broche, LOW);// ferme le relais mem[pos]=1;//memoire relais ON } else { digitalWrite(broche, HIGH);// ouvre le relais mem[pos] = 0;//memoire relais OFF break; }

} }

Si on peut faire mieux je suis preneur. Je suis "arduiniste autodidacte depuis 2 mois"

Encore un grand merci pour vos conseils.

GG