TEMPORAL AGENT (Art Piece)
This is TEMPORAL AGENT, an art piece made to explore intersecting ideas of time, spirituality, and technology.
It consists of 2 Arduino microprocessors, a servo motor "faux-metronome", a text-screen, and an image-screen.
I made my machine to represent shifting experiences of time in the modern age:
- accelerated processes of work, production, and education
- our culture leaning towards automation, taking things for granted
- living life through temporal regimes, not through experience.
I also wanted to contrast ideas of MECHANICAL / TECHNOLOGICAL time and HUMAN / SUBCONSCIOUS time in my piece.
This instructable is a walk-through of my design process!
Supplies
I used:
- 2 arduino UNO microprocessors
- An SD card module & low-GB SD card
- An ST7735 128x160 1.8" TFT display
- An SSD1306 128×32, 0.91", OLED display
- A 9g servo motor
- Jumper wires, breadboard
- Tape, blutak, superglue: random materials to secure & build the base
I also used ADOBE PHOTOSHOP to rescale & reformat images into 128x160 bitmaps. And MIRO as a documentation tool & workspace.
Brainstorm & Concepts
Again, my goal for this exploration was to explore ideas of time, spirituality and tech. I had a very broad focus that I wanted to narrow down into a machine output with a clear point.
I wanted to convey "rigid routines" and counting, as well as the messy and fractured nature of memories. I really liked the idea of using LCD screens, as well as the idea of incorporating sound and language.
MY MACHINE IDEA....
After a lot of brainstorming, I decided to make a metronomic device that'd make use of image, language and sound. The metronome would move in a second-by-second manner like a clock.
A text screen would change with each left-right or right-left movement of the metronome, counting 1 to 4 in regular second intervals.
As well as this, a TFT screen displaying coloured bitmap images would change at random intervals.
Adding Text Screen & Servo
After finalizing my idea, I connected a servo motor & simple OLED screen (0.91", 128*32 SSD1306) to my Arduino.
Code for Screen & Servo
I added code to move my servo in a roughly-metronomic fashion, 45 degrees left to right.
I also wrote code for my screen to iterate through a string array of "counting words" in different languages:
- English
- Te Reo Māori
- Hebrew
- German
- Binary
I refined my program to delay the screen-changing & metronome movement, making for a more natural feel.
Downloads
Connecting Colour TFT
Now I had to get images working. I started by connecting the colour TFT (ST7735 1.8" 128*160 screen) to a second Arduino UNO I had.
Wiring SD Module
I wanted to add an SD module to access stored images.
My ST7735 had pins for an SD card, but this would not work no matter how I changed the pinouts. It turned out that I had blown it (?) by accidentally switching my VCC & ground pins, hahaha... The good news is all the pointless troubleshooting I did helped develop my understanding of pinouts & Arduino problem-solving strategies.
Anyway, after realising the TFT SD card was shot, I connected this external module to my circuit. I used existing tutorial code & images to test that the screen worked: above is a video of this.
Adding My Own Images
I replaced the tutorial images with my own. The images I collected were related to my themes: the past, work culture, and emotional memories.
I used photoshop to convert these images to bitmaps. These had to be 60kb each.
First, I scaled my images to 128x160 format, and then hit "save a copy" -> 24-bit bitmap. I moved these onto my SD card, and confirmed that they worked.
PARTS WORK: Now Join Em...
After confirming that both the SERVO/COUNT and the CHANGING IMAGE SCREEN components of my machine were functional, I combined them into one circuit.
This was evil as... It was so janky. So many things were broken. I messed up the order of some pins, and my sketch took up too much memory.
I also encountered some logic issues in my new code. I had conflicting delay/count mechanisms between the servo & image sketches (delays & loops in the image sketch would interfere with the second-by-second mechanism of the servo).
Solution: 2 UNOs!
The obvious, easiest solution to this was to just go back to using two microprocessors.
I split my code back into two files, and moved the servo & lcd to a different microprocessor. I decided to run my "big colour screen" program's sketch through my computer, and have my servo/lcd sketch loaded onto the other UNO board.
This was good, as I didn't have to worry about device communication or delays anymore. I also freed up enough memory to get my image-screen working again.
FINAL OUTPUT!
This is my final output. I made a body for it using glue, tape, and pieces of scrap card. I taped my wires down as well because the fragility was making me nervous, hahaha...
I think TEMPORAL AGENT does what I wanted it to. It is very engaging: I cannot stop watching the bar move and the screens change. It has clear links to time and creates feelings of melancholy and nostalgia... I like it a lot.
This project was very fun to make. I was new to Arduino and have learned a lot about what I can do, how to problem solve & how to learn. I'm glad I understand screens & bitmaps now.
Here is a link to my code:
https://github.com/jackyardbackoff/TemporalAgent