Arduino Uno R3 graphics accelerator shield uses no pins


Andy Brown has written an article detailing his Arduino graphics accelerator open source project:

This project brings together the knowledge that I’ve gained over the last few years to bring you a graphics accelerator for the Arduino Uno R3 based on an ARM Cortex M0 core attached to a 640×360 LCD from the Sony U5 Vivaz cellphone.

Via the contact form.

Check out the video after the break.

Join the Conversation


  1. Um, so we are using a micro that is about 10x faster and a lot more capable than the ATMega in the Arduino Uno to run the display? If someone is going to this length and complexity, why to keep the Arduino there at all? The STM32 can handle all that stuff with ease.

    This is kinda like bolting a Ferrari to a Trabant in order to be able to drag race the Trabant.

    Arduino is cool but there are some things it isn’t good for and driving big TFTs is certainly one such thing. Instead of trying to make a ridiculous shield it would be a lot better engineering to switch to a more reasonable tool for the job (and/or point the ones who don’t know better yet to it!).

    1. Jan,

      The point of using an Arduino to control an STM32 is that both micros have different functions – one is used as an abstracting display driver, and the other is used as an easy-to-program-fun-to-use development tool. You may argue that the STM32 is easy to program as well. However, you can’t deny the existence of several pre-made user libraries and shields for the Arduino environment. It is ridiculously easy for a 10 year old to slap together an Arduino system with WiFi, SD card, RFID, and an STM32 controlled display, and program in a few hours. It would take significantly longer to do the same with an STM32.

      I think a better comparison than the Ferrari-Trabant one is this – would you use ASM to program a computer game any longer? Or would you rather use Java/C/etc/etc? I know that ASM is much more powerful and gives you more control over almost everything, but I would most definitely use a higher level language because it saves me a ton of time and is just easier to use.

    2. Funny you should say that. According to Wikipedia: “Another popular modification is to combine a Trabant with a Japanese superbike engine, like that in the Suzuki Hayabusa (a combination known as Trabusa). Some of these cars have a rated power of over 150 hp (112 kW). The car’s light weight gives a power-to-weight ratio of 11 lb/hp (149 W/kg), allowing these vehicles to achieve performance comparable to modern mid-range sports cars.”

      In all seriousness though – the “Ferrari bolted to a Trabant” very much does make sense if you only know how to shift with that steering-wheel-handle-thing the Trabant had and you’re disinclined to learn how to paddle shift, even if that’s the more efficient way. And let’s face it, ALL of the whole Arduino buzz is about facilitating people who are disinclined to learn how to use things the right (but much harder) way.

  2. Does anyone see the cool factor in jamming a v12 Ferrari eninge into a Trabant!?

    I’d LOVE to see that.

  3. imho, this is more like using the V12 Ferrari engine to power the windshield wiper :D
    It accomplishes an auxiliary function, but doesn’t add any “raw power” to the car.

  4. I don’t really agree Jan, this was just a project of Andy to make an open source TFT shield for the Arduino. He could obviously use an ARM for everything, and he also has FPGA experience, but for the average Arduino user, a shield like this could greatly benefit them.

  5. @nick that is exactly my point – average Arduino user should learn to use proper tools for the job. If this was for the Arduino Due, which is ARM based, or something like mBed, I wouldn’t have said anything, because those are reasonable platforms for driving a TFT.

    I fail to see how this sort of thing is going to benefit an average Arduino user – the display needs a GUI library to be really useful, the I2C commands are going to be fairly limited in what they can do. And ATMega328 doesn’t have neither the RAM nor performance to generate a sensible UI in real time out of lines and rectangles.

    This sort of shield is going to be only a big frustration to the average Arduino guy (or girl) who were lured in by the false impression that the Mega can handle it.

  6. @Rohit – see my comment to Nick
    Do you really think that an 10 years old can program this type of screen to do anything sensible without a very rich GUI library (and probably even then).

    Coupled with the underpowered platform it is only going to be an expensive source of frustration.

    It *really isn’t* about the Arduino language being simple – your remark about assembler vs C is completely off the mark.

    1. “Do you really think that an 10 years old can program this type of screen to do anything sensible without a very rich GUI library (and probably even then)”.

      Actually, yes. IMHO, that’s the whole point of the Arduino ecosystem – to draw in people who have almost no idea of electronics, and introduce them to various possibilities. Look beyond just the ATMega, and the limited RAM/ROM. Rather, look at the Arduino environment as a whole. I myself don’t use the Arduino platform for long term projects, but I can certainly use it as a powerful proof-of-concept tool.

      I scavenge components from consumer electronics – the Arduino is a great way to get scavenged sensors working, just because there are so many people out there who’ve written libraries that you can directly use (or tweak a little and then use).

      To me, the point of the Arduino is not about raw power or huge amounts of RAM or super high speed ADCs – it’s about ease of use. I use the PICs and MSP430s as my primary devices, and write drivers for a lot of sensors. I really don’t want to spend 10 hours writing a driver and later discovering that the scavenged part wasn’t working in the first place. I test on the Arduino, and then commit to either a PIC or MSP (or even an ARM!)

      About my comparison being off the mark, well, it’s a matter of perspective, isn’t it? You’re free to interpret/agree/disagree :-)

      1. Rohit, nobody is disputing that. I have no problem using an Arduino, be it Uno, Mega or just the libraries on a bare chip to build stuff quickly. It really is good at that, even though things could be certainly done in a more efficient or less memory hungry ways, but it is good enough.

        However, one needs to make a distinction between what is a good engineering and when it becomes a pointless exercise. Otherwise you risk running into the classic situation “if all you have is a hammer, everything looks like a nail” – if all you know is an Arduino, you need to resort to kludges like this shield.

        The point I am trying to make is that it would have been a lot more beneficial to educate the people wanting to use similar peripherals (not only displays, also high speed ADC/DACs, cameras, etc.) to move up to more powerful platforms that can handle these with ease and without having to bend over backwards three times in the process, all the while shelling out a lot of money for the Ferraris to bolt on their Trabants to make it even work together. And it doesn’t have to be anything complicated, as e.g. the mBed or Raspberry Pi ecosystems show.

        BTW, did you actually look at the code that is available for that shield? There isn’t any (yet). It is a work in progress with some low level features like drawing rectangles, lines and images. With this type of project, it is the code/driver what will make or break it. Hats off to the author if he manages to finish it, but it is an enormous job and display-specific. Once the display module he is using stops being available (it is from an obsolete phone), things will need reworking. A lot of work for a niche application, IMO.

  7. For the fun of it, I’m with you. I build something to water my plants, took probably more time than some manual work for the next twenty yeas… each to his own.

    There is a lot of display stuff out there. Some of it works, some not, some are difficult, some not so much.

    I think there is a big potential for a solution that does the following:
    – minimal footprint in ATmega328P –> own cpu
    – targeted to display data –> set of gauges etc.
    – basic input –> option for buttons around the screen (no touch)
    – easy connection –> i2c
    – bright and nice –> OLED (two versions: mono and color)
    – size at about 300×200

Leave a comment

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.