TEMPORAL AGENT (Art Piece)
![machine 1](/proxy/?url=https://content.instructables.com/F4X/RQ8O/LVAYX6FA/F4XRQ8OLVAYX6FA.jpg&filename=machine 1)
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
![image_123927839.JPG](/proxy/?url=https://content.instructables.com/F7R/TDHM/LV9JH3LG/F7RTDHMLV9JH3LG.jpg&filename=image_123927839.JPG)
![image_123927839 (1).JPG](/proxy/?url=https://content.instructables.com/F6R/EXR9/LV9JH3LA/F6REXR9LV9JH3LA.jpg&filename=image_123927839 (1).JPG)
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
![IMG_0600.jpg](/proxy/?url=https://content.instructables.com/F38/CAV2/LV9JH41H/F38CAV2LV9JH41H.jpg&filename=IMG_0600.jpg)
After finalizing my idea, I connected a servo motor & simple OLED screen (0.91", 128*32 SSD1306) to my Arduino.
Code for Screen & Servo
![servo and text count screen](/proxy/?url=https://content.instructables.com/FFS/EDAQ/LV9JH41U/FFSEDAQLV9JH41U.jpg&filename=servo and text count screen)
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
![colour-sd-lcd setup. changing... the screen...](/proxy/?url=https://content.instructables.com/FBC/AGP8/LV9JH4B0/FBCAGP8LV9JH4B0.jpg&filename=colour-sd-lcd setup. changing... the screen...)
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
![images working](/proxy/?url=https://content.instructables.com/FPD/FC9P/LV9JH55X/FPDFC9PLV9JH55X.jpg&filename=images working)
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
![tempo.png](/proxy/?url=https://content.instructables.com/FMY/KJIM/LV9JH65B/FMYKJIMLV9JH65B.png&filename=tempo.png)
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...
![evilCircuit.jpg](/proxy/?url=https://content.instructables.com/FLF/C976/LV9JH6SK/FLFC976LV9JH6SK.jpg&filename=evilCircuit.jpg)
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!
![IMG_0669.jpg](/proxy/?url=https://content.instructables.com/FH7/S9T8/LVAYX6DJ/FH7S9T8LVAYX6DJ.jpg&filename=IMG_0669.jpg)
![works.png](/proxy/?url=https://content.instructables.com/FOL/QYBK/LVAYX6PA/FOLQYBKLVAYX6PA.png&filename=works.png)
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!
![machine](/proxy/?url=https://content.instructables.com/F7F/2479/LV9JH7RR/F7F2479LV9JH7RR.jpg&filename=machine)
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