]> git.piffa.net Git - aerei/blob - esempi/snippets/lettura_servo_ch_pulse/lettura_servo_ch_pulse.ino
f138c84ce7db7ef089db54da639714035db56dbd
[aerei] / esempi / snippets / lettura_servo_ch_pulse / lettura_servo_ch_pulse.ino
1
2 /* Lettura di un canale servo della RX
3
4    Lettura tramite la finzione pulsein
5    Utilizzabile su qualunque PIN
6
7 */
8
9 #include <common.h>
10
11 unsigned long currentMillis; // timestamp reference per millis per tutto il loop
12
13 // Variabili
14 const byte chPin = A4; // PIN su cui e' collegato il canale
15 long unsigned chStamp = 0; // Timestamp per
16 unsigned int chIn = 1500; // Valore catturato
17 unsigned int chValue = 1500; // Valore computato
18 unsigned int freq = 200 ; // Ogni quanti millisecondi leggere il valore
19 // Attenzione che pulsein e' blocking
20
21 void setup() {
22     // Funzione relativa a calibrazione:
23 //    mid_point =  calibraTrim(chPin) ; // + LED di servizio per monitor calibrazione
24 } ;
25
26 void loop() {
27     currentMillis = millis(); // Timestamp per tutto il loop
28
29 // Lettura ailerons channel ogni 200ms
30     if (currentMillis - chStamp >= freq) {
31         chStamp = currentMillis ;
32
33         chIn = pulseIn(chPin, HIGH, 25000);
34         if (chIn != 0 && chIn > 1000 && chIn <2000)  {
35             // get only resonable values
36             chValue = chIn;
37         } ;
38 // Lettura Aileron channel: FAKE con un potenziometro 10K
39 // chIn = analogRead(chPin);
40 // chValue = 1000 + chIn
41     };
42
43
44 // do something with    chValue
45 }