X-Git-Url: http://git.piffa.net/web?a=blobdiff_plain;f=esempi%2Fsnippets%2Flettura_servo_interrupt_doppio%2Flettura_servo_interrupt_doppio.ino;fp=esempi%2Fsnippets%2Flettura_servo_interrupt_doppio%2Flettura_servo_interrupt_doppio.ino;h=db1922a96604e121fdd25cc8fac94bd500b71144;hb=b8a84f85fea878902ab2e9c7ac65525d7abafd24;hp=0000000000000000000000000000000000000000;hpb=4f1a2108ba34533e92d1aa7e84328ea36df08f22;p=aerei diff --git a/esempi/snippets/lettura_servo_interrupt_doppio/lettura_servo_interrupt_doppio.ino b/esempi/snippets/lettura_servo_interrupt_doppio/lettura_servo_interrupt_doppio.ino new file mode 100644 index 0000000..db1922a --- /dev/null +++ b/esempi/snippets/lettura_servo_interrupt_doppio/lettura_servo_interrupt_doppio.ino @@ -0,0 +1,70 @@ + +/* Lettura di 2 canali servo della RX con interrupts + + Lettura tramite i due external interrupt ala Arduino + Utilizzabile solo sui PIN 2-3 + +*/ + +#include + + +// Variabili per interrupt 0 si PIN 2 +volatile unsigned int chValue2 = 1500; // Valore computato +volatile unsigned int chStart2 = 1500; // Inizio rilevamento + +// Variabili per interrupt 1 su PIN 3 +volatile unsigned int chValue3 = 1500; // Valore computato +volatile unsigned int chStart3 = 1500; // Inizio rilevamento + +// Variabili per autocalibrazione 0 +const byte chPin2 = 2; // PIN per la calibrazione +int mid_point2 = 1500; + +// Variabili per autocalibrazione 1 +const byte chPin3 = 3; // PIN per la calibrazione +int mid_point3 = 1500; + +void setup() { + // Funzione relativa a calibrazione con pulsein: + mid_point2 = calibraTrim(chPin2) ; // Calibrazione del TRIM attivo sul canale + mid_point3 = calibraTrim(chPin3) ; // Calibrazione del TRIM attivo sul canale + attachInterrupt(0, chRise2, RISING); // PIN 2 su 328p / 168 + attachInterrupt(1, chRise3, RISING); // PIN 3 su 328p / 168 +Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi +} ; + +void loop() { + + Serial.print("PIN2: "); + Serial.print(chValue2); + Serial.print(" -base: "); + Serial.print(mid_point2); + + Serial.print(" |-| PIN3:"); + Serial.print(chValue3); + Serial.print(" -base: "); + Serial.println(mid_point3); + delay(200); +} + +// Functions +void chRise2() { + attachInterrupt(0, chFall2, FALLING); + chStart2 = micros(); +} + +void chFall2() { + attachInterrupt(0, chRise2, RISING); + chValue2 = micros() - chStart2; +} +// Seconod iterrupt +void chRise3() { + attachInterrupt(1, chFall3, FALLING); + chStart3 = micros(); +} + +void chFall3() { + attachInterrupt(1, chRise3, RISING); + chValue3 = micros() - chStart3; +}