Used a TSL235R last year which is also a light to frequency sensor and used this sketch as test of sensor code".
A trigger can be set by adding a timestamp in the IRQ1() and compare this with the prev time stamp (use volatile vars)
/*
* FILE: TSL235R.pde
* AUTHOR: Rob Tillaart
* DATE: 2011 05 16
*
* PURPOSE: prototype TSL235R monitoring
*
* Digital Pin layout ARDUINO
* =============================
* 2 IRQ 0 - to TSL235R
*
* PIN 1 - GND
* PIN 2 - VDD - 5V
* PIN 3 - SIGNAL
*
*/
volatile unsigned long cnt = 0;
unsigned long oldcnt = 0;
unsigned long t = 0;
unsigned long last;
unsigned long msec = 0;
unsigned int cf = 1466; // cf = 10^0.166 * 1000 (figure 1 datasheet)
void irq1()
{
cnt++;
}
///////////////////////////////////////////////////////////////////
//
// SETUP
//
void setup()
{
Serial.begin(115200);
Serial.println("START");
pinMode(2, INPUT);
digitalWrite(2, HIGH);
attachInterrupt(0, irq1, RISING);
}
///////////////////////////////////////////////////////////////////
//
// MAIN LOOP
//
void loop()
{
msec = millis() - last;
if (msec >= 1000)
{
last += msec;
t = cnt;
unsigned long hz = (t - oldcnt) * 1000 / msec;
oldcnt = t;
unsigned long mw = (hz * cf/1000 + 50)/100; // +50 == rounding last digit
// smoothing possible...
Serial.print("FREQ: ");
Serial.print(hz);
Serial.print("\t ");
Serial.print(mw);
Serial.println(" mW/m2");
}
}
// END OF FILE