Je pensai faire cela avec un seul arduino… pilotant l'ensemble… cela afin que le fail safe, le capteur d'eau (interne (pour vidange du balaste) et externe (pour la mise en route des moteurs)), le gouvernail et les moteurs puisse interagir simplement avec le reste du programme sans liaison…
d'autre part les ballastes seraient pilotés via un potar 6 positions indiquant le niveau de remplissage : celui ci est capté par un effet de hall de l'aimant suivant le deplacement du ballast (et ILS et contacteur de fin de course)… Il me faut donc un sytème pour lire les données et les gerer le moteur balaste via un transistor mofset et un relais pour l'inversion…
Dans la baignoire j'ai pour projet de mettre un attiny84 pour eclairage et sortie periscopique dès que les "marches"(barreaux d'acces au kiosque du VIIC) sont hors eau… je m'interrogeai pour le correcteur d'assiette pour savoir si je l'integre ou pas au système… (avec ta réponse je pense qu'il sera indépendant comme sur http://bateaux.trucs.free.fr/correcteur_attiny.html)
"En effet, comment fera tu si tu a besoin de tes ballasts en même temps que ta propulsion ? Tu ne pourra pas !"…
j'ai vu un système qui permet le "multifonction" en asynchrone … je crois… d'après ce que j'ai lu il ne faut evidement pas gérer de timing et/ou stoppé la boucle du programme… mais peut être a tu raison… mais dans ce cas tout l'interet du système (gestion de la propulsion et de la gouverne) devient obsoléte…
pour la structure je suis d'accord :
Code : Tout sélectionner
Init
Programme principal
-> Lire les données issue du récepteur
-> Lire les données issue du ballaste
-> Lire les données issue des capteurs d'eau
-> Lire les données issue electrique (voltmetre / fale safe)
-> Lire les données issue de l'accelerometre (correcteur d'assiette)
-> Faire un traitement des données
-> stocker le traitement
-> Ecrire sur les sorties
-> générer la pwm moteur propulsion
-> générer la pwm moteur pompe
-> gérer le servo gouvernail (c'est la que ça coince !!!)
-> gérer le servo barre profondeur (c'est la que ça coince !!!)
-> faire autre chose (beaucoup de café)
par contre les servos demandent effectivement un laps de temps jusqu'à la fin de sa course (de l'info transmise)… c'est là que ça va coincer peut être… (faut verifier l'histoire de la solution l'asynchrone)
Pour la fonction (pas logarithmique mais exponentielle "désolé")
j'ai trouvé ça :
Code : Tout sélectionner
double exp (double __x) // function returns the exponential value of x.