2024
Ken Zhixing Zhang
Inmi Lee
Arduino UNO, Processing, 3D Printing, Mini Pixel, cable
Instead of passive and purpose-oriented interactivity, I want this work to be active, to create a space for people to think and to interact spontaneously with the environment. I have created a “park”, which can be indoor or outdoor, where different media, both natural and man-made, are combined to guide the viewer to immerse in the environment. The interactivity of the work aims to stimulate sensory experience and internal reflection. Participants do not need to “operate” any device; participation itself is already a kind of interaction. It focuses more on creating an atmosphere and evoking emotions by combining fog, music, light effects, and smells to provide a space that awakens people to reflect on the relationship between nature and the artificial world.
During the production process, I originally planned to build a simple interactive experience with a sense of ceremony by triggering the ignition through a magnet sensor and using a motor to control the lifting of the device, and control the speed by the surrounding temperature and moisture. However, due to the excessively long wires and high resistance, the magnet sensor's mounting distance was limited, making it impossible to accurately trigger the ignition device. In addition, the power of the motor was not enough to support the lifting and lowering of the heavier device, and the whole design presented a serious bottleneck in its realization. At the same time, the intervention of the security authorities made the aerial suspension device considered risky, which caused my original plan to encounter sudden resistance. In the face of these challenges, my project was forced to go into “emergency fix” mode, culminating in a brief 10-minute attempt in the dead of night. In the cold and darkness of Shanghai's winter, I continued to work through the night, trying to find a glimmer of hope. The all-night cold repeatedly eroded my endurance, but it also inspired me to shift my thinking about interactivity to encouraging a deeper level of thinking and relaxation for the audience. In the end, although the project did not materialize as expected, it did promote a change in my perspective on interactivity and a deeper level of exploration.
Through this project, I have gained a deeper understanding of the word “interaction”: it is not only the operation between human and equipment, but also the deep connection between human and environment, human and self. Reflecting on this process, I believe that future interactive design should not only focus on the realization of technology, but also pay attention to how to trigger the audience's emotional resonance and internal thinking through my interaction work.
In the future, I hope that this work can be utilized in a wider range of spaces, such as the opening ceremony of the Olympic Games. The core spirit of Olympic Games is an event with unity and peace. I will explore how the audience can change the environment they exist in through their behaviors, such as moving, staying and breathing, so as to achieve certain kind of unintentional interaction. The mist and the change of light and shadow in the stadium may make everyone feel the “blurring of boundaries” psychologically, which is very much in line with the spirit of the Olympic Games that transcends national boundaries.
Install it secretly; E, Ken Zhang, 2024
Compulsory removal; E, Ken Zhang, 2024
The interaction in this project is not limited to the viewer and the work, but also extends to the complex relationship between the regulator and the artwork. In order to preserve their own performance and goals, and in order to ensure safety, the regulators intentionally prevented the artwork from appearing in the public-facing space (the main entrance) by making it more difficult to be approved and by citing safety as a reason for preventing the artwork from appearing.
This intervention not only makes the realization of the work a huge challenge, but also exemplifies the interaction between artistic creation and the regulator. To a certain extent, the behavior of the supervisory authority reflects a need to “control” public space, with the intention of preserving public safety and order, but this control may also limit the freedom of artistic creation and the space for expression. This interaction will gradually lead me to think about the relationship between art and social regulation: when an artwork enters a public space, it does not only engage in a dialog with the viewer, but also needs to consider the political climate of the place where it is displayed, and engage in a game of negotiation with external powers.
import processing.serial.*;
Serial myPort;
//int flameIntensity = 0;
int threshold = 200;
//float d = 0;
float h = 22;
float s = 230;
float b = 0;
void setup() {
size(2200, 1200);
myPort = new Serial(this, "/dev/cu.usbmodem14101", 9600);
colorMode(HSB, 360, 255, 255);
}
void draw() {
background(0);
fill(h, s, b);
//ellipse(width / 2, height / 2, flameIntensity, flameIntensity);
rect(0, 0, width, height);
}
void serialEvent(Serial p) {
String arduinoInput = p.readStringUntil('\n');
if (arduinoInput != null) {
arduinoInput = trim(arduinoInput);
float inputValue = int(arduinoInput);
println(b);
if (inputValue != 0) {
//d += 0.5;
b += inputValue/400;
//flameIntensity = constrain(int(d), 0, width);
}
if (b > threshold) {
myPort.write('1'); // Send feedback to Arduino
println('1');
} else {
//myPort.write('0');
//println("0");
}
}
}
#include <FastLED.h>
#define NUM_LEDS 180
#define DATA_PIN 3
CRGB leds[NUM_LEDS];
int r = 255;
int g = 100;
int b = 50;
float output = 0;
float tmpIndex = 0;
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(255);
Serial.begin(9600);
}
void setLEDColor(int index, float rFactor, float gFactor, float bFactor) {
if (index >= 0 && index < NUM_LEDS) {
leds[index] = CRGB(r * rFactor, g * gFactor, b * bFactor);
}
}
void loop() {
tmpIndex = analogRead(A0)*2;
output = digitalRead(8)*tmpIndex;
Serial.println(output);
//Serial.println(digitalRead(8));
if (Serial.available() > 0) {
int center = NUM_LEDS / 2 - 1; //half
for (int offset = 0; offset <= center; offset++) {
if (center - offset >= 0) {
setLEDColor(center - offset, 1.0, 1.0, 1.0);
}
if (center + offset < NUM_LEDS) {
setLEDColor(center + offset, 1.0, 1.0, 1.0);
}
FastLED.show();
delay(33);
}
delay(1000*60*5);
}
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB::Black;
}
FastLED.show();
}