Paso 3: interrupciones
Es muy importante utilizar Ardunio pins 2 y 3 en la ONU. Vamos a utilizar la función de interrupción de la Arduino.
Las interrupciones son un tipo de subrutina, generalmente muy pequeño. Sólo deben ser unas pocas líneas de código y que necesitan para ejecutar tan rápido como sea posible. Generalmente cuando se ejecuta código recorre línea por línea, ejecutando las instrucciones secuencialmente. Al utilizar interrupciones, interrumpir el código y ejecutar tan pronto como la condición de disparo es cierto. Van a provocar una interrupción cuando el codificador da pulsos y uso para mantener la cuenta. Esto nos permite no perder el hilo de cuentas.
Hay 4 tipos de disparadores para la interrupción: ascendente, descendente, alta y baja. Cambiando el gatillo se puede ajustar cuando la interrupción ocurre. Rising es siempre que el pasador ve una transición de bajo a alto, caer es cuando ve alta a baja, baja es cuando el perno es bajo y es alta cuando el pin está alto.
A continuación es un pequeño fragmento de código, mostrando la interrupción básica que vamos a utilizar. Hay comentarios más explicar.
volatile int count = 0;//if the interrupt will change this value, it must be volatile void setup() { pinMode(2, INPUT); set as input digitalWrite(2, HIGH);//enable internal pullup resistor attachInterrupt(digitalPinToInterrupt(2), interruptName, RISING);//Interrupt initialization Serial.begin(9600); }//end setup void loop() { Serial.println(count);//see the counts advance delay(100);//Delays usually can't be interfered with, here we will see the interrupt work }//end loop void interruptName() { count = count+1; }//end Interrupt Service Routine (ISR)
Generalmente es pobre con un Serial.print() en una interrupción. Serial.Prints() son una tarea computacional muy intenso, toman mucho tiempo en suceder. Cuando estás en una interrupción no puede ser interrumpido por otro. Si están contando pulsos y la interrupción es demasiado larga se perderá cuentas.
Para más detalles, consulte esta página: www.arduino.cc/en/Reference/AttachInterrupt