-Si le cap est à 0°
-Je tourne mon selecteur de cap vers la droite (par exemple 10°) => ça fonctionne
-J'arrête de le tourner
-Je recommence à le tourner dans la même direction (jusque 20°) => ça fonctionne toujours
-Si je recommence à le tourner juste d'un cran dans l'autre direction => il revient d'un seul coup à 0° au lieu de descendre d'un cran.

(Et c'est la même chose de l'autre côté)
A partir du moment ou l'on reste du même côté de la boussole (entre 0 et 180 côté EST), le phénomène ne se produit qu'une seule fois, ensuite ça fonctionne normalement.
Mais si je repasse de l'autre côté de 0° (côté ouest), alors ça va recommencer (une seule fois également si je reste côté ouest)
J'y comprends rien!!!

Voilà mon code: (y'a le CRS, qui fonctionne lui, et ensuite le HDG)
- Code: Tout sélectionner
Var 0510, Link FSUIPC_INOUT, Offset $0C4E, Length 2 // CRS NAV1, GRADU 0-359
Var 0511, Link IOCARD_SW, Input 6 // pusch
Var 0512, Link IOCARD_ENCODER, Input 3, Aceleration 1, Type 2
{
IF V0511 = 1
{
IF V0512 > 0 // turn right
{
V0510 = V0510 + 10
IF V0510 > 360
{
V0510 = 1
}
}
IF V0512 < 0 // turn left
{
V0510 = V0510 - 10
IF V0510 < 1
{
V0510 = 360
}
}
}
ELSE
{
IF V0512 > 0 // turn right
{
V0510 = V0510 + 1
IF V0510 > 360
{
V0510 = 1
}
}
IF V0512 < 0 // turn left
{
V0510 = V0510 - 1
IF V0510 < 1
{
V0510 = 360
}
}
}
}
Var 0505, Link FSUIPC_OUT, Offset $07CC, Length 2 // Heading Bug
Var 0506, Link IOCARD_SW, Input 5 // pusch Heading Bug
Var 0507, Link IOCARD_ENCODER, Input 7, Aceleration 1, Type 2
{
IF V0506 = 1
{
IF V0507 > 0 // turn right
{
V0505 = V0505 - 1820
IF V0505 > 65536
{
V0505 = V0505 - 65536
}
}
IF V0507 < 0 // turn left
{
V0505 = V0505 + 1820
IF V0505 < 1
{
V0505 = V0505 + 65536
}
}
}
ELSE
{
IF V0507 > 0 // turn right
{
V0505 = V0505 - 182
IF V0505 > 65536
{
V0505 = 1
}
}
IF V0507 < 0 // turn left
{
V0505 = V0505 + 182
IF V0505 < 1
{
V0505 = 65536
}
}
}
}