X-Git-Url: http://git.piffa.net/web?a=blobdiff_plain;f=esempi%2Fsnippets%2Flettura_servo_interrupt_change%2Flettura_servo_interrupt_change.ino;fp=esempi%2Fsnippets%2Flettura_servo_interrupt_change%2Flettura_servo_interrupt_change.ino;h=478f0346a7f82ccfecc466b526698433a953f5ac;hb=b8a84f85fea878902ab2e9c7ac65525d7abafd24;hp=0000000000000000000000000000000000000000;hpb=4f1a2108ba34533e92d1aa7e84328ea36df08f22;p=aerei diff --git a/esempi/snippets/lettura_servo_interrupt_change/lettura_servo_interrupt_change.ino b/esempi/snippets/lettura_servo_interrupt_change/lettura_servo_interrupt_change.ino new file mode 100644 index 0000000..478f034 --- /dev/null +++ b/esempi/snippets/lettura_servo_interrupt_change/lettura_servo_interrupt_change.ino @@ -0,0 +1,49 @@ + +/* Lettura di un canale servo della RX + + Lettura tramite i pin change interrupts + Utilizzabile su tutti i PINS + +- http://playground.arduino.cc/Main/PinChangeInterrupt + +*/ + +#include + + +// Variabili per interrupt 0 +unsigned int chValue = 1500; // Valore computato +unsigned int chStart = 1500; // Inizio rilevamento + +// Variabili per autocalibrazione +const byte chPin = 2; // PIN per la calibrazione +int mid_point = 1500; + +void setup() { + pinMode(13,OUTPUT); // LED + // Funzione relativa a calibrazione con pulsein: + mid_point = calibraTrim(chPin) ; // Calibrazione del TRIM attivo sul canale + pciSetup(10); +Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi +} ; + +void loop() { + Serial.print(chValue); + Serial.print(" - "); + Serial.println(mid_point); + delay(200); +} + +// Functions +// Install Pin change interrupt for a pin, can be called multiple times +void pciSetup(byte pin) +{ + *digitalPinToPCMSK(pin) |= bit (digitalPinToPCMSKbit(pin)); // enable pin + PCIFR |= bit (digitalPinToPCICRbit(pin)); // clear any outstanding interrupt + PCICR |= bit (digitalPinToPCICRbit(pin)); // enable interrupt for the group +} + +ISR (PCINT0_vect) // handle pin change interrupt for D8 to D13 here + { + digitalWrite(13,digitalRead(8) and digitalRead(9)); + }