I really like playing with my ILI9341 LCD screens with 3.3V Arduino ProMini because no voltage level shifting is needed:
After my last 3.3V Arduino Pro Mini has entered a state not allowing to flash a program I was left with Uno and Nano Arduinos that (normally) require some level shifting.
I did so with my Uno turning the LCD into a live speedometer with history for (another) Arduino robot running in my motor test station. While this works nicely:
I really do not like the (huge) amount of cabling to/from the level shifters:
A while ago I found out that a (cheap Chinese clone) Arduino Nano can run with 3.7V Lipo battery on slightly more than 3.3V:
And I have USB2UART modules allowing to switch between 3.3V and 5V, which can be used to just give 3.3V as well. Given both I found a way to combine a Nano and ILI9341 LCD without(!) level shifters involved. The only drawback is that switching cables is needed when going from programming to running and back (in order to avoid 5V damage on ILI9341 LCD display).
For programming I disconnect the GND cables from Nano to 3.3V USB2UART and ILI9341 LCD, and connect the Nano USB programming (5V) cable:
For running I disconnect the Nano USB programming (5V) cable, and connect the GND cables from Nano to USB2UART and LCD display:
Works like a charme, and as far as I understand (I am a software guy) this avoids 5V harm to ILI9341 LCD display.
(Absolute maximum rating for VCC is 4.6V according display spec)
Hermann.
P.S: I tried to program Arduino Nano via USB2UART (like I do with ProMini), but without success.
P.P.S: Connecting RX and TX as well allows even "Serial.print()" to work (at 3.3V):