This page is all about logic level converters that allow you to easily change between different logic voltage levels.
You know when you just bought that nice shiny new chip to play with, you get it in the post and only then do you think: What about voltage levels? Then you see that the new chip only works at 3V3 and the only microcontroller you have works at 5V! See this project for an example of using the logic converter circuit.
First of all you think that's easy, I'll just use a voltage divider and problem solved. Maybe it is but if your device is an I2C device where you need bidirectional communication on the data line using a divider on the high side won't allow the voltage to go the other way at a reliable level.
For a 4 wire SPI interface there is no bidirectional requirement (data out: SDO, and data in: SDI use separate pins) so you could use the divider method and that requires 3 dividers with a total of 6 resistors (Data in from the lows side driver is usually high enough in a 3V system to signal a logic one to the 5V high side). To go from 5V to 3V needs a resistive divider with 22k and 33k (which drops the output to 3V) (or you can replace the 33k with 39k for a drop of 3V2 (for a 3V3 system).
A 3 wire SPI interface requires a bi-directional data I/O conversion - the data I/O uses bi-directional signals.
There is a clever way to use a MOSFET that relies on the parasitic diode to allow full bidirectional communication with low and high side voltages. The advantage of this is that if your device uses I2C (which is bi-directional) the 5V system can communicate properly with the 3V3 system easily allowing the 3 wire SPI interface to operate correctly with only one level converter..
This is a super spectacular bit of electronics that also happens to be extremely simple but extremely clever. It lets you easily convert between different voltage level systems using only a simple enhancement mode logic level MOSFET and a couple of 10k resistors.
wrt = with respect to.
When the high side outputs a '1' (5V) drain and source are pulled towards the high voltage so the source is high wrt. gate (reverse Vgs voltage) so the MOSFET is off so the low side pullup is active and pulls the low side to 3V3.
When the high side outputs a '0' (0V) the source is pulled low wrt gate, so the gate is higher than the source and the MOSFET is on (Vgs is positive). The MOSFET then conducts the zero through to the low side pulling down the low side.
When the low side outputs a '1' (3V3) the gate source voltage is zero so the MOSFET is off. The high side pullup is active and pulls the high side to 5V.
When the low side outputs a '0' (0V) the gate source voltage is 3V3 and the MOSFET is on. The MOSFET then conducts the 0V through to the high side pulling down the high side.
Easily use an ESP8266 with the Arduino IDE and program your first sketch into the ESP8266
Find out how to use the AD9833 to generate sine, square and triangle waves at 0.1Hz resolution.
Arduino map is a useful function but it may not do what you expect. Find out here how to use if correctly.
How to test and use an Arduino Joystick including a new library to make it super easy.
Digispark ATtiny85: Essential information on setting up and using this tiny, but powerful, chip
How to use the Arduino IDE: Beginners programming course.