count external interrupts
use external interrupt to count pulses
/************************************************************************************************** * * photoInterrupter_countWithInterrupt_00 * * Version: 00 - Mai 2010 * Author: Tom Pawlofsky www.caad.arch.ethz.ch tom-DOT-pawlofsky-AT-arch-DOT-ethz-DOT-ch * * Desc: count the events on a photointerrupter / lightbarrier within an interrupt * ***************************************************************************************************/ // using a Sharp GP1A53HR // the Infrared-Led is connected // no 1 Anode via a 470 Ohm to 5V -> less then 10 mA // no 2 Cathode to Gnd // the Recievers Pins are connect // no 3 Vcc to Vcc 5V // no 4 Vo to Digital Input Pin of MicroController // no 5 GND to Ground Gnd // // Note: this Photointerrupter has a Schmitt Trigger as Output // this reduces the sensitivity for noise and will always give back LOW or HIGH // // this methode of counting offers much better performance then countinously comparing the lightBarrier-Status in the loop script // int pinLB = 2; // LIghtBarrier, Photointerrupter -> you must use Pin 2 or 3 see http://arduino.cc/en/Reference/AttachInterrupt int counter = 0; void setup(){ // start serial communication Serial.begin(9600); pinMode(pinLB,INPUT); attachInterrupt(0,countLbEvent,RISING); // count wenn Lightbarrier gets closed // index 0 will refer to pin 2 // there the following modes // attachInterrupt(0,countLBEvent,LOW); // attachInterrupt(0,countLBEvent,CHANGE); // attachInterrupt(0,countLBEvent,RISING); // attachInterrupt(0,countLBEvent,FALLING); } void loop(){ // feedback of counter Serial.print("counter "); Serial.println(counter,DEC); // //delay(300); } // keep this function smart and short // no parameters, no return value void countLbEvent(void) { counter++; }
Article by
Tom Pawlofsky Mai 2010
contact
pawlofsky–AT-arch-DOT-ethz-DOT-ch
please feel free to email any comments, misstakes or improvements.
this page is linked to: