Salve a tutti vorrei condividere con tutti voi un progetto trovato su djiguys.com che potrebbe fare comodo a tutti quelli che usano la ricevente originale della Turnigy 9x e che quindi non ha la funzione del failsafe.
Ho provveduto a migliorare leggermente il codice per renderlo più rapido nei cambi di modalità e ho modificato la tempistica della lettura ppm perchè nel progetto originale non funzionava.
So che si potrebbe semplicemente acquistare il modulo FrSky per avere una funzione di failsafe, ma io al momento non ho i fondi per poter fare questo cambio e penso che altri siano nella mia stessa situazione.
In pratica questo piccolo circuitino va collegato in serie tra rx e canale U della naza come nell'immagine allegata.
Il codice da caricare nel Arduino è il seguente:
Citazione:
int ch1; // variabile con il valore del canale monitorato
int led = 13; // pin dove è connesso il led di stato
#include <Servo.h> // carico libreria servo
Servo myservo; // crea loggetto di tipo Servo
void setup() {
pinMode(12, INPUT); // Setto il pin 12 come input
pinMode(led, OUTPUT); // Setto il pin del led come oputput
myservo.attach(11); // Dichiaro il pin dove collegare il canale U della naza
}
void loop() {
ch1 = pulseIn(12, HIGH, 30000); // Leggo il segnale ppm dalla rx
if(ch1<1600 && ch1>1500){ // se il valore letto è compreso tra 1600 e 1500
myservo.write(95); // setto in uscita il valore servo 95, che la naza interpreta come ATTI mode
digitalWrite(led, LOW); // led spento
}
if(ch1<1200 && ch1>1100){ // se il valore letto è compreso tra 1200 e 1100
myservo.write(63); // setto in uscita il valore servo 63, che la naza interpreta come MANUAL mode
digitalWrite(led, LOW); // led spento
}
if(ch1<1900 && ch1>1800){ // se il valore letto è compreso tra 1900 e 1800
myservo.write(127); // setto in uscita il valore servo 127, che la naza interpreta come GPS mode
digitalWrite(led, LOW); // led spento
}
if(ch1<1700 && ch1>1600 || ch1<100){ // se il valore letto è compreso tra 1700 e 1600 o minore di 100
myservo.write(110); // output the a servo signal of 110, wich the naza interprets as FAILSAFE mode
digitalWrite(led, HIGH); // accende il led sul pin 13 di arduino per comunicare il failsafe
}
}
|
Spero di esservi stato d'aiuto.
Ciao.