Gareth's blog

EPS32 "Life is Life" (Conways Life)

Gareth's picture

Here is a test of a flexible P4 RGB LED 64x32 matrix screen.

My trusty "Conway's Life" program was used as the test culprit along with a variant of the

adafruits P3 matrix driver Library  (arduino/mega/etcetc)

ESP32 P3/P4 matrix driver Library

ESP32 > 3-Bit & 14-Bit VGA graphics (Sprite Update)

Gareth's picture

If you need to literally display things out of an ESP32 then well recommended is Bitluni's ESP32Lib library.

14-Bit colour Max Headroom is displayed with the ESP32's 3D Graphics Engine, STL file that has been Low_poly_ed to 5000 Triangles.

ESP32 Into the Matrix - WebServer - realtime interaction with NeoPixels

Gareth's picture

Here is just one implimentation of using the ESP32 as a WebServer.

The example uses an ESP32 as a Webserver to service a Webpage which contains a matrix of switch buttons. One GPIO of the ESP32 controls a string of 100 Neopixels arranged in a 10x10 matrix just like the Webpage.

By clicking the mouse on the Webpage matrix an event sends a HTML header back to the ESP32, this header contains the position of the button pressed, which in turn toggles the particular Neopixel in the string.

ESP32 - Pushing a Varaible out to multiple GPIO pins using registers

Gareth's picture

How to output a variable directly to GPIO pins ... i.e. in parallel.

This can be done using the ESP32's registers.

// sending a variable to GPIO pins Bitwise register style

// create a parallel GPIO bus using GPIO 12,13,14,15 i.e. must be consecutive pins
#define PARALLEL_0  12

int RGBled=000; // demo RGB connected to Gpio pin 12,13,14,15

void setup() {

ESP32 - Setting up 2 cores to run 2 parallel Code threads

Gareth's picture

Here is the simplest way to get code running parallel with two separate cores on the ESP32.

Web Time Syncing for your web enabled mcu projects.

Gareth's picture

My latest ESP32/Nextion touch screen Weather/bus/train times project required a realtime clock.... however it has taken me quite a few weeks to find a good solid solution.
Firstly :-
....if you want to stay sane then avoid epoch time (best thing that happened in 1970's was "punk Rock" not unix count my seconds since birth)....rant over.

TOF gets a local DEBUG screen

Gareth's picture


Up till now I have been porting scans over the Serial wires and manually presenting the data.....

Now the Rig has its own Real-Time Debug TFT Display. (you might see it below the right wheel)

Above is just a 180° scan of this below :-

Wooden planks set at 90° and two DVD cases thrown in for measure.

Time of Flight >>> Rounded Corners !!!

Gareth's picture

I placed the Sensor rig into a cardboard box just to get a feeling for the data.

This is two passes of the probe, so you can see the slight variance in data.

Overlaying the raw data for 180°.... this was with GIMP so its just approximate

all looks kinda good except Hmmmm.... rounded corners cannot be explained...

another scan with DVD's :-

Point cloud anyone !!! maybe 3D scanner

Gareth's picture

Its scanning, the stealthy Dual Time of Flight wiring was a soldering pig to execute (or should I say "Exterminate").

Data is flowing.... at momo a bit strange 200 Steps = 360° (until microstep instigated giving theoretical 1/16 steps ermm if my maths is correct 3200 Steps for 360° however at the price of speed)

Double_ing up the "Time of Flight" sensors

Gareth's picture

Two is better than one...... (or 4 or 8 etcetcetc).

Following successful experiments with 1 single Time of Flight distance sensor mounted to Stepper, watching the scan process its seems to lend its self to setting the scan to just 180° and mount two sensors back to back to extract the whole 360°...... (or 90° scan with 4 sensors, hope you see where I am going with this :-)