]> git.piffa.net Git - aerei/blob - esempi/snippets/lettura_servo_ch_pulse_millis/lettura_servo_ch_pulse.ino
Readme
[aerei] / esempi / snippets / lettura_servo_ch_pulse_millis / 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. Con la variabile freq
9    si imposta ogni quanto fare una lettura.
10
11
12 */
13
14 #include <common.h>
15
16 unsigned long currentMillis; // timestamp reference per millis per tutto il loop
17
18 // Variabili
19 const byte chPin = A4; // PIN su cui e' collegato il canale
20 long unsigned chStamp = 0; // Timestamp per
21 unsigned int chIn = 1500; // Valore catturato
22 unsigned int chValue = 1500; // Valore computato
23 unsigned int freq = 200 ; // Ogni quanti millisecondi leggere il valore
24 // Attenzione che pulsein e' blocking
25
26 void setup() {
27     // Funzione relativa a calibrazione:
28 //    mid_point =  calibraTrim(chPin) +10 ; // Con pulse in c'e' una traslazione ~10
29 //Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
30 } ;
31
32 void loop() {
33     currentMillis = millis(); // Timestamp per tutto il loop
34
35 // Lettura ailerons channel ogni 200ms
36     if (currentMillis - chStamp >= freq) {
37         chStamp = currentMillis ;
38
39         chIn = pulseIn(chPin, HIGH, 25000);
40         if (chIn != 0 && chIn > 1000 && chIn <2000)  {
41             // get only resonable values
42             chValue = chIn;
43         } ;
44     };
45
46 // do something with    chValue
47 //    Serial.print(chValue);
48 //    Serial.print(" - base: ");
49 //    Serial.println(mid_point);
50 //    delay(200);
51
52 }