So whatever frequency the sensor sends its data in - be it 100Hz or 5Mhz - Arduino is smart enough to read all the voltage signals faithfully?
I'm not quite sure what you mean by "read all the voltage signals" which seems to imply you want to measure the voltage.
so every 1/100 of a second it varies the voltage (or keeps the old voltage if the next signal is the same as the previous one)
But then you say:
let's assume that the 1 voltage is high enough (but not too high) for Arduino to register a 1, and the 0 voltage is also within the threshold for Arduino to register a zero (say 5V for HIGH and 0.5V for LOW). It's the frequency of the signal I'm concerned with.
The voltage levels for 0 and 1 are documented in the datasheet. For the Atmega328P for most pins they are as follows:
You can see that if Vcc is 2.4V or above then LOW is -0.5V to 0.3 * Vcc, which if Vcc is 5V then a LOW is -0.5 to 1.5V.
Similarly a HIGH is 0.6V * Vcc to Vcc + 0.5, so if Vcc is 5V then a HIGH is 3V to 5.5V.
In between 1.5V and 3V then the digital status would be undefined.
So, if your LOW and HIGH are in those voltage ranges, yes you can detect the frequency of the signal.
I'm not sure about the bit where you said "keeps the old voltage if the next signal is the same as the previous one". That seems to imply that if the signals stay the same (eg. for a second) then the voltage won't change at all, and thus the frequency will be zero.
