--- /dev/null
+---
+layout: post
+title: "Lettura dati canli RX con PulseIn"
+date: 2017-02-13 05:14:16 +0100
+categories: snippets
+---
+
+# PulseIn
+
+PulseIn e' il modo piu' semplice per decodificare un canale PWM in ingresso, puo' lavorare su qualunque PIN che possa essere utilizzato come *INPUT*. Il problema e' che la funzione e' blocking: mentre viene misurata la lunghezza dell'intervallo il processore non puo' fare altro.
+
+Quindi possiamo anticipare un blocco di circa 1.5ms (media tra il minimo di 1ms e il massimo di 2ms) ogni 20ms (se la TX manda un impulso a ~50Hz, la FRSky che sto utilizzando ha un periodo di 18ms ma puo' essere impostata anche a 8ms).
+
+Questo puo' non avere un grosso effetto su dei lampeggi da 500ms ma e' influente su dei FADE o ovviamente la lettura di altri eventuali INPUT! Una soluzione potrebbe essere di lanciare la lettura con una frequenza minore, ad es. 5 volte al sec puo' essere adeguato per leggere un interruttore, vedi esempio di pulseIn con millis.
+
+
+Soluzione migliore: utilizzare gli interrupts.
+
+## Lettura di un canale
+
+
+{% highlight ruby %}
+{% include_relative /repo/esempi/snippets/lettura_servo_ch_pulse/lettura_servo_ch_pulse.ino %}
+{% endhighlight %}
+
+
+
+## Lettura di un canale con millis
+
+{% highlight ruby %}
+{% include_relative /repo/esempi/snippets/lettura_servo_ch_pulse_millis/lettura_servo_ch_pulse_millis.ino %}
+{% endhighlight %}