Sensitivity im Flug ändern über einen Kanalimpuls
Erstmal müssen wir PPM definieren:
Wir verbinden den Impuls eines Kanals des Empfängers mit Pin 2 des Arduino (3 geht auch). und sagen dem Arduino dies:
3 - PPM settings
#define PIN_PPM 2 (oder 3)
Wenn wir auf dem Sender auf den Kanal-Monitor schauen, sehen wir, dass die Kanalwerte von -100 über 0 bis + 100 gehen. Dies wird durch eine entsprechende Impulsdauer übermittelt. Der Arduino muss jetzt wissen, welche Impulsdauer in Mikrosekunden -100 und welche +100 entspricht. Laut Definition ist dies 1500 (= Mitte = 0) -512, also 988 und 1500 + 512 = 2012. Allerdings weicht jeder Sender, Empfänger und der Arduino minimal vom Standard ab. Wer es genau wissen will, kann sich von oXs den Wert zurücksenden lassen und die Werte auf seine Geräte anpassen. Das vergessen wir aber erstmal und verwenden die Vorgaben aus oXs oder die obenstehenden, theoretisch exakten Werte, beides wird funktionieren, da die Verstellung der Sensitivity mit 5% Toleranz erfolgt, wie wir gleich sehen. Hier sagen wir dem Arduino die beiden Werte:
#define PPM_MIN_100 980
#define PPM_PLUS_100 1990
Arduino hate jetzt einen Parameter, nämlich PPM, den wir von -100 bis +100 über den Sender ändern können.
4.3 - Sensitivity einstellen über den Sender:
Hier kommen noch ein paar weitere Sensitivity Parameter, die erstmal verwirrend sind:
#define SENSITIVITY_MIN_AT_PPM 10 // Die Sensitivity wird nur dann verändert, wenn der PPM-Wert größer als 10 (+-5)
#define SENSITIVITY_MAX_AT_PPM 40 // und kleiner als 40 (+-5) ist
Diese beiden Zeilen bedeuten: senden wir einen Kanalwert zwischen 5 und 45, ändert oXs seine Sensitivity, und zwar die SENSITIVITY_MIN. Senden wir irgendeinen anderen Wert, passiert der Sensitivity nix. Jetzt definieren wir die beiden Werte für die Sensitivity bei PPM = 10 und bei PPM = 40 ((+-5) aber das ignorieren wir ab jetzt). Hierzu geben wir die gewünschten Werte in folgende Zeilen ein:
#define SENSITIVITY_PPM_MIN 20
#define SENSITIVITY_PPM_MAX 150
Wir ahnen: senden wir einen Kanalwert von 10, dann haben wir jetzt eine SENSITIVITY_MIN von 20, senden wir einen Kanalwert von 40, haben wir eine SENSITIVITY_MIN von 150.
Das schöne ist, dass wir oXs anweisen können, uns die aktuelle Sensitivity im Feld "Fuel" zu übermitteln, so können wir kontrollieren, ob unsere Änderung auch tatsächlich im oXs ankommt. Wir ergänzen folgende Zeile (fett) bei den zu sendenden Daten:
9.1
#define SETUP_FRSKY_DATA_TO_SEND \
DEFAULTFIELD , ALTIMETER , 1 , 1 , 0 ,\
VSpd , PPM_VSPEED , 1 , 1 ,0 , \
Fuel , SENSITIVITY , 1, 1, 0