Hormis le problème de linéarité et le problème de jeu mécanique (qui n'est pas plus important que sur mes autres gauges bricolées qui sont fluides et précises), je pense que j'ai quand même un problème de code.
Parce que lorsque j'utilise le soft pour tester l'USB-servo en déplaçant le curseur cran par cran avec le clavier, j'ai une bien plus grande précision et fluidité que lorsque je l'utilise avec FS via le SIOC.
Dans FS, chaque noeud gagné est un gros à-coup dans le servo de plusieurs pas (alors que "mécaniquement" le déplacement pourrait se faire beaucoup plus précisément, pas à pas).
Je ne dois pas m'y prendre de la bonne manière avec le script.
Dans mon code, on va de noeud en noeud, alors que ma gauge (servo+mécanique) est capable de plus de précision.
J'ai utilisé l'offset de la vitesse IAS que j'ai converti en noeud en divisant par 128 et je fais mon calcul à partir de cette vitesse convertie en noeud.
Finalement l'offset est 128 fois plus précis que la valeur en noeud que j'utilise.
Voici un morceau de mon script (j'ai pas tout mis, c'est toujours la même chose)
- Code: Tout sélectionner
Var 0000, name init, Value 0
{
&servo_ias = 990
}
Var 0015, name servo_ias, Link USB_SERVOS, Output 6, PosL 190, PosC 515, PosR 990 // servo air speed
{
IF &servo_ias < 190
{
&servo_ias = 190
}
IF &servo_ias > 990
{
&servo_ias = 990
}
}
Var 0016, name ias_fs, Link FSUIPC_INOUT, Offset $02BC, Length 4 // offset IAS x128
{
&IAS_conv = &ias_fs / 128
IF &IAS_conv > 0
{
IF &IAS_conv <= 40
{
L0 = &IAS_conv * 2.13
&servo_ias = 990 - L0
}
}
IF &IAS_conv > 40
{
IF &IAS_conv <= 50
{
L0 = &IAS_conv * 2.54
&servo_ias = 990 - L0
}
}
IF &IAS_conv > 50
{
IF &IAS_conv <= 70
{
L0 = &IAS_conv * 3.12
&servo_ias = 990 - L0
}
}
IF &IAS_conv > 70
{
IF &IAS_conv <= 80
{
L0 = &IAS_conv * 4.03
&servo_ias = 990 - L0
}
}
IF &IAS_conv > 80
{
IF &IAS_conv <= 85
{
L0 = &IAS_conv * 4.1
&servo_ias = 990 - L0
}
}
IF &IAS_conv > 85
{
IF &IAS_conv <= 87
{
L0 = &IAS_conv * 4.24
&servo_ias = 990 - L0
}
}
IF &IAS_conv > 87
{
IF &IAS_conv <= 89
{
L0 = &IAS_conv * 4.3
&servo_ias = 990 - L0
}
}
IF &IAS_conv > 89
{
IF &IAS_conv <= 90
{
L0 = &IAS_conv * 4.43
&servo_ias = 990 - L0
}
}
Parce que si ma gauge peut être fluide et précise "à la main" avec le soft IOcard-test, c'est donc mon code qui est mauvais.

(Je suis en train de mettre 2 vidéos en ligne, une avec le déplacement "manuel" du servo et une avec le SIOC dans FS)