Stap 3: onderbreekt
Met behulp van Ardunio pin 2 en 3 op de Uno is zeer belangrijk. We gaan worden met behulp van de functie van de interrupt van de Arduino.
Interrupts zijn een soort subroutine, meestal erg klein. Ze moeten alleen een paar lijnen van code en zij moeten zo snel mogelijk uitvoeren. Meestal wanneer code wordt uitgevoerd dat het regel voor regel doorloopt, loopt de instructies sequentieel. Wanneer u gebruikt van interrupts, de code onderbreken en uitvoeren zodra de triggervoorwaarde voldaan wordt. We gaan om te activeren van een interrupt wanneer het coderingsprogramma pulsen geeft en gebruiken om te tellen. Dit kan we niet verliezen spoor van graven.
Er zijn 4 soorten triggers voor de interrupt: Rising, Falling, High en Low. Door het veranderen van de trigger kunt u aanpassen wanneer de interrupt gebeurt. Verrijzing is wanneer de pin ziet een overgang van laag naar hoog, vallen is bij het zien van hoog naar laag, laag is wanneer de pin is laag en hoog is als de pin hoog is.
Hieronder is een klein fragment van code, weergegeven: de fundamentele interrupt die we zullen gebruiken. Er zijn reacties op verder te verklaren.
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)
Meestal is er slechte vorm te gebruiken van een Serial.print() in een interrupt. Serial.prints() zijn een zeer computationele intensieve taak, ze nemen een lange tijd gebeuren. Wanneer u in een interrupt bent kan niet u worden onderbroken door een tweede. Als u pulsen rekenen en de interrupt te lang is zult u punten verliezen.
Voor meer details, zie deze pagina: www.arduino.cc/en/Reference/AttachInterrupt