Help Please: KMR-1.8 SPI can't get it working

Hi,

I have just purchased a KMR-1.8 SPI 128*160 TFT from ebay, but I am having problems finding the correct pinout to connect this to my Arduino Nano

This is the board that I have
http://www.ebay.co.uk/itm/Arduino-UNO-MEGA-Nano-TFT-Color-Display-Module-Breakout-SPI-ST7735S-1-8-inch-/381468326011

I would be grateful if anyone has any ideas as to the correct set-up of this screen. The backlight works, and if I set it up following the pinouts I've seen for a similar screen I get strange patterns so I believe the screen is working correctly its just I don't have the correct connections between the screen and Arduino

If you require any more information let me know.

Thanks in advance

Jon

According to your link, they provide libraries on DropBox.

If not, install Adafruit_7735 and Adafruit_GFX via your IDE:
Sketch->Include Library->Manage Libraries

Connect

GND     GND
VCC     5V
NC
NC
NC
RESET   D8
A0      D7
SDA     D5
SCK     D4
CS      D6
SD_SCK     
SD_MISO 
SD_MOSI      
SD_CS
LED+    33R->5V
LED-    GND

Run the graphicstest example.

If you connect the pins to the hardware SPI, you can run the graphicstest_highspeed example.

I suggest that you ALWAYS use the full form of constructor. i.e. ALWAYS add the RESET pin.

David.

Hi David,

Thanks for your reply, The dropbox libraries don't exist I've emailed them and asked so that is a no go.

Thanks for the pin connections I will give them a try later this evening when I have a bit of free time.

I will let you know how I get on.

Regards

Jon

Hi,

Sorry for the delay in posting back, I have been away on holiday.

I have just caught up and had chance to come back to this.

Unfortunately the suggestions didn't work.

The screen displays black and white block lines across it.

I am at a loss with this display. I'm a noob to the Arduino but I am a software developer and general electronic tickerer so not completely dumb, everything else I've done with the Arduino has worked without a problem. I just can't seem to work out what is going on with this display.

If you have any more ideas/suggestions please let me know.

Many thanks
Jon

It could be the usual 5V logic drive problem as the display expects 3.3V logic levels.

One approach is to use series resistors to reduce the current flow into the driver ship and it looks like the display has these fitted as R2 R3 and R4 on the back. In the photo it is difficult to read the resistor values. Can you tell me what numbers are on written on the resistors, there should eb a 3 digit number on each one.

Im having the exact same issue. I was attempting to do this with an Arduino 101 but the libraries don't compile correctly with it, so im using the knock-off version of an Uno to get it working. Everything compiles fine on 1.6.8

bodmer:
It could be the usual 5V logic drive problem as the display expects 3.3V logic levels.

One approach is to use series resistors to reduce the current flow into the driver ship and it looks like the display has these fitted as R2 R3 and R4 on the back. In the photo it is difficult to read the resistor values. Can you tell me what numbers are on written on the resistors, there should eb a 3 digit number on each one.

The values on the back read "4R7" for a 4.7 ohm resistor. I have a 4.7K resistors currently on pins 6 through 10, but i still have the thick black/white lines on the screen.

I have the same display that has the exact same problem with just bands showing.!!

Me too, exactly same problem. Just arrived today and spent most the day trying to get it to work. Most success I had is the lines as seen in previous post photo, making use of additional resistor on each line and under software SPI.

Hmm... any more ideas apart from claim a refund?

A quick update, I have basic control now working with the new Arduino TFT library

I have 1k resistors on each of the 5 wires.

Some of these displays use a S6D02A1 display driver.

See this topic.

I just got that exact same display (KMR-1.8 SPI) in the mail today and got it up and running quickly with no issues. I did do a good bit of reading before I attempted it and I've seen both good and bad advice on various internet forums. The e-bay vendor indicated that the board used the ST7735S driver.

I used the Adafruit libraries:

#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>

I used 2 quad level converters (only needed 5 of the 8 lines) to convert the digital I/O lines to 3.3 v. The level converters can be purchased on Ebay for about $0.30 each if you buy 5 at a time. I connected the display to an Arduino Nano which was sitting in a breakout board which provides an additional 3.3V voltage regulator that can handle 2 Amps on the 3.3V line.

I used the following connections. (all I/O lines went through the 5v to 3.3v level converters)

LED- --- GND
LED+ --- 3.3V (from the breakout board not the Arduino)
CS --- Arduino D10 (CS)
SCL --- Arduino D13 (SCK)
SDA --- Arduino D11 (MOSI)
A0 --- Arduino D9 (DC)
Reset --- Arduino D8
VCC --- 3.3V (from the breakout board not the Arduino)
GND --- GND

I think some people may be having issues because they are trying to power the display using the Arduino's 3.3v output which has a low current limit. I've also read where people are hooking up VCC to 5V and/or LED+ to 5V. I think using 5V is asking for trouble as it's beyond the maximum voltage rating of the ST7735 chip. The display is nice and bright using 3.3V for the LED backlight.

From the photo of the pcb in #0, it looks as if VCC pin goes to an AMS1117-3.3 regulator.

So you can connect this VCC pin to 5V but the GPIO logic must be 3.3V i.e. through your level-shifters.

I do not have your display but most displays require 3.3V logic but have an AMS1117 regulator that expects 5V. If you only have 3.3V available for VCC, there is a solder-bridge to short out the AMS1117 in-out pins.

The AMS1117 on a display is designed for the current.
The 3.3V regulator on a Uno/Nano is not designed for high currents. It is normally just used as a reference voltage.

Of course the 3-terminal i.c. might be a transistor to switch the LED and not a regulator.
A transistor is often marked Q1 and a regulator U1 or I1 on the pcb.

Only you have the pcb in front of you. So only you can identify Q1 or U1.
If it is a transistor Q1 you can switch the backlight on or off with an Arduino GPIO pin.
If it is a regulator, the LED+ can be supplied with 5V or 3.3V via a current limiting resistor.

Chinese displays are cheap. They have no documentation. But it should be easy to follow pcb traces and do some detective work. Then you can be helpful to all your readers.

David.

On my KMR-1.8 the 3-terminal IC is a 65Z5 which appears to be a 3v regulator. It looks like it can take either 3.3v or 5v and output 3v.

I found this KMR-1.8 SPI on Ebay.

It has a photo of the pcb. It looks like:
U2 is the 3.3V regulator.
JP2 is the solder-bridge if you want to short out the regulator i.e. if you have VCC=3.3V

R1 might be series resistor for the LED+.
LED- might be connected to GND.
If LED- is floating, you can switch LED on either low side (LED-) or high side (LED+) with an external transistor.

R2, R3, R4 might be series resistors for SD_CS, SD_SCK, SD_MOSI.

The TFT pins do not have any series resistors. So you must use 3.3V level-shifters (or resistors)

Pure guesswork on my part. Just by looking at Ebay photo. You should verify your pcb traces, resistors, ... with a DMM.

David.

I have the exact display and spent a few hours trying to get it to work with a 328p chip running at +5V.

The connections given above are correct with the exception of needing resistors for voltage shift and a divider on the SCL pin.

Without the 2k to ground to divide the 5V Arduino D13 driving the SCL pin, the display would ghost horribly. Only turning off the SPI pins or grounding the SCL would produce a stable display.

I also swapped the DC/Reset pins to match Adafruit graphicstest sample.

LED- --- GND
LED+ --- to +5V through a 120 ohm resistor, can increase resistance to dim the backlight
CS --- Arduino D10 (CS), through a 1k resistor
SCL --- Arduino D13 (SCK), through a 1k resistor and a 2k to ground (effectively forming a voltage divider for the signal).
SDA --- Arduino D11 (MOSI), through a 1k resistor
A0 --- Arduino D8 (DC), through a 1k resistor
Reset --- Arduino D9 , through a 1k resistor
VCC --- +5V, NOTE: that the display has a J1 on the back, open means 5V, closed 3.3V. Mine is open.
GND --- GND

This hookup works with the Adafruit ST7735 library sample graphicstest.

I also tried using the minimal program from http://w8bh.net/avr/AvrTFT.pdf, here is a gist with the code in text format, PDF tends to mess up the text order: Text version of Bruce E. Hall TFT 1.8 Driver from http://w8bh.net/avr/AvrTFT.pdf for ATmega328P microcontroller · GitHub

The gist pin definitions for DC/RST are swapped to match the Adafruit graphicstest ones so either can be burned without changes.

The need for pull down divider resistors depends on the controller chip fitted and the value of the series resistor.

See info here.

Correction to my previous post, the divider was necessary on the SDA pin only. The rest work without a divider.

I was only able to use read commands only when using a 3.3v Pro Mini by connecting MISO and MOSI pins. For 5V Pro Mini would require level shifters to allow SDA to MISO connection.