#pragma once #include "PulseGenerator.h" #include "TeensyTimerTool.h" class LaserController { public: void begin(unsigned preTriggerPin, unsigned triggerPin, unsigned camPin); void shoot(); protected: PulseGenerator preTrigger, trigger, camera; }; void LaserController::begin(unsigned preTriggerPin, unsigned triggerPin, unsigned camPin) { preTrigger.begin(preTriggerPin); trigger.begin(triggerPin); camera.begin(camPin); } void LaserController::shoot() { constexpr float t_warmup = 140 - 5.5; constexpr float t_p = 10 - 3; constexpr float t_camDelay = 130 - 7.5; constexpr float t_int = 30 - 3; preTrigger.schedulePulse(0, t_p); // immediately generate the pretrigger pulse trigger.schedulePulse(t_warmup, t_p); // schedule the trigger pulse to start after the warmup time camera.schedulePulse(t_camDelay, t_int); // schedule the cam pulse after the camDelay time }