Bonjour à tous,
Je reviens vers vous car j'ai encore un soucis de matériel et/ou programmation (je sais pas trop où est le soucis) avec mes jauges cette fois-ci. En gros, depuis le ré-assemblement de mon bureau, et malgré toutes les manips effectuées lors du soucis précédent (qui a été réglé suite au déplacement d'une pin ground), mes servo-motors continuent à répondre bizarrement. Pourtant, pour 2 d'entre eux (sur 4), aucune manip sur les arduino n'a été effectuée (pas de déplacement de broche). Les ports usb ont été déplacés sur le hub mais réinstallés un par un avec le logiciel fourni par siminnovation. Je vous décris les soucis, qui semblent différents pour mes deux paires de jauges mais peut-être une même origine...
1. Les jauges du press duct sur l'overhead panel : alors qu'elles fonctionnaient parfaitement, maintenant (et sans aucune modif du code), elles ne bougent plus correctement. En gros, le point 0 reste correct. Ainsi, quand le jeu renvoie une valeur 0, les aiguilles reprennent bien leur position initiale sur le 0. Toutefois, lorsque j'envoie (soir via P3D, soit via la console AM), une valeur de 20, l'aiguille va jusque sur le 40 de la jauge (alors qu'elle tombait juste avant). Si je mets une valeur de 40, là elle n'avance plus du tout. Un soucis peut-être avec le point 0 du moteur, qui atteint son cycle maximum à une valeur de 20 et donc forcément ne bouge plus après. Ce qui est étrange, c'est la valeur d'initiation du dutycyle dans le code n'a pas été changée. Voici d'ailleurs le code qui y est lié.
- Code: Tout sélectionner
function R_engine_air_callback (Val)
hw_output_pwm_duty_cycle(airduct_R_engine, 0.05+(Val*0.05/80))
end
airduct_R_engine = hw_output_pwm_add("ARDUINO_MEGA2560_E_D5", 50, 0.075)
fsx_variable_subscribe("PMDG 737NGX:AIR_DuctPressNeedle:2", "NUMBER", R_engine_air_callback)
function L_engine_air_callback (Val)
hw_output_pwm_duty_cycle(airduct_L_engine, 0.05+(Val*0.05/80))
end
airduct_L_engine = hw_output_pwm_add("ARDUINO_MEGA2560_E_D6", 50, 0.075)
fsx_variable_subscribe("PMDG 737NGX:AIR_DuctPressNeedle:1", "NUMBER", L_engine_air_callback)
2. Les jauges de flaps : alors qu'elles fonctionnaient très bien, elles ont, depuis le changement de mon bureau, cessé de fonctionner. Pourtant de nouveau, aucun changement au niveau des branchements sur les pins de l'arduino, même manip que dans le point précédent. Les autres éléments hardware branchés sur l'arduino, même sur les ports voisins, fonctionnent sans soucis. J'ai testé ces deux jauges sur deux cartes différentes, même soucis. J'ai même cru, au départ à un soucis de servo motor. Je les ai remplacés et même résultats, plus de réaction. Est-ce de nouveau lié à un changement dans les valeurs du duty cycle ? Pourtant, j'ai vérifié les spécificités techniques des servo motors sg90, les valeurs que JacquesZ m'avaient fournies sont correctes. Pour ces deux jauges de flaps, au démarrage du programme sur Air Manager, elles bougent, se positionnent à un point puis ne réagissent plus aux valeurs envoyées, que ce soit par P3D ou directement dans la console. Voici le code pour vous faire une idée :
- Code: Tout sélectionner
function R_flaps_callback (Val)
if Val == 0.0 then
hw_output_pwm_duty_cycle(R_flaps_gauge, 0.067)
end
if Val == 1.0 then
hw_output_pwm_duty_cycle(R_flaps_gauge, 0.074)
end
if Val == 2.0 then
hw_output_pwm_duty_cycle(R_flaps_gauge, 0.081)
end
if Val == 5.0 then
hw_output_pwm_duty_cycle(R_flaps_gauge, 0.089)
end
if Val == 10.0 then
hw_output_pwm_duty_cycle(R_flaps_gauge, 0.097)
end
if Val == 15.0 then
hw_output_pwm_duty_cycle(R_flaps_gauge, 0.104)
end
if Val == 25.0 then
hw_output_pwm_duty_cycle(R_flaps_gauge, 0.111)
end
if Val == 30.0 then
hw_output_pwm_duty_cycle(R_flaps_gauge, 0.117)
end
if Val == 40.0 then
hw_output_pwm_duty_cycle(R_flaps_gauge, 0.125)
end
end
R_flaps_gauge = hw_output_pwm_add("ARDUINO_MEGA2560_I_D5", 50, 0.075)
fsx_variable_subscribe("PMDG 737NGX:MAIN_TEFlapsNeedle:2", "NUMBER", R_flaps_callback)
function L_flaps_callback (Val)
if Val == 0.0 then
hw_output_pwm_duty_cycle(L_flaps_gauge, 0.065)
end
if Val == 1.0 then
hw_output_pwm_duty_cycle(L_flaps_gauge, 0.073)
end
if Val == 2.0 then
hw_output_pwm_duty_cycle(L_flaps_gauge, 0.080)
end
if Val == 5.0 then
hw_output_pwm_duty_cycle(L_flaps_gauge, 0.089)
end
if Val == 10.0 then
hw_output_pwm_duty_cycle(L_flaps_gauge, 0.096)
end
if Val == 15.0 then
hw_output_pwm_duty_cycle(L_flaps_gauge, 0.1055)
end
if Val == 25.0 then
hw_output_pwm_duty_cycle(L_flaps_gauge, 0.112)
end
if Val == 30.0 then
hw_output_pwm_duty_cycle(L_flaps_gauge, 0.118)
end
if Val == 40.0 then
hw_output_pwm_duty_cycle(L_flaps_gauge, 0.125)
end
end
L_flaps_gauge = hw_output_pwm_add("ARDUINO_MEGA2560_I_D6", 50, 0.075)
fsx_variable_subscribe("PMDG 737NGX:MAIN_TEFlapsNeedle:1", "NUMBER", L_flaps_callback)
Quelqu'un parmi vous aurait-il des pistes de solutions et/ou tests à effectuer pour y voir plus clair ? La dernière fois, vos pistes m'ont indirectement permis de trouver l'origine du problème donc, je fais à nouveau appel à vos idées géniales.
Merci d'avance,
Hadrien