X-Git-Url: http://git.piffa.net/web?a=blobdiff_plain;f=esempi%2Fsnippets%2Flettura_servo_ch_pulse_millis%2Flettura_servo_ch_pulse.ino;fp=esempi%2Fsnippets%2Flettura_servo_ch_pulse_millis%2Flettura_servo_ch_pulse.ino;h=abee674b880946fb90715f0d7a8918d3fdd35a53;hb=b8a84f85fea878902ab2e9c7ac65525d7abafd24;hp=0000000000000000000000000000000000000000;hpb=4f1a2108ba34533e92d1aa7e84328ea36df08f22;p=aerei diff --git a/esempi/snippets/lettura_servo_ch_pulse_millis/lettura_servo_ch_pulse.ino b/esempi/snippets/lettura_servo_ch_pulse_millis/lettura_servo_ch_pulse.ino new file mode 100644 index 0000000..abee674 --- /dev/null +++ b/esempi/snippets/lettura_servo_ch_pulse_millis/lettura_servo_ch_pulse.ino @@ -0,0 +1,52 @@ + +/* Lettura di un canale servo della RX + + Lettura tramite la funzione pulsein + Utilizzabile su qualunque PIN + + Il codice e' blocking fin tanto che il segnale passa da RISE a FALL + quindi blocca per 1-2ms a ogni esecuzione. Con la variabile freq + si imposta ogni quanto fare una lettura. + + +*/ + +#include + +unsigned long currentMillis; // timestamp reference per millis per tutto il loop + +// Variabili +const byte chPin = A4; // PIN su cui e' collegato il canale +long unsigned chStamp = 0; // Timestamp per +unsigned int chIn = 1500; // Valore catturato +unsigned int chValue = 1500; // Valore computato +unsigned int freq = 200 ; // Ogni quanti millisecondi leggere il valore +// Attenzione che pulsein e' blocking + +void setup() { + // Funzione relativa a calibrazione: +// mid_point = calibraTrim(chPin) +10 ; // Con pulse in c'e' una traslazione ~10 +//Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi +} ; + +void loop() { + currentMillis = millis(); // Timestamp per tutto il loop + +// Lettura ailerons channel ogni 200ms + if (currentMillis - chStamp >= freq) { + chStamp = currentMillis ; + + chIn = pulseIn(chPin, HIGH, 25000); + if (chIn != 0 && chIn > 1000 && chIn <2000) { + // get only resonable values + chValue = chIn; + } ; + }; + +// do something with chValue +// Serial.print(chValue); +// Serial.print(" - base: "); +// Serial.println(mid_point); +// delay(200); + +}