]> git.piffa.net Git - aerei/blob - esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino
Merge branch 'master' of kim.andreamanni.com:/home/git/aerei
[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) + 8; // Calibrazione del TRIM con pulseIn:
23  // se si usa poi un interrupt si aggiunge ~10
24
25 attachInterrupt(0, chRise, RISING); // PIN 2 su 328p / 168
26
27 #ifdef DEBUG
28 Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
29 #endif
30 } ;
31
32 void loop() {
33 #ifdef DEBUG
34     Serial.print(chValue);
35     Serial.print(" - base: ");
36     Serial.println(mid_point);
37     delay(200);
38 #endif
39 }
40
41 // ISR:
42 void chRise() {
43     attachInterrupt(0, chFall, FALLING);
44     chStart = micros();
45 }
46
47 void chFall() {
48     attachInterrupt(0, chRise, RISING);
49     chValue = micros() - chStart;
50 }