]> git.piffa.net Git - aerei/blob - esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino
91cd7c61de7b1806bdfa4f6a44c273b685082b01
[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
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 Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
25 } ;
26
27 void loop() {
28     Serial.print(chValue);
29     Serial.print(" - base: ");
30     Serial.println(mid_point);
31     delay(200);
32 }
33
34 // Functions
35 void chRise() {
36     attachInterrupt(0, chFall, FALLING);
37     chStart = micros();
38 }
39
40 void chFall() {
41     attachInterrupt(0, chRise, RISING);
42     chValue = micros() - chStart;
43 }