]> git.piffa.net Git - aerei/blob - esempi/snippets/lettura_servo_ch_pulse/lettura_servo_ch_pulse.ino
Yak
[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 funzione pulsein
5    Utilizzabile su qualunque PIN
6
7    Il codice e' blocking fin tanto che il segnale passa da RISE a FALL
8    quindi blocca per 1-2ms a ogni esecuzione.
9    
10    Il segnale dalla rx dovrebbe essere ~50hz,
11    vedere questo sketch $_millis con lettura a intervalli programmabili.
12
13 */
14
15 #include <common.h>
16
17
18 // Variabili
19 const byte chPin = 2; // PIN su cui e' collegato il canale
20 unsigned int chIn = 1500; // Valore catturato
21 unsigned int chValue = 1500; // Valore computato
22 // Attenzione che pulsein e' blocking
23
24 // Variabili per autocalibrazione
25 int mid_point = 1500;
26
27 void setup() {
28     // Funzione relativa a calibrazione:
29     mid_point =  calibraTrim(chPin)  ; 
30
31 Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
32 };
33
34 void loop() {
35 // Lettura canale
36         chIn = pulseIn(chPin, HIGH, 25000);
37         if (chIn > 1000 && chIn <2000)  {
38             // Scartiamo valori fuori range, talvolta pero' alcune RX
39             // hanno il minimo un po' sotto a 1000
40             chValue = chIn;
41     };
42
43 // do something with    chValue
44
45     Serial.print(chIn);
46     Serial.print(" > chValue= ");
47     Serial.print(chValue);
48     Serial.print(" - base: ");
49     Serial.println(mid_point);
50     delay(200);
51 }