The Environment Monster – Vilius Schmidt – Gottfried Haider

Context and Significance

The interactive art project “The Environment Monster” was inspired by my previous project “Barbie AI.” While “Barbie AI” has no electrical components, the project’s performance demonstrated interactivity that was fundamental to the approach taken in “The Environment Monster.” When researching for, and performing “Barbie AI,” I defined interactivity as “Your action on the artifact should generate a response that in turn you can react back to.” While in “Barbie AI” which took the form of a complex closet that algorithmically selects your clothes and dynamically reads your responses, with “The Environment Monster” a more simple approach was taken to fit the limitation of the Arduino kit. In this case, research on things like toys was more helpful. One toy that became the backbone for “The Environment Monster’s” development was “Tickle Me Elmo.” First introduced to me as a meme, when then Elmo is touched on its stomach, it laughs, swinging its arms and making noise. Later I saw a video of a Tickle Me Elmos that was skinned of its kind face and red fur, the laughing metal skeleton was quite menacing and horrible instead of child-friendly. This is the idea of interactivity that interested me. How do people interact, and continue to interact with something unpleasant or accusatory? This idea birthed “The Environment Monster,” whose wrath punishes you for messing with the natural environment. The target audience for this project in my eyes would be a general adult audience. While maybe not that incautiously curious as children, I believe the message is most important to those adults who have a much greater impact on the environment. Our greed and obsessiveness over the resources of nature should not go unpunished. 

Conception and Design 

In “The Environment Monster,” Both the monster and the environment were physical objects. However, the objects that could receive reactions to be processed by the monster were specific objects in the environment. To welcome the user into touching things in the environment, and for them to touch the proper thing, the things in the environment were made the stand out. Thus, every physical object in the enclosure exhibits a response from the monster when touched. Using capacity touch sensors, the fish and the tree in the atrium naturally stand out being the only objects with a coppery metallic look, thus differentiating them from everything else. However, this did not work for the trash can as well. In the critique of the project, not everyone understood that the trashcan was a moveable and intractable object like the tree and the fish. 

 vs.

Another design choice was making everything out of paper and cardboard. As a light, stable, and malleable material, the environment (from the backdrops to the intractable objects ) was easily able to be created in a simple manner. As none of the interactions facilitated a heavy hand, more study materials were not needed. With more time and skill, however, I would have preferred the monster to not be made out of cardboard and paper cups. While easy to build with and paint on, I found its design quite unappealing, and unable to instill a fear befitting of a monster. Modeling clay was one alternative idea, however was not befitting the necessity to attach the monster with motors. Perhaps the better method would be to 3D print the monster, where more detail could be expressed while also having the customizability to rig move parts. the reason 3D printing was not used was for the time constraint on this project. 

Fabrication and Production

Crafting the Concept: The first challenge that arose in creating the project was defining a concept for the project. I started with an idea of a monster that you could “bother,” in which, using a variety of sensors, the monster would get mad if it was touched, petted, or even if a light was flashed in its eyes. This idea was morphed into a security bot, which could be set off in the same way the “bother it” monster would have been. However, its lack of message, and complex sensor interactions it would require made it impractical. Thus “The Environment Monster” was born. Taking inspiration from both the previous ideas, this monster would become progressively angrier the more the environment was messed with, in which pieces of the environment would be switches that would affect his LED eyes and arms to express his mood. 

Building the Monster Prototype: With the idea of not involving an environment, multiple objects needed to be physically interacted with. With the help of Gottfried, I selected capacitive touch sensors as environmental triggers for the monster. First using example code for digital read, I tested the capacitive to make sure that when pressed its value would read “1” and when not touched its value would be “0”. A piezoelectric sensor was then tested using an analog read function to test its values. a light yet significant tap gave a read of a value over “100.” With this, the capacitive touch sensor and the piezoelectric sensor were placed in a breadboard and connected to a digital pin and an analog pin together, and a code using a conditional was created so that action would occur if either the capacitive touch sensor or the piezoelectric sensor were activated. 

code:

int pushbutton = 9;
int vibrate = A0;
void setup() {
//Put your setup code here, to run once:
Serial.begin(9600);
pinMode(pushbutton,INPUT);
}
void loop() {
 
int buttonstate = digitalRead(pushbutton);
int sensorValue = analogRead(vibrate);
if(sensorValue > 100 || buttonstate == 1){
Serial.println(“roar”);
delay(100);
}
}
The idea was that if the monster was vibrated, or an object in the environment was touched, the monster would become angry and go “roar”. As “roar” was not the response I was looking for, I then was cued into Smart LEDs a a way to express the monster mood using color-changing eyes by Gottfried. Since a basic coding prototype had successfully determined the viability of the sensors, I then worked on coding more complex reactions for the monster. To show the monster becoming progressively more angry, I tried to incorporate states into the code. So that each time the sensors were disturbed, it would go to its next stage of anger, starting happy with green eyes, then going to yellow eyes, and then finally to red mad eyes. However, multiple complications arose at this step, as the monster would cycle through these steps and flip between them without prompt. Using both delay functions to stop the monster from transiting states too fast, and using code to detect the pressing and un-pressing of a button did not fully remedy the unreliability. Thus a different avenue was approached. Using the help of Gottfried, using variables, a conditional was set that when the capacitive sensor was touched on, an “angriness” value would increase, and when a certain threshold was reached it would have a max angriness of “1.00”. The LED eye color would then dynamically change with the “angriness” value. This is the effect that was used to continue with the project. The piezoelectric sensor was ditched. After the wiring for a second capacitive touch sensor was added so that a fish and a tree would become intractable objects in the environment, a servo motor was added to the Arduino. The servo motor was coded to stay still when the angriness was under 1.00 angriness, but when max angriness was reached, the servo would sweep to simulate anger. I then built the environment out of cardboard and cut out details for the monster’s face. I also saudered the capacitive touch sensors to a cardboard cutout of a fish and a tree that had copper tape on them to complete the interactive elements. Finally, I attached the glowing eyes and the sweeping arm. 
 
 
Finishing the Monster: Helpful ideas for improvement came about in user testing. The ones that I decided to take were adding noise to the monsters anger, decorating the diorama, and to add more intractable objects. First using a loud single tone buzzer, I made the monster beep on and off once the condition was met for max anger. for the adding of more intractable objects, a magnet sensor was added, and a new conditional and variable was created for “happiness” so that when the magnet sensor was not detect a magnet, the monster would be happy. I then created a condition for max happiness in which the servo would gently wave when reaching max happiness, and also included in the LED function so that the eyes would change dynamically to blue when happiness increases. Finally I worked with my group to decorate the diorama. 
 
Final Code:
int tree = 9;
int fish = 12;
int treestate;
float angriness = 0.0;
float happiness = 0.0;
const int buzzerPin = 5;
int SENSOR_PIN = 2;
int sensorVal;
#include <Servo.h>
Servo myservo;
int pos = 0;
#include <FastLED.h>
#define NUM_LEDS 60 // How many leds on your strip?
#define DATA_PIN 3
CRGB leds[NUM_LEDS];
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(tree, INPUT);
pinMode(fish, INPUT);
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(50);
myservo.attach(8);
pinMode(SENSOR_PIN, INPUT);
}
void loop() {
treestate = digitalRead(tree);
int fishstate = digitalRead(fish);
sensorVal = digitalRead(SENSOR_PIN);
Serial.print(“Button: “);
Serial.println(sensorVal);
if(treestate == 1 || fishstate == 1){
// making me angry
angriness = angriness + 0.05;
if(angriness > 1.0){
angriness = 1.0;
tone(buzzerPin, 200, 500);
delay(100);
for(pos = 0; pos <= 90; pos += 1){ // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(3); // waits 15 ms for the servo to reach the position
}
for(pos = 90; pos >= 0; pos -= 1){ // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(3); // waits 15 ms for the servo to reach the position
}
}
}else{
angriness = angriness – 0.01;
if(angriness < 0.0){
angriness = 0.0;
}
}
**code inspired by Gottfried Haider
if(sensorVal == 0){
// making me happy
happiness = happiness + 0.03;
if(happiness > 1.0){
happiness = 1.0;
for(pos = 0; pos <= 45; pos += 1){ // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15 ms for the servo to reach the position
}
for(pos = 45; pos >= 0; pos -= 1){ // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15 ms for the servo to reach the position
}
}
}else{
happiness = happiness – 0.07;
if(happiness < 0.0){
happiness = 0.0;
 
}
}
 
// XXX: look into .lerp8()
leds[0] = CRGB(255 – (happiness * 255), 255 – (angriness * 255), 255 – (angriness * 255));
leds[2] = CRGB(255 – (happiness * 255), 255 – (angriness * 255), 255 – (angriness * 255));
FastLED.show();

**Code inspired my Gottfried Haider

//Serial.print(“Angry: “);
//Serial.println(angriness);
Serial.print(“Happy:”);
Serial.println(happiness);
delay(50);
}
Conclusion
The goal of this project was to make a monster that acts as a voice for the environment. When you mess with the environment, the monster will get mad, however if you help the environment the monster will be happy. This art piece is supposed to make us think our own relationship to the effect we have on the environment. I think the project aligns well with my definition of interactivity. There are multiple different ways you can initially act on the piece, and the monster is able to act back in different way according to your actions. The monsters actions themselves also affect how me may continue to react to the piece. I think that the project is not perfect with interactivity. It can easily be “outsmarted” due to not being able to integrate multiple responses. However, I think the project was successful, as testers, without much promoting had expected interactions with out project. If I was to have more time I would work on tweaking the set design in order to more easily foster interaction, as well as integrate responses. In this process I have learned a lot about the logic of coding, as well as the truly difficult task of producing an interaction from your own imagination. 
 

Idea of security monster