2 /* Lettura di 2 canali servo della RX con interrupts
4 Lettura tramite i due external interrupt ala Arduino
5 Utilizzabile solo sui PIN 2-3
13 // Variabili per interrupt 0 si PIN 2
14 volatile unsigned int chValue2 = 1500; // Valore computato
15 volatile unsigned int chStart2 = 1500; // Inizio rilevamento
17 // Variabili per interrupt 1 su PIN 3
18 volatile unsigned int chValue3 = 1500; // Valore computato
19 volatile unsigned int chStart3 = 1500; // Inizio rilevamento
21 // Variabili per autocalibrazione 0
22 const byte chPin2 = 2; // PIN per la calibrazione
23 int mid_point2 = 1500;
25 // Variabili per autocalibrazione 1
26 const byte chPin3 = 3; // PIN per la calibrazione
27 int mid_point3 = 1500;
30 // Funzione relativa a calibrazione con pulsein:
31 mid_point2 = calibraTrim(chPin2) + 8 ; // Calibrazione del TRIM attivo sul canale
32 mid_point3 = calibraTrim(chPin3) + 8; // La calibrazione in genere non serve
33 // su throttle, il valore minimo e' costante e non c'e' TRIM
35 attachInterrupt(0, chRise2, RISING); // PIN 2 su 328p / 168
36 attachInterrupt(1, chRise3, RISING); // PIN 3 su 328p / 168
45 // Il loop fa solo debug
47 Serial.print("PIN2: ");
48 Serial.print(chValue2);
49 Serial.print(" -base: ");
50 Serial.print(mid_point2);
52 Serial.print(" |-| PIN3:");
53 Serial.print(chValue3);
54 Serial.print(" -base: ");
55 Serial.println(mid_point3);
62 attachInterrupt(0, chFall2, FALLING);
67 attachInterrupt(0, chRise2, RISING);
68 chValue2 = micros() - chStart2;
72 attachInterrupt(1, chFall3, FALLING);
77 attachInterrupt(1, chRise3, RISING);
78 chValue3 = micros() - chStart3;