BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Micro failsafe per Naza-m con turnigy 9x e Arduino (https://www.baronerosso.it/forum/circuiti-elettronici/366487-micro-failsafe-per-naza-m-con-turnigy-9x-e-arduino.html)

100000watt 05 gennaio 17 18:44

Micro failsafe per Naza-m con turnigy 9x e Arduino
 
1 Allegato/i
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.


Tutti gli orari sono GMT +2. Adesso sono le 23:37.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002