Generative Art: The Poem of Life
The Poem of Life
Generative art created on an ESP-32.
ESPs in the dark
The one above that says “I am struggling” is mine.
Creative Vision
I wanted to envision my ESP-32 as a living being that experienced emotions and random happenings in life. It would start up, experience things, rest, and then repeat again. The waking and sleeping of the machine also serves as a metaphor for life where we are born, get involved in a series of random, spontaneous happenings throughout our lives, and then we die.
The installation space would have other ESP-32s in the same space, so I thought that making my board imitate a living being would be a good way to interact with the other boards and invite viewers to regard these small specks that light up as individual lives flashing in front of them. Each board is merely a speck amongst the multitude, just as in the ending sequence of my program, there are stars to show that’s where come from and what we’ll eventually return to.
Setup
Since our batteries were malfunctioning and we could not set up the ESP-32s independently without a battery, our professor very generously dedicated his time to building a board that could connect up to 15 ESP-32s to a power source. They are connected via USB-C connectors. It looks like this:
Tech and Codey Part
My complete arduino code can be found on my Github here.
The basic structure of the program is
- The Intro Sequence, where the program wakes up and comes into being from an infinitude of stars
- The Main Sequence, where the program randomly flashes 20 different states of being, “I am …”
- The Ending Sequence, where the program falls back asleep and says farewell.
The randomly 20 States of Being are stored in a struct msg_numbers
where each number corresponds to a State. See below:
The randomly generated states of being come from an array that has the numbers 1-20 randomly shuffled using the random number generator. I chose to use an array instead of just randomly generated numbers form 1-20 so that there would be no repetition. See below:
Some of the states also had subtext that came along with them such as beep boop 00101011010
that would be returned whenever the screen displayed “I am coding.” This I put into another function called do motion. I was originally going to include motions such as rotating the screen etc. that triggered when a certain number was called, but I did not end up implementing it. If one were to wish to do so, they could just alter the code in the do_motion function:
Further Notes to Consider
Orientation: the orientation of the board can be adjusted using the rotate function, but because of last minute changes in the plan (i.e. boards frying and batteries smoking), my board had to be displayed vertically. Use the function rotate(#) to rotate the board.