First time I saw the graphics capabilities of FT800 was on the Gameduino2. From then I’ve wondered if FT800 could be used as graphics controller in my weatherstation project.
Due to limited resolution it could only be used for LCDs up to 5″. Since then, the FT81x series of controllers have been released. They support higher resolutions and allows for typical 7″ displays. In the meantime I’ve also experimented with capacitive touch panels. I find them so much better that the resistive ones.
Right now I have assembled a prototype consisting of:
- FTDI VM810C development board (FT810), available i.e. at Farnell.
- ER-TFT070-4 7″. A 7″ LCD display available at BuyDisplay. They also have a similar display ER-TFT070-2 that has a 50 pin. Make sure to get the 40 pin.
- ER-TPC070-6. A 7″capacitive touch panel 800×480 (built-in FT5316 controller) available at BuyDisplay. It can be ordered WITH the capacitive panel mounted. You can read how about how to wire it up in another blog entry.
- Arduino (UNO)
I’m using the Gameduino2 library that now supports FT810. This combination is easily available, requires almost no soldering (except for the capacitive touch panel cable). It’s obviously a prototype but it allows me to start writing software. I think I now have my graphics base. The Arduino UNO might be replaced by something else.
I’ve basically only copied latest GD2 library files. Added some setup modifications for the 7″ display as discussed in the gameduino2 forum here and here. Also included VM810C board support in GD2.cpp.
Note that a lot of examples in the Gameduino2 programming manual uses GD.vertex2ii. This only support coordinates up to 511. GD.vertex2f can be used instead but does not solve the problem with bitmap assets. I’ve looked at the GD2 code, but I really don’t understand all the bits and pieces. A thread in the gameduino2 forum led me to VertexTranslateX. According to FT81X_Series_Programmer_Guide this command “Specifies the offset added to vertex X coordinates. This command allows drawing to be shifted on the screen“. I’ve wrapped this logic into a separate function. Not sure if this is how jamesbowman would have done it. It should probably have been included in the GD2.cpp somewhere.
Example code with modified GD2 library files can be found in github. It includes a demo that tracks and indicates up to 5 simultanous touches.
FT811 and FT813 support capacitive touch panels. However, the development board I have only has the FT810. This is not a problem. I connect the capacitive touch panel directly to the I2C on the Arduino anyway. You might lose some built-in functinality in FT811/13.
I’ve mesured the total current consumption to over 700mA. This is a problem for some PC USB port, so separate power for the display may be required.
To keep things simple I use the same chip select pin as on Gameduino2. In addition, I connect the standard SPI bus. Refer to source code.
Plan is to add support for basic sensors (pressure, moisture, temperature etc.), wifi and wireless sensor. That will probably be in a separate blog entry.
I also want to create a PCB for all this… and a nice cabinet…