Flash
Sensor
A very simple flash sensor
circuit was used to detect a flash at the start of the game. An input capture
was implemented in software to avoid using blocking code at the start of the
game. The input capture was disabled after the flash had been detected so that
any subsequent camera flashes would not trigger as a flash event in an
inappropriate time.
Hardware
The phototransistor was
mounted on the front of the robot near the top, and had side shields to avoid
any false-triggers from nearby beacon sensors.
Circuit
The flash sensor circuit is
made of an LTR-3208E NPN phototransistor in series with a 50K current-limiting
resistor. The signal from the phototransistor is conditioned by passing it
through a 74HC14 inverting Schmitt Trigger to create crisp edges. When a flash
occurs, the output of the flash sensor circuit is logic level low and high at
all other times.
Flash Detection in Software
An input capture was used to
flag a flash event in software. This input capture was set to capture falling
edges only, since the circuit design resulted in a low logic level whenever a
flash occurred and it was assumed that the state would be high (a flash would
not be happening) when the microcontroller was reset. After the flash event
occurred and was handled in software, the input capture interrupt was disabled
so that other flashes or close-proximity beacons would not appear as a flash
event later in the game.