This section is about displays. Mainly different types of controllers (with or without display panels). Refer to another menu for more about display panels and quality.
FT80x and FT81x
The FT800 is a graphic controller targeted for embedded applications to generate high-quality UIs. It has a rich programming API and contains built-in antialiasing, color dither, sprites, fonts etc. It also has built-in audio capabilities. It only supports 512×512 pixels.
FT801 is basically a FT801 with capacitive touch screen support with up to 5 touches and gesture detection. The FT800 pins for resisitive touch are replaced by pins for touch controller I2C interface(such as FT5x06). According to docs, existing touch code shall be compatible. It’s compatible with Azoteq and focaltech. More info about touch capabilities can be found in this document.
New: Oct 2015, The new FT810, FT811, FT812 and FT813 ICs provide up to 800×600 resolution for sharper imagery, increased speed for faster data transfer and image/video loading, and larger memory capacity. This is welcome news, because it makes it possible to use the FT series also for 7″ displays. Press release.
Gameduino2 uses FT800. I could use this solution and try to glue the sensors and a Arduino on the main board. This can give relatively compact and thin hardware. Maybe a bit overkill for my application. It’s not cheap, but compared to the cost for a LCD and shield used in the prototype, its not that bad. Two things I really like (except for great and fast graphics possibilities) is better concept for touch control and built-in support for showing jpg (saved space). There is also a SDcard reader and a accelerometer(!). The latter can be used to change display depending on orientation of the screen 🙂 Gameduino is available at Seeedstudios.
I’m not terribly impressed by the screen quality of Gameduino2 when it comes to viewing angle. According to the designer, he tried several screens that all had similar problems. There is a register that flips the screen upside-down, which gives some more options for mounting the screen. It could help some.
New:Dec2017: Gameduino 3 using FT81x is now in the works by James Bowman.
Alternative version of the gdlib: https://github.com/lightcalamar/GD23Z: “This is the first library that unifies different MCUs. The adjustments are simple depending on your choice, however we can help you solve your doubts and problems related to our community of http://ft81xmania.com forums”
Another solution is to use a basic board such as Atomsofts AtomEVE. I believe it’s 3.3v only, with built-in backlight and a simple audio output, all on a very small PCB. Parts of the design is influenced by the Gameduino2. There are two versions according to AtomSoft: FT800 for resistive touch and FT801 for capacitive touch.
Available on Tindie(no longer available, feb 2016)
There are already people out there that has started using Gameduino2 with alternativ software such as this.
(2017 jan) I’ve experimented with FT810 with 7″ capacitive touch panel and Gameduino2 library here.
This example even shows PCB/schematics for a FT800 shield for Arduino.
RA8875 is a text/graphic mixed display with 2 layers TFT LCD controller. It is designed to meet the requirement of middle size TFT module up to 800×480 pixels with characters or 2D graphic application. Read more at Raio.com.
RA8875 seems to be a bit more flexible regarding resolution, has a range of hardware-accelerated shapes such as lines, rectangles, triangles, ellipses, built in and round-rects. There is also a built in English/European font set. This makes it possible to draw fast even over SPI. But it is not as capable as FT800 when it comes to smooth graphics. There are several 7″ displays with this chip, i.e. this from Buydisplay.com. I’ve experimented with this display.
Adafruit has a board and additional software for it.
Buydisplay has a arduino shield for it.
This completely open hardware and open source software cell phone uses RA8875.
There are experiments with an modified Adafruit_mfGFX to show large custom fonts.
There is also a “little brother” of RA8875, the RA8872 that is designed to meet the requirement of middle size TFT module up to 320×240 pixels. One use is an handheld oscilloscope. However, I really don’t see why I should chose this controller over the FT800… Especially when price is not that important.
SSD1963 is a display controller that supports up to 864 x 480 x 24bit graphics content. It has parallel MCU interfaces. This is the controller that is on the LCD of my first prototype. More or less basic graphical LCD/TFT driver/controller with minimum extras. Supported by Henning Karlsens great UTFT library. It has proved to work, but I would really like something more fancy…
Single-chip SOC driver for a-TFT liquid crystal display with resolution of 240RGBx320
dots. Has some graphics capabilities such as (to be described…)
ILI9341 supports parallel and serial peripheral interface (SPI). The moving picture area can be specified in internal GRAM by window address function. The specified window area can be updated selectively, so that moving picture can be displayed simultaneously independent of still picture area.
https://www.itead.cc/display/nextion.html Nextion LCD TFT HMI Displays are “intelligent” displays supported by a IDE to make it easy to design interfaces. Seems to gain popularity because it significantly speeds up development time for UI. See more for example in this video from educ8s.tv. Most of the displays are resisitive touch, but there are also some capacitive.
http://riverdi.com/ has several interesting LCDs with various sizes, touch technologies and built in controllers, i.e. FT80x and FT81x. They also have arduino shield for some of the displays as well including software examples. The prices are a bit high, such as a 7″ with FT813 at apprx. $100.
Hotmcu/Thaoyu has a several LCDs. An interresting one is the $38 capacitive touch 5″ display with built-in FT811 graphics controller. If you dont need more than 480×272 resolution you can get away with a $28 5″ display with built-in FT800! They also have several capacitive LCDs without graphics controller such as the 7″ HY070CTP and 10″ HY101CTP.
Newhaven have several displays. Here list of displays with built in FT8xx graphics controller: http://www.newhavendisplay.com/eve2-tft-modules-c-1_990_992.html?zenid=0a73h2fg73mq06u3jk232rjpf0 . They tend to be more expensive that the buydisplay and Thaouy versions.
Several uses the some variants of Himax controller such as this HX8369 based IPS 4.3″ from Newhaven. Newhaven also have arduino code for it. Not sure if it is supported by the UTFT library that at least supports HX8352-A according to doc.
I came across this project when reading about thing-printer. A side project of Thing is a small HDMI display. Read more here and some development history here describing development and testing of screen, touch and drivers. General discussion of search for a 4.3″ display. The display is LQ043Y1DX07 (same as HTC desire HD) with driver HX8363-A from Himax.
It also uses capacitive touch sensor. The designers of Manga Screen claims that the feel of mXT224 is much better that the “chinese copies”.
vizictechnologies has several LCDs such as SmartGPU 2 – LCD480X272 – 4.3″. From their description: “The SmartGPU 2 is a powerful easy to use, intellectual property, graphics, audio, touchscreen and full datalogger processor embedded in a state-of-the-art ARM Cortex-M3 chip; this is mounted on a board with a touchscreen color LCD”. Guess that means they have their own graphics processor programmed into that Cortex chip.
itron SMART TFT TU modules
http://www.noritake-itron.com/NewWeb/TFT/Overview/Overview.asp. Haven’t investigated further.
Open Source 3.2″ TFT Smart Display
Open Source 3.2″ TFT Smart Display used i.e. in open source DDS generator. The board is based on a PIC32 and a 3.2′ TFT with touchscreen (ILI9320 controller, using 16bits PMP). The software has two main parts. One that produces the 2D functions and a GUI with various widgets (buttons, check boxes, sliders etc)
I do also consider using a fast RISC processor such as stm32f4 to do all the work, including driving the display. The STM32F10xxx devices have an embedded FSMC (flexible static memory controller) which can be used together with the on-chip DMA controller to implement a direct drive for TFT-LCDs. However, thinking about hand-soldering that beast of a chip… well… Read more about details in this application note.
I.e. Embedded Artists sell e-ink displays. e-ink could be interresting if you want to battery operated.
Powertip has a range of TFT LCDs with capacitive touch panels. I don’t know anything about them but they look interesting because they use FT5x06 series controller.
http://www.waveshare.com has a 7″ capacitive LCD (800×480) with FT5206GE1 controller at $45.
Cellphone screen / reverse engineering
An option is to use a cellphone display. Andy Brown has a lot of examples on his webpage. The Manga Screen also uses screen from a cellphone.
Adafruit has an interesting post pointing to a list that correlates a lot of older mobile phones with their specific LCDs, LCD controllers, dimensions, serial bus, etc.
Most of the touch screens for hobby usage are resistive. I want capacitive ones. I’ve found:
- 5“TFT SSD1963 LCD Module OPTL Touch Screen Display 480×272 from Buydisplay using a GSL1680 touch controller.
- 7 inch LCD Module w/Optional Capacitive Touch Screen Panel,I2C/SPI from Buydisplay with FT5206 touch controller
- LCD 5 inch Display 480×272 TFT Module OPTL Touch Screen from Buydisplay. This might be compatible with Gameduino2/FT800. Uses a GSL1680 touch controller.
- Several at Newhaven. Example NHD-4.3-480272EF-ATXL#-CTP that uses FT5x06 touch controller. It is expensive at $58.
It was relatively easy to write software driver for FT5xx6, some information can be found in my blog entry 7″ LCD with capacitive multitouch up’n running (Note that according to https://github.com/hampussandberg/HexConnect/wiki/Touch-Controller, the FT5x06 has firmware that are tailored to specific displays so I don’t know how easy it will be to buy a separate FT5206 and connect it to another LCD). More or less the same driver was also used for the FT5306 based standalone touch panel, ref. my blog entry 7″ standalone capacitive multitouch panel (800×480).
According to the datasheet, the FT801 chip supports FT5x06 or Azoteq IQS5xx chips. The IQS550-TS43 (more in this video) 4.3″ is available at Mouser for $10(?) (Note, April 2015: Current price at Mouser seems to be closer to $20 in single quantities…) including controller. Combining this with a cheap $10 4.3″ from buydisplay can be a cost effective solution at $20. Almost 1/3 of the Newhaven. Might be that the Newhaven is a better display though.
Adafruit now have a 2.8″ capacitive touch display using FT2606.
Here is a link explaining the difference between capacitive and resistive touch.
Panel, drivers, controllers – confused ???
I’ve been a bit confused about all various LCD panels, corresponding controllers etc. What the different parts actually do. I’ve come to this (preliminary) explanation for myself (feel free to correct me in the comments field below):
Bare LCD and driver
The bare lcd panel itself needs a driver. If it was just a raw LCD it would need hundreds of connections to control the pixel matrix. So the driver takes care of those signals. The interface to the driver is often referred to as 8 (or whatever) bits RGB with sync (VSYNC/HSYNC) and clock. An example of a bare lcd with driver is NHD-4.3-480272EF-ATXL#-T from NewHeaven. It is driven by Himax HX8257-A. The connector to a LCD/driver combo is normally(?) a 0.5mm pitch 40-pin. Controlling the sync clock etc. signals requires significant computing power and timing. An introduction can be read here.
In order to make it possible to use such a display(with driver) from i.e. an arduino, an additional controller is needed. Examples are FT800/FT801 and RA8875. These controller generates the sync signals and RGB signals. The arduino only has to write images or commands to the controller by parallel or serial interface.
Combined LCD driver and controller
Or, maybe more often, there are many displays that has combined driver and controller. Example is NHD-4.3-480800EF-CTXP that has a HX8369 controller. It comes with 0.5mm pitch 40-pin connector. a Another example is this 3.2″ from Coldtears that uses HX8352 and is soldered to a board with 40 pins header that is a bit easier to work with. The arduino communicates with the controllers through serial or parallel interface, but there are typically some differences in how they are programmed. Luckily, Henning Karlsen have a unified library (UTFT) that supports many of the controllers (i.e. the 3.2″ from Coldtears), so you don’t have to write them from scratch. To save some valuable memory it might be wise to remove the ones you do not need. Take a look at the UTFT source code to see what registers are used on the different controllers. There are also some that have modified/reduced the library to speed things up such as this C++ vs Assembler performance on AVR. There are also other separate code out there tailored to specific controllers. But I think UTFT is a good starting point for beginners.
For beginners, I recommend buying a LCD with controller that is supported by the UTFT library. Make sure you buy one that has the controller pins available as a 40 pin connector at the end (not 0.5mm pitch!). Makes it easier to connect to an arduino. A problem is that the LCDs I/O are often 3.3V. The LCD also needs power for LCD backlight. Luckily there exists so-called arduino breakout boards that contains the 5V to 3.3V conversion, backlight driver and often also a memory card slot. You then end up with a layer of Arduino(UNO/MEGA) -> LCD breakout card -> LCD with driver and controller. Such as my prototype. This video by Dejan Nedelkovski looks like a good intro to such a combo. From there, you might chose to buy only a bare display(with driver) and a separate controller board and wire it yourself. The adafruit RA8875 controller board and This 5.0″ TFT screen is a nice combo that has software and support. You then only need to connect wires from arduino to the controller board. Note that Adafruit calls the RA8875 board a “driver” board. In my terminology above, it is a “controller” board. Might be that my terminology is not correct… or maybe there are no strict definitions on what is controller and what is driver…
A relevant newbie thread about this can be found here…