wvmarle:
That's I2C and indeed doesn't seem to have level shifters on board, so you'd have to add them externally.
Great, thanks.
A 0-3.3V analog output can be read using analogRead() without any issues, it's just that you have only about 70% of the range so you lose resolution, and stability may be an issue due to the two independent supply voltages (3.3V and 5V).
If the 3.3v is coming from the Arduino itself from the 3.3v pin, might there still be an issue with the different voltages?
If the 3.3v is coming from an eternal source, but its ground and the Arduino ground are connected, might there still be an issue with the different voltages?
Depending on the sensor (yes, there we go again) and how it's all wired and powered (yet another set of variables) it may be better to use a 2:1 voltage divider and use the internal 1.1V reference.
I'll go over the Sparkfun voltage divider tutorial now, thank you.
https://learn.sparkfun.com/tutorials/voltage-dividers/all
A 0/3.3V digital output can be read with a regular digitalRead() call.
As I understand it, digitalRead() returns HIGH when the input voltage is above 3.0 volts on a 5v board, and above 2.0 volts on a 3.3v board. It also returns LOW when the input voltage is below 1.5 volts on a 5v board, and below 1.0 volts on a 3.3v board. So for some borderline cases I do believe there may be a difference, pushing the voltage into the "uncertainty zone", especially for borderline-HIGH values.
So... still no generic answer.
That's fine. One does not learn from a specific implementation.
I very much appreciate you sharing your knowledge and helping myself and my daughters learn this terrific field!