Visualizza messaggio singolo
Vecchio 11 febbraio 14, 22:49   #5 (permalink)  Top
faustog_2
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
arduino Leonardo & Micro

allora ho avuto il tempo di studiare.. e fare le prove in effetti la funzione pulseIn risolve molto bene il discorso, una precisione paragonabile a quella che si ottiene lavorando con i registri del Timer del capture e del modulo compare.. circa 8 microsecondi rileva da un estremo 873 uS dall'altro estremo 2073 uS così come usando direttamente i registri... . Di seguito giusto una demo per leggere il segnale di una ricevente e inviarla alla seriale. C'è da dire che conviene usare una scheda LEONARDO o arduino Micro perchè hanno piu porte digitali a disposizione e piu pin per interrupt esterni... da attenzionare però il Serial.println.... che in effetti risulta rallentare il PC... per ovviare questo problema mi sono accorto che mi è sufficiente usare una semplice applicaziione scritta in java.... insomma basta evitare il serial monitor.. adesso tutto OK , poi per creare il PPM per muovere i servo.. si può usare delayMicroseonds ......in questo modo non utilizzando il timer1 che invece viene usato dalla funzione puklseInt... i valori conviene prenderli con la specifica long volatile.

const int inputpin = 2;

long val;

void setup()
{
pinMode(inputpin, INPUT);
Serial.begin(9600);
val = pulseIn(inputpin,HIGH,25000);
}
//_________________________________________
void loop()
{
Serial.println(val);
val = pulseIn(inputpin,HIGH,25000);
}


Spero di essere stato utile ai lettori.. a presto fausto


Citazione:
Originalmente inviato da Se1972 Visualizza messaggio
Non è affatto difficile, ci sono le librerie già fatte per leggere uno o piu segnali ppm. Poi li puoi modificare come ti piace sommandoli anche tra di loro e li ributti fuori su uno o piu canali.
Immagino che vuoi fare un mixer che non hai in radio. Io sto progettando un governor con controllo temperatura e carburazione per un elicottero a benzina.

Ciao
faustog_2 non è collegato   Rispondi citando