X-Git-Url: http://git.piffa.net/web?a=blobdiff_plain;f=esempi%2Fsnippets%2Flettura_servo_interrupt%2Flettura_servo_interrupt.ino;fp=esempi%2Fsnippets%2Flettura_servo_interrupt%2Flettura_servo_interrupt.ino;h=91cd7c61de7b1806bdfa4f6a44c273b685082b01;hb=b8a84f85fea878902ab2e9c7ac65525d7abafd24;hp=0000000000000000000000000000000000000000;hpb=4f1a2108ba34533e92d1aa7e84328ea36df08f22;p=aerei diff --git a/esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino b/esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino new file mode 100644 index 0000000..91cd7c6 --- /dev/null +++ b/esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino @@ -0,0 +1,43 @@ + +/* Lettura di un canale servo della RX + + Lettura tramite uno dei due external interrupt ala Arduino + Utilizzabile solo sui PIN 2-3 + +*/ + +#include + + +// Variabili per interrupt 0 +volatile unsigned int chValue = 1500; // Valore computato +volatile unsigned int chStart = 1500; // Inizio rilevamento + +// Variabili per autocalibrazione +const byte chPin = 2; // PIN per la calibrazione +int mid_point = 1500; + +void setup() { + // Funzione relativa a calibrazione con pulsein: + mid_point = calibraTrim(chPin) ; // Calibrazione del TRIM attivo sul canale + attachInterrupt(0, chRise, RISING); // PIN 2 su 328p / 168 +Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi +} ; + +void loop() { + Serial.print(chValue); + Serial.print(" - base: "); + Serial.println(mid_point); + delay(200); +} + +// Functions +void chRise() { + attachInterrupt(0, chFall, FALLING); + chStart = micros(); +} + +void chFall() { + attachInterrupt(0, chRise, RISING); + chValue = micros() - chStart; +}