Étape 3: interrompt
À l’aide de Ardunio broches 2 et 3 sur la Uno est très important. Nous allons utiliser la fonction d’interruption de l’Arduino.
Elles sont un type de sous-routine, habituellement très faible. Ils devraient être uniquement quelques lignes de code et dont ils ont besoin pour exécuter aussi vite que possible. Habituellement, lorsque le code s’exécute qu'elle passe par la ligne par ligne, exécutant les instructions dans l’ordre. Lorsque vous utilisez des interruptions, interrompre le code et d’exécuter dès que la condition de déclencheur est vraie. Nous allons à déclencher une interruption chaque fois que l’encodeur donne des impulsions et qui permet de faire le compte. Cela nous permet ne pas de perdre la trace des chefs d’accusation.
Il existe 4 types de déclencheurs pour l’interruption : Rising, Falling, haute et basse. En changeant la détente, vous pouvez ajuster lorsque l’interruption se produit. Rising est quand la broche voit une transition de faible à élevé, tombant est quand il voit haut de bas, faible est quand la broche est faible et élevée lorsque la broche est élevée.
Voici un petit extrait de code, illustrant l’interruption de base, nous allons utiliser. Il y a des commentaires pour expliquer plus en détail.
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)
Il est généralement mauvaise forme d’utiliser un Serial.print() à une interruption. Serial.prints() sont une tâche informatique très intense, ils prennent beaucoup de temps à arriver. Quand vous êtes dans une interruption vous ne peut pas être interrompu par une seconde. Si vous comptez les impulsions et l’interruption est trop longue, vous perdrez chefs d’accusation.
Pour plus d’informations, consultez cette page : www.arduino.cc/en/Reference/AttachInterrupt