const byte triggerCameraPin = 5;
const byte sensorPin = 2;
volatile byte state = LOW;
volatile unsigned long triggeredTime = 0;
volatile bool triggered = false;
const unsigned long cameraDelay = 50; //50 miliseconds
void setup() {
pinMode(triggerCameraPin, OUTPUT);
pinMode(triggerCameraPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(sensorPin), triggerCameraTimer, FALLING);
}
void loop() {
cameraManager();
}
void triggerCameraTimer() {
triggeredTime = millis();
triggered = true;
}
void cameraManager(){
if(triggered){
//Check if the camera delay has passed
if((millis() -triggeredTime) >= cameraDelay){
digitalWrite(triggerCameraPin,HIGH);
delay(100);
digitalWrite(triggerCameraPin,LOW);
//reset the flag
triggered = false;
}
}
}
Nao testei, tenta assim deve ser algo deste género.
Basicamente quando detecta a gota deve disparar a camera passados pelo menos 50 milisegundos desde o momento que a gota passou no laser.
Tens de adaptar o código para funcionar com a analogica visto estares a usar a LDR