Software challenge

Well is it really? Using the pulseIn() command measuring the first low to high pulse width it sees

Ah. Measuring a single bit. Good idea. I got it in my head you'd be measuring an entire byte. Which is not a good idea.

will either capture the width of the first start bit width or any valid zero data bit width if the stream is already active. A start bit and a data bit have the same width at any given baud rate.

What if there are two same value bits side-by-side? Or three bits?

But, you could sample for a while (using pulseIn) and take the lowest reading. Or, you may be able to collect a few samples and deduce the single bit time. I think the trick is to determine which timings are for odd numbers of bits or prime numbers of bits.

What am I missing?

Less than I am. :smiley: