I was looking for a way to have the output of my arduino uno put out 3,3V instead of 5V to power a little vibration motor. So I stumbled upon this page where it says:
- Use an open-collector configuration. If you're REALLY trying to minimise circuitry, you can actually achieve a 3.3V output from an UNO using a SINGLE resistor. This is somewhat of a hacky solution, but can be made to work quite well. It involves using an external pull-up resistor from the output pin to a 3.3V supply rail, and in code using output low to get 0V or setting the pin to an input (high-impedance state) to get 3.3V.
You should pick this option if you want to use the minimum components necessary to get the job done, and only if you know exactly what's going on electrically when you do this, as well as the consequences of the non-instantaneous switchover from active drive-low to 3.3V pull-up (read: slew rates), as well as the consequences of what happens if you drive-high to 5V accidentally.
Now I won't use this, but still I wonder how this would work. How exactly is the resistor placed in the schematics and why does it work?