one rotation every 300 msec.
300 ms is a very long time for an Arduino, even for an AVR-based
one, like an Uno.
I did a little experiment. I generated (with an Arduino...) a periodic
signal consisting of a 96 µs-wide negative pulse repeating every
300 ms. I sent that signal to an Arduino Uno running the following
code:
const uint8_t sensor_pin = 3;
// 90-byte message.
const char message[] = "Korem ipsum dolor sit amet, consectetur "
"adipiscing elit sed do eiusmod tempor incididunt\r\n";
void setup() {
pinMode(sensor_pin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
if (digitalRead(sensor_pin) == LOW) {
Serial.write(message);
// Wait until the signal rises again.
while (digitalRead(sensor_pin) == LOW)
continue;
}
}
This is not the nicest way to do edge detection, but for this simple
test it will do. You may notice that I am not using interrupts for
capturing the pulse: 96 µs is long enough to be captured with this
simple digitalRead()
. I then captured the input and output signals
with a dual-channel pocket oscilloscope. Here is a screen capture:

The cyan trace at the top is the received pulse. The yellow trace below
is the output of the serial port. The negative pulse on this trace that
is almost coincident with the received pulse is the start bit. Then the
signal rises to transmit the first data bit, which is a 1 (that's
why I chose “K” rather than “L” as the first letter).
What you can see in this capture is that the latency of the Arduino is
tiny at this scale: a small fraction of the duration of the start bit.
What you cannot see is the jitter, which is quite large in relative
terms, but still small compared to the time scales relevant to you. In
short, the delay between the falling edge on the input and the falling
edge of the serial port start bit fluctuates roughly between 10 and
20 µs. Yes, those are microseconds. This delay is roughly
20,000 times shorter than the rotation period. If the signal is read at
“12” on the clock, the start bit fires at 12 hours with
0 minutes and 2 seconds.
Note that, on the other hand, the time needed to send the message at
9600 b/s is 93.6 ms, a significant fraction of the rotation
period. And I didn't look at the behavior of the USB-to-serial converter
chip, which is another can of worms...