BaroneRosso.it - Forum Modellismo - Visualizza messaggio singolo - Micro failsafe per Naza-m con turnigy 9x e Arduino
Visualizza messaggio singolo
Vecchio 05 gennaio 17, 19:44   #1 (permalink)  Top
100000watt
User
 
Data registr.: 22-07-2014
Residenza: Pordenone
Messaggi: 59
Micro failsafe per Naza-m con turnigy 9x e Arduino

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 l’oggetto 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.
Icone allegate
Micro failsafe per Naza-m con turnigy 9x e Arduino-schermafbeelding2014-04-20om132708_zps4daf9bba.jpg  
100000watt non è collegato   Rispondi citando