Page 1 sur 1

Inverser le sens d'un servo

MessagePosté: Ven 3 Fév 2012 00:09
de mikethebike89
Bonjours a tous , j'ai un petit souci
j'ai fait un code pour ma gauge de flaps , mais le problème c'est que mon servo est a l'envers
et je ne trouve pas comment dire a sioc que quand les flaps sont a 16384 le servo est a 311
et quand les flaps sont a 0 le servo doit etre a 711. ecroulerire


Var 0024, name FLAPS, Link FSUIPC_IN, Offset $0BE0, Length 4
{
L0 = &FLAPS * 0.0244140625
L1 = L0 + 311
IF L1 > 711
{
L1 = 711
}
IF L1 < 311
{
L1 = 311
}
&SERVO_FLAPS = L1
}

Merci merci affiche

Re: Inversé le servo

MessagePosté: Ven 3 Fév 2012 01:18
de stevelep
Hello,

servo normal:

0 -> 16384

311 -> 711

Le truc c'est de multiplier par -1 pour renverser le nombre (* -1)
(ainsi plus le nombre est grand plus il devient petit)
ensuite tu multiplie par le facteur de conversion (* 0.0244140625)
et tu décales avec la limite max ( + 711)

-16384 - > 0
711 -> 311

Var 0024, name FLAPS, Link FSUIPC_IN, Offset $0BE0, Length 4
{
L0 = &FLAPS * -1
L0 = L0 * 0.0244140625
L0 = L0 + 711
L0 = LIMIT 311 711 0
}

Je te conseille d'utiliser la fonction LIMIT à la place de tes IF

LIMIT min max 0

beaucoup plus simple ...


CQFD

BOB

Re: Inversé le servo

MessagePosté: Ven 3 Fév 2012 02:07
de mikethebike89
Je te remerci. merci affiche

Re: Inversé le servo

MessagePosté: Ven 3 Fév 2012 09:56
de Colibri
tiens, à propos Bob, à quoi sert le 0 dans la fonction LIMIT ?

Re: Inversé le servo

MessagePosté: Ven 3 Fév 2012 14:19
de tabar57
Bonjour,

Le 3 éme paramètre de limit , donne la valeur de l'incrément.

Pour une fois que je sais répondre ecroulerire

Bernard

Re: Inversé le servo

MessagePosté: Ven 3 Fév 2012 14:59
de Colibri
bravo et merci ! sourirebis
... mais quel incrément ? Si on limite, on limite, que vient faire un incrément là-dedans ?

Re: Inversé le servo

MessagePosté: Ven 3 Fév 2012 23:56
de stevelep
C'est quand tu limites après une addition, tu peux tout faire avec une seule ligne
Par exemple avec un encodeur:


Var 3120, name encoder_alt, Link IOCARD_ENCODER, Input 70, Aceleration 4, Type 2 // ALT encoder
{
&value_alt = LIMIT 0 50000 &encoder_alt
}

La fonction ROTATE est proche de la fonction LIMIT sauf que les extrémités sont "bouclées"
il y a aussi l'incrément (idéal pour un cap)

Var 3120, name encoder_hdg, Link IOCARD_ENCODER, Input 72, Aceleration 4, Type 2 // HEADING encoder
{
&value_hdg = LIMIT 1 360 &encoder_alt
}

Re: Inverser le sens d'un servo

MessagePosté: Sam 4 Fév 2012 12:44
de Colibri
gratgrat

Pas sûr d'avoir tout compris, mais je me repencherai dessus quand j'en aurai besoin (... bientôt, je suis occupé à refaire complétement mon TDB et je dois m'attaquer à un certain nombre de choses qui m'inquiètent au niveau programmation. Mais jusque là, çà va ! sourirebis )

Re: Inverser le sens d'un servo

MessagePosté: Sam 4 Fév 2012 19:15
de tabar57
En tous cas Bob est le roi du sioc, quand je vois son code et ses astuces ....
J'ai appris pleins de choses, merci beaucoup pour ce code Bob je suis en train de revoir un certain nombre de routines et puis l'inversion de servos ... super depuis c'est le mien qui s'inverse tellement je m'étais gratté la tête aussi sur ce problème alors que c'était simple

A+

Bernard