Hall effekt sensorer 1: Placera kontroll (3 / 6 steg)
Steg 3: avbryter
Med Ardunio stift 2 och 3 på Uno är mycket viktigt. Vi kommer att använda Arduino avbryta funktion.
Avbryter är en typ av subrutin, vanligen mycket liten. De bör bara några rader kod och de behöver för att köra så fort som möjligt. Vanligtvis när koden körs den går igenom rad för rad, kör instruktionerna sekventiellt. När du använder avbrott, avbryta koden och kör så fort utlösarvillkoret är sant. Vi kommer att utlösa ett avbrott när kodaren ger pulser och använda det för att hålla räkningen. Detta tillåter oss inte att tappa bort räkningarna.
Det finns 4 typer av utlösare för avbrottet: stigande, fallande, hög och låg. Genom att ändra avtryckaren kan du justera när avbrottet inträffar. Resningen är när stiftet ser en övergång från låg till hög, faller är när det ser högt till lågt, lågt är när PIN-koden är låg och hög är när PIN-koden är hög.
Nedan är en liten kodsnutt, visar på grundläggande avbryta vi kommer att använda. Det finns kommentarer till ytterligare förklara.
flyktiga int count = 0; //if avbrottet kommer att ändra det här värdet, måste det flyktiga
void setup() {
pinMode (2, ingång); Ange som indata
digitalWrite (2, hög), //enable inre pullup motstånd
attachInterrupt(digitalPinToInterrupt(2), interruptName, RISING); //Interrupt initiering
Serial.BEGIN(9600);
} //end setup
void loop() {
Serial.println (antal); //see räknas förskottet
fördröjning (100); //Delays vanligtvis inte kan störas, här ser vi på avbryta arbete
} //end loop
void interruptName()
{
antal = antal + 1.
} //end avbrottstjänstens rutin (ISR)
Oftast är det dålig form att använda en Serial.print() i ett avbrott. Serial.Prints() är en mycket computational intensiv aktivitet, de tar lång tid att hända. När du är i ett avbrott inte kan du avbrytas av en andra en. Om du räknar pulser och avbrottet är för länge förlorar du räknar.
För mer information, se denna sida: www.arduino.cc/en/Reference/AttachInterrupt