Page 1 sur 3

[TUTO SIOC] La fonction TIMER

MessagePosté: Mar 5 Avr 2016 14:13
de mameloose
et rebonjour ! tonton Mameloose a la rescousse !

aujourd'hui petite explication de la fonction TIMER pratique pour reguler la vitesse d'une servo par exemple ...


en gros la fonction timer permet d'assigner une valeur mais dans le temps que l'ont veux .... (hum pas très clair tout ca ...)

exemple :

j'ai une servo d'indication de volet par exemple .... dans un code classique comme celui qui suit j'ai declaré la variable de position volet ainsi que ma servo :

Image

voila donc maintenant les valeurs de positions volet pour un cessna par exemple sont :

0=0
10=5475
20=10907

maintenant si je veux que ma servo soit synchronisée avec mes volet je releve les positions de ma servo en la bougeant avec sioc monitor

jobtient pour exemple

servo 0=0
servo 10=256
servo 20=345

voila donc bien sur nimporte qui assignerai la fonction IF de cette maniere :

Image


MAIS UN PROBLEME SURVIENT !

la servo bouge beaucoup trop vite et ce n'est pas realiste !!


donc pour reguler cette vitesse on utilise la fonction TIMER


elle se definit comme ceci :

Image

donc pour un timer on renseigne notre variable qui prendra tel valeur de tant en tant a chaque impulsion de tant de centieme de seconde


en gros au lieu d'aller de 0 a volet 10 en une fraction de seconde elle mettera environ 25 secondes ! c'est plus realiste et plus fluide !

on peux bien sur changer le temps en centieme de seconde au lieu de 10 si je met 100 alors chaque impulsion sera de 10 seconde !

donc pour aller de zero a 256 ma servo mettera 256 secondes a y aller ! (c'est beaucoup trop long bien sur mais c'est pour lexemple)


voila ducoup pour le code ca donne cela :


Image

BON une expliquation s'impose ....

ici le code va dans les deux sens

un sens positif et un sens negatif

donc si la valeurs des positions volet augmente alors la servo incremente de 1en 1 toutes les 0.1 seconde

et a l'inverse si la valeur volet diminue alors on decremente de -1 en -1

Image

ici en partie 1 l'incrementation
et en partie 2 la decrementation


voila et le principe et le meme pour des valeurs de volet plus grandes comme sur un 737 par exemple et on peux changer le temps pour chaque position !


voila la fonction Timer est pratique egalement pour fabriquer un chronometre ou ajouter du temps entre des actions de variable quelconque .....

Re: tuto sioc la fonction TIMER

MessagePosté: Mar 5 Avr 2016 16:08
de Boutondair
Encore un très joli partage

merci affiche

David cligneoeil grandsoleil

Re: tuto sioc la fonction TIMER

MessagePosté: Mar 5 Avr 2016 17:14
de mameloose
grandsoleil cligneoeil

Re: tuto sioc la fonction TIMER

MessagePosté: Mar 5 Avr 2016 18:09
de pierre01
Très bon tuto mameloose !

J'utilise cette également cette fonction pour limiter la vitesse de montée de mes jauges carburant.

Ça marche très bien sauf dans un cas et tu vas peut-être pouvoir m'aider :

Quand je met "batterie ON", les jauges montent lentement jusqu'à l'indication correcte du niveau carburant.
idem pour "batterie OFF", elles redescendent à zéro.

MAIS :

Si je mets "batterie ON" puis "batterie OFF" AVANT que les jauges soient au max, elles s'arrêtent et restent à cette place.
Puis, si je remet "batterie ON", elles se remettent à monter jusqu'au max puis redescendent à zéro ET Y RESTENT ... blemeblanc
Je suis donc en contradiction : "batterie ON" et jauges à zéro.
Il faut que je fasse "batterie OFF" (les jauges ne bougent pas) puis à nouveau "batterie ON" et tout rentre dans l'ordre ...

Qu'en penses tu ?

Et merci pour tes tutos.

Re: tuto sioc la fonction TIMER

MessagePosté: Mar 5 Avr 2016 18:33
de fab
Il faudrait pouvoir "stopper" un timer, mais je n'ai pas trouvé l'astuce ?

Fabien

Re: tuto sioc la fonction TIMER

MessagePosté: Mar 5 Avr 2016 18:41
de mameloose
ah un dileme pour moi !
as tu un bout de code que je jette un oeil la dessus ??

Re: tuto sioc la fonction TIMER

MessagePosté: Mar 5 Avr 2016 18:42
de arcc
Ah super. Voila une fonction qui m'intéresse pour les servos de mes jauges de fuel et de pression de mon Twin.

Merci à toi.

A+
Christian

Re: tuto sioc la fonction TIMER

MessagePosté: Mar 5 Avr 2016 20:37
de C6_Pat
Aaaahhhhhh ! ça devenait carrément intenable tout ce temps sans tuto Greg roicouronne

Re: tuto sioc la fonction TIMER

MessagePosté: Mar 5 Avr 2016 20:49
de mameloose
mdr chouettedoights

Re: tuto sioc la fonction TIMER

MessagePosté: Mar 5 Avr 2016 21:04
de pierre01
Exact fab, je n'y suis pas arrivé non plus ...

Mon code :
Code: Tout sélectionner
Var 4181, name sub_fuel_left, link subrutine    // Suppresion bug ON OFF sw_bat
{
  &val_fuel_left = &fs_fuel_left / 83886.08      // de 0 à 100%  :  128 * 65536 / 100
  L0 = &val_fuel_left * 6.8          // "a" (y = ax)
  L1 = L0 + 170                // "b" (y = ax + b) -> nouvelle valeur servo
  L1 = LIMIT 150 900 0            // Limite amplitude servo de 150 à 900
  IF &courant = 0               // Si pas de courant
  {
    L1 = 170                  // L1 = Valeur mini pour servo
  }
  &tmp_fuel_left = L1 - &old_fuel_left      // Différence new - old valeur
  L2 = 4                     // Si &tmp_fuel_left >= 0 (évite un "IF") - Sens "TIMER"
  IF &tmp_fuel_left < 0             // Si la nouvelle valeur servo < à l'ancienne
  {
    L2 = -4                     // L2 négatif
  }
  IF &tmp_fuel_left <> 0         // Si le servo doit changer
  {
    &serv_Fuel_L = TIMER L1 L2 1   // Envoie valeur au servo par pas de 4 avec timer 2/10° de s
    &old_fuel_left = L1             // Stok nouvelle valeur servo pour prochaine modif
  }
}


édit : arcc :
Ma routine fonctionne très bien hormis le pb que j'expose plus haut !