]> git.piffa.net Git - aerei/blob - esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino
Stati / RGB
[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
30 void loop() {
31 #ifdef DEBUG
32     Serial.print(chValue);
33     Serial.print(" - base: ");
34     Serial.println(mid_point);
35     delay(200);
36 #endif
37 }
38
39 // Functions
40 void chRise() {
41     attachInterrupt(0, chFall, FALLING);
42     chStart = micros();
43 }
44
45 void chFall() {
46     attachInterrupt(0, chRise, RISING);
47     chValue = micros() - chStart;
48 }