]> git.piffa.net Git - aerei/blob - esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino
errata
[aerei] / esempi / snippets / lettura_servo_interrupt / lettura_servo_interrupt.ino
1
2 /* Lettura di un canale servo della RX
3
4    Lettura tramite uno dei due external interrupt ala Arduino
5    Utilizzabile solo sui PIN 2-3
6
7 */
8
9 #include <common.h>
10 #define DEBUG
11
12 // Variabili per interrupt 0
13 volatile unsigned int chValue = 1500; // Valore computato
14 volatile unsigned int chStart = 1500; // Inizio rilevamento
15
16 // Variabili per autocalibrazione
17 const byte chPin = 2; // PIN per la calibrazione
18 int mid_point = 1500;
19
20 void setup() {
21     // Funzione relativa a calibrazione con pulsein:
22 //    mid_point =  calibraTrim(chPin) ; // Calibrazione del TRIM attivo sul canale
23     attachInterrupt(0, chRise, RISING); // PIN 2 su 328p / 168
24 #ifdef DEBUG
25 Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
26 } ;
27 #endif
28
29 void loop() {
30 #ifdef DEBUG
31     Serial.print(chValue);
32     Serial.print(" - base: ");
33     Serial.println(mid_point);
34     delay(200);
35 #endif
36 }
37
38 // ISR:
39 void chRise() {
40     attachInterrupt(0, chFall, FALLING);
41     chStart = micros();
42 }
43
44 void chFall() {
45     attachInterrupt(0, chRise, RISING);
46     chValue = micros() - chStart;
47 }