Take the ADC data and encrypt it with AES or similar. For successive cycles, take the previous output, XOR it with the new ADC data, and encrypt it again.
That is how you generate pseudo random numbers from a real random number (the seed). This can also be done with a lfsr but then if someone knows the depth of the lfsr and some states the next and previous states can be fully predicted.
The question here is how to capture real entropy, real random data that ( ideally ) can even not be manipulated from someone on the outside.
No, this isn't a seed method, this is an unbiasing method. The simplified analog is not a seeded LFSR, it's an LFSR (or whatever combination of many, in parallel or chained?) with real entropy XOR'd into the feedback path. The result depends on the input at all times, so is true random, assuming the entropy is clean to begin with.
One good thing is, the scrambling is pretty good -- a single bit change can be expected to disturb an entire block of bits at a time. It's also one bad thing: a blockwise cipher has no dependency on previous blocks. So you'd want to chain them (which was as suggested, so I'm partly making things up here), or overlap the passes, or something like that.
Ed:
For the perturbed LFSR case, every input bit can push the current LFSR sequence into one of two subsequent states; after N bits, the possible states are 2^N (same as if the LFSR were evolved N times, if the pattern is unknown), so the equivalent block size would be an N bit cipher (which makes sense, after all).
A good reason not to use ADC readings is, an attacker could very easily bombard the device with a good RF field, or prod some pins or whatever, and cause it to read out of range, guaranteeing a read of all zeroes or all ones. None of the examples posted even has an attempted sanity check, which would only be a crude workaround for a fundamental problem.
And what would you do about it? Would you return a 'fail' condition and make the rest of the program more complicated trying to handle every contingency -- inevitably forgetting some? Or, wait forever like a *nix urandom() call waiting for entropy? Or just keep on pulling numbers out of your ass, say by evolving an LFSR (or any other de-weighting / scrambling method) without any new entropy -- this being the most insidious alternative, because it could be part of a library, invisible and undocumented, and you'd never suspect a thing!
Tim