2 /* Lettura di un canale servo della RX
4 Lettura tramite la funzione pulsein
5 Utilizzabile su qualunque PIN
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.
17 unsigned long currentMillis; // timestamp reference per millis per tutto il loop
20 const byte chPin = 2; // PIN su cui e' collegato il canale
21 long unsigned chStamp = 0; // Timestamp per
22 unsigned int chIn = 1500; // Valore catturato
23 unsigned int chValue = 1500; // Valore computato
24 unsigned int freq = 200 ; // Ogni quanti millisecondi leggere il valore
25 int mid_point = 1500; // Punto medio per calibrazione
26 // Attenzione che pulsein e' blocking
29 // Funzione relativa a calibrazione: per il throttle si puo' evitare
30 mid_point = calibraTrim(chPin) ;
33 Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
38 currentMillis = millis(); // Timestamp per tutto il loop
40 // Lettura ailerons channel ogni 200ms
41 if (currentMillis - chStamp >= freq) {
43 chIn = pulseIn(chPin, HIGH, 25000);
44 if (chIn != 0 && chIn > 1000 && chIn <2000) {
45 // get only resonable values
47 chStamp = currentMillis ;
51 // do something with chValue
53 Serial.print(chValue);
54 Serial.print(" - base: ");
55 Serial.println(mid_point);