Adafruit is open and shipping! Let's build back better, together!
0

Better 3D graphics on the Arduino: avoiding flickering and tearing #Arduino #Graphics

The crawlingrobotfortress blog posts about creating better 3D graphics on the Arduino Uno. With the speed and memory of Arduino 328 boards, flickering and image tearing may be common:

A while ago I purchased a cheap $4 Chinese LCD Arduino shield from Ebay. The board arrived with no documentation. … The vendor provided an archive containing a few amusingly translated datasheets, as well as a copy of Adafruit’s Arduino LCD drivers. Evidently the product is a clone of the Adafruit LCD shields, and uses the ILI9341 LCD driver. I had hoped to use the display to show short animated GIF loops. This is not, in practice, possible. Test animations loaded slowly, with noticeable flicker and vertical tearing. The Arduino does not have enough speed or bandwidth to render full-screen animation frames, but what about 3D vector graphics?

Both optimizing ILI9341 LCD drivers and rendering basic wireframe meshes have been done before. XarkLabs provides an optimized fork of Adafruit’s library. Youtube user electrodacus has also implemented an optimize driver for the ILI9341 communicating over SPI. Existing 3D wireframe demonstrations, even ones using optimized drivers, display a noticeable flicker when the animation updates. This flicker is caused by the delay between when the previous frame is erased and when the new frame is drawn.

There simply isn’t enough processing power on the Arduino to render anything significant within one frame length, and isn’t enough memory to perform off-screen rendering. The ILI9341 supports a 16-bit RGB color interface with 320×240 pixels, and buffering even a single frame would take 150 kilobytes of memory, compared to the AtMega328’s two kilobytes of RAM.

The solution is to render animation frames in such a way that the intermediate rendering stages are not noticeable to the human eye. This can be achieved by rendering subsequent frames on top of previous frames without erasing, and then erasing only those pixels that have changed.

See the techniques in the article here and in the video below.


Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Join 25,000+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Follow Adafruit on Instagram for top secret new products, behinds the scenes and more https://www.instagram.com/adafruit/

CircuitPython – The easiest way to program microcontrollers – CircuitPython.org


Maker Business — To make it through a tough business cycle, layoffs should be a last resort

Wearables — Pipe cleaner purposes

Electronics — Diode Test Current

Python for Microcontrollers — Python on Microcontrollers Newsletter: CircuitPython 6 released and projects galore! #Python #Adafruit #CircuitPython @micropython @ThePSF

Adafruit IoT Monthly — CO2 Cuckoo Clock, Wippersnapper, and more!

Microsoft MakeCode — Making a Smart LEGO Ferris Wheel!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — JP’s Product Pick of the Week 11/24/20 Adafruit ST25DV16K I2C RFID EEPROM Breakout – STEMMA QT / Qwiic @adafruit @johnedgarpark #adafruit #newproductpick

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !



No Comments

No comments yet.

Sorry, the comment form is closed at this time.