sainsmart 1.8 tft display made in china
The 1.8" TFT LCD SPI-bus display modules available from Adafruit and SainSmart are functionally equivalent, except that the SainSmart unit can be driven at a much faster SPI bus rate than the Adafruit (32 MHz vs. 4 MHz in my testing). Fabien Royer has shown that this is due to a slow level shifter in the Adafruit unit.
* My version of the st7735fb_map driver allows either CE0 (SPI 0.0) or CE1 (SPI 0.1) to be configured. ** My version allows the configuration of any GPIO pin for D/C and RESET. *** Since I"m not using the MicroSD card device on the back of the display modules, the remaining pins are left unconnected.
The st7735fb driver supports fbcon which attaches the display as tty1 and/or other VT"s so the standard getty login will appear without any additional configuration. The following alternate method using fbterm also works, but is more complex to configure.
The board supports multiple different 1.8" panel pinouts including Adafruit and SainSmart, and sports mounting pads for three GPIO buttons. Very nice!
The display is driven by a ST7735R controller ( ST7735R-specifications.pdf (2.1 MB) ), can be used in a “slow” and a “fast” write mode, and is 3.3V/5V compatible.
Adafruit_ST7735 is the library we need to pair with the graphics library for hardware specific functions of the ST7735 TFT Display/SD-Card controller.
Basically, besides the obvious backlight, we tell the controller first what we are talking to with the CS pins. CS(TFT) selects data to be for the Display, and CS(SD) to set data for the SD-Card. Data is written to the selected device through SDA (display) or MOSI (SD-Card). Data is read from the SD-Card through MISO.
So when using both display and SD-Card, and utilizing the Adafruit libraries with a SainSmart display, you will need to connect SDA to MOSI, and SCL to SCLK.
As mentioned before, the display has a SLOW and a FAST mode, each serving it’s own purpose. Do some experiments with both speeds to determine which one works for your application. Of course, the need of particular Arduino pins plays a role in this decision as well …
Note: Adafruit displays can have different colored tabs on the transparent label on your display. You might need to adapt your code if your display shows a little odd shift. I noticed that my SainSmart display (gree tab) behaves best with the code for the black tab – try them out to see which one works best for yours.
Low Speed display is about 1/5 of the speed of High Speed display, which makes it only suitable for particular purposes, but at least the SPI pins of the Arduino are available.
After connecting the display in Low Speed configuration, you can load the first example from the Arduino Software (“File” “Example” “Adafruit_ST7735” – recommend starting with the “graphictest“).
Below the code parts for a LOW SPEED display (pay attention to the highlighted lines) – keep in mind that the names of the pins in the code are based on the Adafruit display:
#define sclk 4 // SainSmart: SCL#define mosi 5 // SainSmart: SDA#define cs 6 // SainSmart: CS#define dc 7 // SainSmart: RS/DC#define rst 8 // SainSmart: RES
#define sclk 13 // SainSmart: SCL#define mosi 11 // SainSmart: SDA#define cs 10 // SainSmart: CS#define dc 9 // SainSmart: RS/DC#define rst 8 // SainSmart: RES
You can name your BMP file “parrot.bmp” or modify the Sketch to have the proper filename (in “spitftbitmap” line 70, and in “soft_spitftbitmap” line 74).
#define SD_CS 4 // Chip select line for SD card#define TFT_CS 10 // Chip select line for TFT display#define TFT_DC 9 // Data/command line for TFT#define TFT_RST 8 // Reset line for TFT (or connect to +5V)
#define SD_CS 4 // Chip select line for SD card#define TFT_CS 10 // Chip select line for TFT display#define TFT_DC 9 // Data/command line for TFT#define TFT_RST 8 // Reset line for TFT (or connect to +5V)
This function is used to indicate what corner of your display is considered (0,0), which in essence rotates the coordinate system 0, 90, 180 or 270 degrees.
However, if your application needs your screen sideways, then you’d want to rotate the screen 90 degrees, effectively changing the display from a 128×160 pixel (WxH) screen to a 160×128 pixel display. Valid values are: 0 (0 degrees), 1 (90 degrees), 2 (180 degrees) and 3 (270 degrees).
tft.print("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ");
Greetings, Stan! I just got mine working. It seems that the Sainsmart labels their pins a little differently from the Adafruit. I was stumped, until I came across Kamal Mostafa"s website (Raspberry Pi projects : Adafruit/SainSmart 1.8" TFT LCD : st7735fb driver). There, he presents a table of which pins on the Adafruit correspond to which pins on the Sainsmart. Specifically:
Ignore, completely, the 4 pins over in the SD-Card section. Some of those pins have the same labels as what is referred to in the TFT docs you"ll find, but these are not the pins you want (unless you want to be accessing the SD card and not the TFT display).
The trouble seems to come from the fact that the Sainsmart labels their MOSI and Clock lines the way they"re labeled with i2C (as "SCL" and "SDA"). Anyway, here"s how I wired mine:
Don"t use the TFT18.ZIP that Sainsmart has on their website. It only works with an older version of the Arduino software. Instead, just use the built-in examples you"ll find at File->Examples->TFT->Arduino
With the above wiring, I was able to run the built-in examples without any modification. I"m currently working on getting Sainsmart"s demo sketches (like graphicstest_highspeed) to work. If you want them, let me know, but the built-in Arduino ones should work just fine for you.
At this stage, any panel would need to connect either to the HDMI or VGA port. Although there is a dedicated TFT connector on the board it"s not currently available for use. Foundation hopes to sell/promote a tested TFT once all tht other stuff is done!
If you just want to use a display without all of the challenge of getting a display to work from the various pins, you might want to search around for small displays that take either composite or HDMI inputs. Adafruit.com has several displays that take composite. I have a MP4 player from JXD that is fairly small and does video input that I"ve been meaning to use when I get to the r-pi.
Yes it"s ST7735 based like the Adafruit ones. I"ve got one with an Sainsmart Arduino UNO from China, comes with the ST7735 code for the Arduino by LadyAda.
I have started a project writing framebuffer drivers for small TFT LCDs. I have written a helper module that greatly simplifies writing such a driver. That is if the display is RGB565 and uses SPI. I have ordered two more modules that I will try and make drivers for:
notro wrote:I have started a project writing framebuffer drivers for small TFT LCDs. I have written a helper module that greatly simplifies writing such a driver. That is if the display is RGB565 and uses SPI. I have ordered two more modules that I will try and make drivers for:
This is a short Application Note about how to use ST7735R Controller based TFT screen with RaspberryPi Universal Expansion Boardand RaspberryPi. More information about the screen can be found in the list of my Peripheral Boards.
At this stage, any panel would need to connect either to the HDMI or VGA port. Although there is a dedicated TFT connector on the board it"s not currently available for use. Foundation hopes to sell/promote a tested TFT once all tht other stuff is done!
If you just want to use a display without all of the challenge of getting a display to work from the various pins, you might want to search around for small displays that take either composite or HDMI inputs. Adafruit.com has several displays that take composite. I have a MP4 player from JXD that is fairly small and does video input that I"ve been meaning to use when I get to the r-pi.
Yes it"s ST7735 based like the Adafruit ones. I"ve got one with an Sainsmart Arduino UNO from China, comes with the ST7735 code for the Arduino by LadyAda.
I have started a project writing framebuffer drivers for small TFT LCDs. I have written a helper module that greatly simplifies writing such a driver. That is if the display is RGB565 and uses SPI. I have ordered two more modules that I will try and make drivers for:
notro wrote:I have started a project writing framebuffer drivers for small TFT LCDs. I have written a helper module that greatly simplifies writing such a driver. That is if the display is RGB565 and uses SPI. I have ordered two more modules that I will try and make drivers for:
When compared to the ordinary LCD, TFT LCD gives very sharp and crisp picture/text with shorter response time. TFT LCD displays are used in more and more applications, giving products better visual presentation.
TFT is an abbreviation for "Thin Film Transistor". The colorTFT LCD display has transistors made up of thin films of Amorphous silicon deposited on a glass. It serves as a control valve to provide an appropriate voltage onto liquid crystals for individual sub-pixels. That is why TFT LCD display is also called Active Matrix display.
A TFT LCD has a liquid crystal layer between a glass substrate formed with TFTs and transparent pixel electrodes and another glass substrate with a color filter (RGB) and transparent counter electrodes. Each pixel in an active matrix is paired with a transistor that includes capacitor which gives each sub-pixel the ability to retain its charge, instead of requiring an electrical charge sent each time it needed to be changed. This means that TFT LCD displays are more responsive.
To understand how TFT LCD works, we first need to grasp the concept of field-effect transistor (FET). FET is a type of transistor which uses electric field to control the flow of electrical current. It is a component with three terminals: source, gate, and drain. FETs control the flow of current by the application of a voltage to the gate, which in turn alters the conductivity between the drain and source.
Using FET, we can build a circuit as below. Data Bus sends signal to FET Source, when SEL SIGNAL applies voltage to the Gate, driving voltage is then created on TFT LCD panel. A sub-pixel will be lit up. A TFT LCD display contains thousand or million of such driving circuits.
Topway started TFT LCD manufacturing more than15 years ago. We produce color TFT LCD display from 1.8 to 15+ inches with different resolutions and interfaces. Here is some more readings about how to choose the right TFT LCD.