]> git.piffa.net Git - aerei/blob - esempi/snippets/lettura_servo_ch_pulse/lettura_servo_ch_pulse.ino
Snippets per leggere i canali dei servo
[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 = A4; // 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) - 10; // Con pulse in si toglie 10
30 Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
31
32 } ;
33
34 void loop() {
35
36 // Lettura ailerons channel ogni 200ms
37         chIn = pulseIn(chPin, HIGH, 25000);
38         if (chIn != 0 && chIn > 1000 && chIn <2000)  {
39             // get only resonable values
40             chValue = chIn;
41     };
42
43
44 // do something with    chValue
45     Serial.print(chValue);
46     Serial.print(" - base: ");
47     Serial.println(mid_point);
48     delay(200);
49 }