- Code: Tout sélectionner
// X-Plane objects
FlightSimInteger Engine_RPM1;
ensuite je setup les variable (le serial est pour le contrôleur de servo, me permettant de contrôler 8 servo avec une seul Output et je peut en ajouter plusieurs en série)
- Code: Tout sélectionner
// setup runs once, when Teensy boots.
//
void setup()
{
// initialize all hardware
Serial1.begin(38400);
for(int i=0;i<8;i++)
{
Serial1.print(128,BYTE); //start
Serial1.print(1,BYTE); //device ID
Serial1.print(0,BYTE); //command; set parameters
Serial1.print(i,BYTE); //servo num: servo i
Serial1.print(79,BYTE); // servoi on, fwd, range full
/*
delay(10);
Serial1.print(128,BYTE); //start
Serial1.print(1,BYTE); //device ID
Serial1.print(1,BYTE); //command; set speed
Serial1.print(i,BYTE); //servo num: servo i
Serial1.print(100,BYTE); // servoi speed
*/
}
j'attache ensuite la variable déclarer plus haut a un DataRef
- Code: Tout sélectionner
// configure the X-Plane variables
Engine_RPM1 = XPlaneRef("sim/cockpit2/engine/indicators/engine_speed_rpm[0]");
Engine_RPM1.onChange(update_RPM1);
}
La fonction loop est exécuter en permanence. elle ne fait que demander a X-Plane si la/les variable a/on changé
- Code: Tout sélectionner
// loop runs repetitively, as long as Teensy is powered up
//
void loop()
{
// normally the first step in loop() should update from X-Plane
FlightSim.update();
}
si le RPM a changer X-plane envoie la nouvelle valeur et le Teensy exécute la fonction correspondante. celle-ci est particulièrement longue puisque je doit m'assuré que l'indicateur est alimenter par la batterie, ensuite je "map" la valeur pour la faire correspondre a ce que le contrôleur veux (0-255). ensuite je sépare cette donner en deux pour pouvoir l’envoyer en deux Byte de 7 bit, encore une fois a cause de contrôleur.
- Code: Tout sélectionner
void update_RPM1(long val)
{
if (Batterie_power == 0)
{
val = 0;
}
int RPM = map(val,0,6000,225,25);
byte temp;
byte pos_hi,pos_low;
temp = RPM & 0x80; //get bit 8 of position
pos_hi = temp >> 7; //shift bit 8 by 7
pos_low = RPM & 0x7f; //get lower 7 bits of position
Serial1.print(128,BYTE); //start
Serial1.print(1,BYTE); //device ID
Serial1.print(3,BYTE); //command: set position 8 bits
Serial1.print(0,BYTE); //servo num: servo 0
Serial1.print(pos_hi,BYTE); //bits 8 thru 13
Serial1.print(pos_low,BYTE); //bottom 7 bits
}
j’espère que je suis compréhensible

peut-tu me donner un lien pour le PVC? c'Est la première fois que j'en entend parler.
edit: j'oubliait, le Teensy communique par USB