Le
traitement des paramètres
Les
paramètres ont une valeur unique ou variable selon la phase de vol. On
peut les modifier au sol, on peut associer un paramètre à un des
boutons de sélection pour les modifier en vol . Les trims digitaux associés aux sticks sont des paramètres
Tout ceci est bien compliqué à réaliser lorsque la mémoire RAM disponible est rare; essayons de le décrire.
Les variables
Un paramètre comporte une
variable pvar et une ou plusieurs variables vvar.Elles sont définies
dans le programme source par une ou plusieurs lignes INIT.
Par exemple, le programme source comporte
diff: INIT 50 # pas de
condition: cette ligne est toujours vraie
diff: INIT 60 vol
#valeur pour toutes les phases qui commencent par vol
diff: INIT 80
vol.thermique #valeur spécifique pour cette phase
Quelle est leur signification ?
un
paramètre dans une instruction est toujours la variable pvar. Ceci est
la valeur courante du paramètre.Dans le programme source c'est la
variablede gauche (diff: dans l'exemple)
pour modifier un
paramètre, au sol ou en vol, on modifie une variable vvar, qui est la
valeur du paramètre pour une condition de vol.
C'est la valeur qui est à droite dans INIT (par exemple la variable initialisée à 50)
Chaque trim digital est actionné par une paire de boutons poussoirs.
Il y a au total 5 trims digitaux, numérotés de i=0 à i=4
- i=0 est le trim digital utilisé pour modifier un paramètre en vol
- 1 à 4 sont associés aux manches
Le traitement des trims digitaux utilise les variables rc.pvar[i] et rc.vvar[i]
Dans le programme source, l'instruction DTRIM ail: 2 associe le paramètre ail: au trim digital 2.
Le chargement du programme dans le microprocessue utilise la ligne de code 8 pour initialiser la table:
- rc.pvar[2] est l'index de la variable pvar associée au paramètre ail:
- rc.vvar[2] n'est pas encore connu, est initialisé à 255
Une table rc.param_button[i] est utilisée pour la modification en vol d'un paramètre.
Si le bouton 2 est utilisé pour modifier diff: , rc.param_button[2] comporte l'index de la variable pvar associée à diff:
Pour la lecture des boutons poussoirs avec debouncing, la table rc.io_state[PARAM_N +1] note l'état du bouton.
Pour
la lecture des trims digitaux, la table rc. io_timer[DTRIM_N] gère
l'accélération (si on garde le doigt sur le bouton, le mouvement du
trim s'accélère)Les noms des paramètres
Le fichier modelname.md comporte les noms des variables, voici un exemple
5 L010 vol
5 L011 vol.mot
5 L012 vol.therm
5 L013 vol.vitesse
6 N031 prof.trim:qui est la pvar, ceci est le nom "court" du paramètre
6 N033 prof.trim:vol.thermceci sont les vvar, avec le nom "long"
6 N032 prof.trim:vol.vitesseDans la boucle de calcul
L'opération
PHASE détermine la phase active, note son nom et met à True une ou
plusieurs variables logiques . Par exemple, si la phase active est
vol.lent.spirale il y a trois variables mises à la valeur True:
vol.lent.spirale ,vol.lent et vol.
Le traitement de
l'opération INIT copie la valeur de la variable vvar dans la
variable pvar si la variable logique est vraie(ou si l'index de cette
variable logique vaut 255, ce qui signifie qu'il n'y a pas de
condition).
Ensuite, si cette variable pvar figure dans la table rc.pvar[i], l'index de vvar est écrit dans rc.vvar[i], qui est la variable à mettre à jour par les boutons de trim
Lecture des boutons
Dans la boucle de traitement, on trouve
io_butread5();
io_butread100();
La fonction io_butread5 lit les boutons et met à jour la table rc.io_state, pour supprimer les rebonds.
Il
faut ensuite appeler la fonction io_getButton[i] qui renvoie 1 si
le bouton a été enfoncé ( elle ne renvoie 1 qu'une seule fois)
La
fonction io_butread100 lit les boutons des trims digitaux et
appelle io_tick pour chaque trim. Le premier paramètre de io_tick est
l'index de la variable qui est mise à jour par les boutons (en + ou en
-, plus ou moins vite et remise à 0 si on appuie sur les deux boutons à
la fois)
La fonction io_tick modifie une variable d'un "tick" dont l'amplitude augmente si on garde le bouton enfonçé.
La variable modifiée est rc.vvar[i]Le traitement des paramètres
Le menu "Parameters tune" permet de choisir un paramètre (avec le nom long) et de modifier la valeur de cette vvar.
Le menu "Parameter D Trim" permet de choisir un paramètre (avec le nom court ) et de l'affecter à un des 3 boutons situés sous l'écran.
Ceci est enregistré dans rc.param_button[i]= pvar du paramètre.
Lorsqu'en vol on appuie sur le bouton x , cette variable rc.param_button[x] est copiée dans rc.pvar[0], où elle est disponible pour le traitement du trim digital.
©
Copyright 2008 2009 Robert Spilleboudt - Tous droits réservés.
Projet
rcopensource - Licence GPL V2