top of page
Time Tunnel Machine

Interactive Installation

Year of production: 2016

Arduino, p5.js, a hall effect sensor, NeoPixels, an exercise peddler

Time Tunnel Machine is an interactive installation that gives people the feeling of going somewhere through a tunnel. Before I started this project, I was curious about interactive media installation. From that point, I researched to integrated the user's interaction and media. According to my tests, the series of LEDs is an effective way to represent the speed of which users are moving through the tunnel. In terms of the theme - time travel, by riding a bike, users can feel like they are going somewhere - ideally, it was supposed to go to the past - but it's ambiguous to present where(what time) they are. Nevertheless, users can still control the time speed and the light tunnel reflects it. This experience will encourage people to feel time traveling. Personally, through this project, I want to explore how to control sensors and lights - specifically “NeoPixel” as well as how the immersive media works to engage audiences in a fun way.


Keywords: Physical Computing, Introduction to Computational Media, Interactive Installation, Immersive Space, Sensor


Initially, it was supposed to be a time travel machine, but in terms of ‘where we are’ or ‘ what time zone we are around’, I need to give some visual resources such as a historical photo or indication of years. But I really don’t want to show that kind of visual resources because it is not only too much information but also disturbing an imaginary area of users. The only what I wanted to do is a more intuitive experience such as immersive space or engaged environmental art. As a result, I broke down all the parts into the initial core concept and more focused on their key aspects and features.

On the other hand, in the Physical Computing class, I went through the basic concept of electricity and interaction. Basically, the introduction of electricity such as current, voltage and circuits. Furthermore, in the Introduction of Computational Media class, I learned about the initial concept of code and how to run code based on javascript. Also, in the middle of the semester, I got a synthesis session which introduces combining and communication between hardware and software specifically the bridge of Arduino and p5.js.


Figure 1.   Installation and users


Figure 2.   Mapping for Computational Interaction Flow. Arduino consists of both a physical programmable circuit board (often referred to as a microcontroller) and a piece of software, or IDE (Integrated Development Environment) that runs on your computer, used to write and upload computer code to the physical board.


2.1 Arduino: circuit
Using a hall effect sensor(3144 hall sensor module) responds to the user’s interaction which is measuring the speed of the user’s pedaling though sensing magnetic forces. I considered various method such as Kinect, an IR sensor, a rotary encoder. All in all, in terms of spontaneous responses to a user’s interaction, I chose the hall effect sensor. Specifically, because I used Arduino Uno, the sensor utilizes the interrupt pin 0 (digital pin 2) of it. So, as soon as magnet force interrupts the sensor that attached on the exercise peddler, the microcontroller (Arduino Uno) sends the signal to the Arduino sketch (software). At this point, the noticeable part is that it is without delay because of ‘attachInterrupt’ function. Then, rpm is measured by comparing previous Millis and current Millis, rpm is measured. 

2.2 Arduino: IDE
Once the microcontroller gets variables, it comes into the JavaScript forms sketches and the variables are mapped into 1 to 8 (Table 1). So, basically, it placed on the 8-level which affects the NeoPixels movement. At this point, the interval means the speed of running LEDs because the system draws a light pattern according to the intervals. 


changeVal = map(speedval, fastestSpeed, slowestSpeed, 800, 100);

changeVal = changeVal / 100;

Table 1.   Arduino IDE Sketch: map the sensor value

if (changeVal < 5) {

for (uint16_t i = 0; i < pixels.numPixels(); i = i + pow(2, changeVal - 1)) {

pixels.setPixelColor(i, 1 + i * 0.17, 30, 1 + i * 0.46);


else if (changeVal >= 5) {

for (uint16_t i = 0; i < pixels.numPixels(); i = i + pow(2, changeVal - 1)) {

pixels.setPixelColor(i, 1 + i * 0.46, 30, 1 + i * 0.17);


Table 2.   Arduino IDE Sketch: configure the NeoPixels following the speed


In terms of the interval, between the previous LED which is lit and the next LED which is lit, I use exponential functions for displaying a significant gap (Table 2 and figure 5). Furthermore, in terms of the color gradiation, I picked 2 colors which are the start color - mostly green - and the ending color - mostly blue. And I divided that color into 64 for gradients which have some pattern. If the speed is under 5, it follows that color formula. but if the speed is over 5, it has another color formula that represents a redshift which occurs whenever a light source moves away from an observer.

Figure 3.   This graph illustrates the relationship between the user’s pedaling speed and the turning on the interval of NeoPixel which is following this equation y = 2^(x-1).



2.3 p5.js
Once p5.js gets the rpm of a user, it changes the speed of the soundtrack which I already made. The soundtrack is combined with the dialog from “2001: A Space Odyssey(1968)” by Stanley Kubrick and "Interstellar" by Groove Addicts. Specifically, the dialog is the scene showing Dave deactivating HAL 9000. 




3.1 Pedaling 
Giving users a sense of  ‘going somewhere’ is the most important part of traveling. So I wanted to use a real bicycle, but in terms of scale downing, I got the exercise peddler which encourages people to go somewhere. Actually, it was better than a real bike because not only it doesn’t need a big space but also everyone can try it no matter they can ride a bike or not.


Figure 5.   The process of the cone





My exhibition venue is the pillar of the main exhibition lounge. So, I use a pole, a rod and supporting rings to hang the cone, and it makes a room for pedaling. In terms of the foot panel, it needs to be fitted and fixed precisely because it has to endure the user’s pedaling force (Figure 6. (a))


Figure 4.   Draft sketches


3.2 Tunnel
My project was inspired by Porta Estel·lar by PlayMID. So my first intention was making a real tunnel which offered a room for setting up a real bike. However, in terms of searching for an effective way, I focused on optical illusion more. Ultimately, ‘Tunnel Effect’ is based on an optical illusion. By that I mean, if an object goes to the backward, a user relatively feels like goes to forward. Plus, when people recognize an object, that is because of the vision and sound. As a result, I targeted the viewing angle and decided to create the cone that can cover the user’s viewing angle. Also, the cone shape builds the perspective itself and allows the LED Strip to attach in the regular curve smoothly.  


Figure 6.   The Pedaling panel(a) and the whole installation(b)






To some, people really loved my project. It was successful. I assumed that is because personal’s physical action goes to the reaction of the lights intuitively. Also, in terms of the installation, the cone encouraged a user to be engaged more. Not only a user who is experiencing but also users who are waiting enjoyed the scene of a human who is having a huge beak. Moreover, during the experience, the public said ‘it is trippy and well-matched with sound’.




Screen Shot 2019-09-15 at 11.52.53
bottom of page