You Are the Superhero! – Zhiqiu Wang(Eugene) – Young

Project Title: You Are the Superhero!

Partner: Kaycee

Instructor: Young

The learning process of IMA has come to an end by now. In this last documentation I would like to talk about the process of making my final project “You Are the Superhero!” with my partner Kaycee.

Last semester, when I was wandering around the IMA Final show, I saw my friends showing games made by themselves with their own knowledge after the one-semester IMA learning experience. I have made up my mind that I will make my own game next semester. So, I didn’t hesitate what to make when the final project was assigned. And as a huge fan of Marvel Studio, the movie of The Avengers: End Game inspired me. Since both my partner Kaycee and I love this movie, we quickly agreed on making this game not only to express our own understanding of interactive but also to show our respect to the masterpiece.

The building process at first is quite hard. I was mainly responsible for the coding part while the coding of this interactive game is actually quite difficult for me since it includes many coding skills that I didn’t know. Kaycee and I discussed a lot and turn to many Professors, friends and professionals for help. I personally learnt a lot during this coding process because it is the first time for me to code a project completely based on my own idea and design which means everything has no guidance and starts from zero. And Kaycee spent most of her time on the physical design including connecting the arduino and the appearance box and buttons. And the first demo of our project took us about 2 weeks and was presented in class. The peer review session gave us plenty of constructive ideas and inspiration. For example, the size of the button is not user-friendly and how we can enrich the interaction of our project. And through user test, we found out that the game is a bit unfair since the three superheroes can fire at the same time which makes it too difficult for the Thanos player to win. And the one professor suggest that the users may not understand how the project works so it will be better if the instruction can be written on the starting page. 

We also took the advice of our classmates that to make our project more interactive by adding a voice sensor to control ironman. This process also took us a very long time because it is quite difficult to adjust the proper sensitivity of the microphone. After a lot of user tests and our own experience, we decide to make it 95 db considering the noisy environment of IMA show that day. During the whole process, my partner and I cooperated very well and helped each other a lot, giving each other help and ideas. There is also regret in our final project. Because of the time limit, we gave up our plan of using cameras and filters as a reward in the end of the game by changing the winner’s face into the specific character. 

In a nutshell, the process of producing my final project is a very precious experience. This experience and the whole IMA course has taught me so much, not only about the meaning Interaction but the fun of coding and creating something new and interesting. I will cherish my learning experience in the bottom of my heart and it will definitely benefit me a lot in the foreseeable future.

Week 11 Recitation: Serial Communication Workshop — Zhiqiu Wang

I chose Serial Communication Workshop for this week since the joystick and buttons are used in my final project in the processing. In this section, I learnt more about how to transfer multiple values from Arduino to Processing. Two potentiometers were used to control how the ellipse is moved and there is a button which is used to control the existence of a rectangular.

This recitation is very oriented and clear which offered me a lot of ideas and help on my final project.

Final Project Essay by Eugene

Final Project Essay by Eugene

Project name: You are the SUPERHERO

Project partner: Kaycee

When my partner and I first thought about the final project, we turn to the internet for inspiration. “Flappy Bird” is the first typical project that is not only interactive but can be made with arduino and processing as well. This mini game is actually a very good example and inspired us a lot. It is controlled by tapping the screen and the bird will interactively altering the flying height and moving through the obstacles. 

An interesting and up-to-date idea came to my mind after being stimulated by the “Flappy Bird”. The latest and heated movie “The Avengers: End Game” can be applied to our final project. Our idea is to create a small game giving the scenario of three superheroes shooting at Thanos. Since we don’t have a smartphone that can be used for our final project, we decided to use the arduino’s joystick and buttons to serve as the input signal of shooting and moving Thanos. Two players will be playing at the same time acting as superheroes and Thanos. Either when the HP of the Thanos drops to 0 or the time is up, the game over. If Thanos’ HP drops to 0, the superhero player wins. If the time is up and Thanos still alive then the Thanos player wins. And with the help of filter, the participant will have their face changed into the specific superhero who hits most or into Thanos.

We will draw the models of the superheroes, Thanos and the bullets in processing. And will design the route and speed of different bullets fired by different superheroes. Finally we will use specific softwares to detect faces of the winner and turn them into the specific characters. So our final projects is not only interesting but also very interactive with the participants because their are multi-participants and they achieve a common goal by understanding and responding to each other. More importantly, it brings about fun to the participants. I believe that it will take us a whole week to coding and building the circuit and we will leave 3 extra days for refining and testing. Our target participants are the teenagers especially the fans of Marvel Studio and game lovers. And we hope that our project may interest them and bring about happiness.

Preparatory Research and Analysis by Eugene(Zhiqiu Wang)

The definition of interactive has always been a big mystery for me. I spent a lot of time trying to touch the vague boundary of interaction.Through this semester’s learning process, my definition of interaction has changed a lot with my further exploring in the field of IMA. The reading “The Art of Interaction Design” is the first critical article I have read that significantly refreshed my previous understanding of “Interactive”. The conversation that Crawford talks about is not like the conversation between human beings with human languages but conversation based on the programming and codes. And it is the codes that help human to control the device and the device to react. What’s more, the author also used vivid metaphor to state that in order to form a successful act, actors need to listen to others’ words and then consider it before giving response.  This three-step interaction of listening, understanding and responding gave me a concept of interaction for the first time. 

 The first project I chose to compare with my understanding of “interaction” is the “100% Chair” actually doesn’t fit my definition of interaction. The chair is designed for Algorithmic Landscapes, however, it reflects on the reality itself without interaction with human beings. It is more like a multifunctional smart vehicle than an interactive project. The second subject I chose is “Anti-Drawing Machine”. The machine allows either a disrupted or collaborative drawing by manipulating the rotation and position of an ordinary paper material. It stays at a very balanced point between disruption and collaboration, trying to be both at the same time. Though there is no actual use in our everyday life and seems a bit ridiculous, the action of destroying the artwork after getting the information from human beings is undoubtedly a kind of interaction. More importantly, this kind of interaction offered by this “Anti-Drawing Machine” brought about fun to the participants.

 For the projects made by arduino and processing, most of them are actually not very useful, but it does brought about fun and the experience of achievement. And with the more advanced code, we are able to create create our project more easily than the original ones. So interactive also brings convenience to our everyday life.

So from my perspective, the existence of interaction requires at least two objects giving and receiving information of a certain language and giving feedback to each other through a serious of the process so as to achieve some kind of goal. Last but not least, fun and convenience are also critical elements of interaction.

Midterm Project: Chameleon by Eugene(Zhiqiu Wang)

Midterm Project: Chameleon by Eugene(Zhiqiu Wang)

Partner: Yijia Chen

 

Before launching into the midterm project, we had come across

In this half semester, we learnt the knowledge of how to use arduino to give instructions to components like LEDs and motors which is interactive. These projects all enriched my understanding upon the definition of interactive which is also the main theme of this course. And as for this midterm assignment, I was inspired by the chameleon in a film called Rango who is always good at adapting to different environment and this triggered my idea for my project. As we all know, there are countless brilliant idea and projects got their inspiration from the nature. And there are a lot of interaction exists in the wild animals, especially chameleons. Chameleons are famous for its adaptability because they can change their color according to the environment they are at. So I discussed with my partner and we quickly agreed on my idea. Since we are still green hand in this field so we decide to make something not very complex. Just like the chameleon, our project can also detect the outside environment and change to certain color. At first, we thought of apply it to decorative billboard which can change color or brightness according to the environment. Later, we realize that we can also use it to benefit those color-blind patients and help them to differentiate colors which is of great benefit to social benevolence. 

We bought LEDs belts and color sensors to build our project. For the target audience’ easier understanding of our project, we choose to use laser cut to make the cute monster-like surface for our project. And we also wrote ‘Feed me with the energy bar’ on the top of the box so as to let the audience know how to use it. For each side, we cut a lot of circles except the top so as to let the LEDs light through the box and energy bars are made of Legos of different colors.

We both believe that the most significant and challenging part of our project is the coding part. Since we haven’t learnt about the code used for the color sensor so we did quite a lot of research online and asked help from classmates and professors. It took us a long time to adjust the white balance of the color sensor because we only had one sensor so the result is not precise enough. At the same time, another obstacle is the loose connection of jumper cables. Every time an error exist, it took us very much time to examine where the problem came from.

 

Before the user test session, some of the jumper cables loosed and it took us a long time to fix it so we decided to fix them on the side board with tapes to avoid this situation happen again. 

During the user test, sometimes the sensor fail to reflect to the color bars and we finally found out it is because of the different angle of the bars when they are put in. So I made another support to maintain the color sensor at a certain position. And the final audience’ feedback in the course is actually quite good. Most of the students are surprised by how it functions and its cute appearance. Their interaction with the chameleon is quite fluent and they enjoy the process of change its color with energy bar very much. 

However, this version of chameleon is far away from the full version which can be actually used in our life. If more time permitted, we will have further understanding of color sensor which can enable it to give out more light. And we understood that even the smallest connection failure or coding error can lead to the final failure so we have to care for every small detail in the circuit. What’s more, any kind of interaction can bring convenience and happiness to people. By using our project, people save the time of changing the color personally. And the smiles seen on audience’ faces also show the charm of interaction. Most importantly, the social function embedded in those interactive technologies can really contribute to human race and help the unprivileged people tremendously. With more interactive projects created, I believe that the human being can be a more intelligent species and make the world a better place.

IMG_4058

Code:

#define LED_R 5 

#define LED_G 6 

#define LED_B 3 

#include <SoftwareSerial.h>

SoftwareSerial mySerial(8, 9);

byte rBuf[8] = {};

byte R[10] = {};

byte G[10] = {};

byte B[10] = {};

byte final_R = 0;

byte final_G = 0;

byte final_B = 0;

int hist_pos = 0;

byte buf = 0;

byte last = 0;

void setup()

{

  Serial.begin(9600);

  mySerial.begin(9600);

  pinMode(LED_R, OUTPUT);

  pinMode(LED_G, OUTPUT);

  pinMode(LED_B, OUTPUT);

}

void loop()

{

  if (mySerial.available() > 0) {

    buf = mySerial.read();

    if (buf == 90 && last == 90) {

      //read!

      //Serial.println(“head arrived”);

      while (mySerial.available() < 6) {

        //Serial.println(“wait for next 6 bytes”);

        delay(5);

      }

      mySerial.read();

      mySerial.read();

      R[hist_pos] = mySerial.read();

      G[hist_pos] = mySerial.read();

      B[hist_pos] = mySerial.read();

      mySerial.read();

      //Serial.println(“RGB arrived”);

      /*

      */

      hist_pos++;

      if (hist_pos == 10) {

        hist_pos = 0;

      }

      final_R = R[0];

      final_G = G[0];

      final_B = B[0];

      for (int i = 1; i < 10; i++) {

        if (R[i] > final_R) {

          final_R = R[i];

        }

        if (G[i] > final_G) {

          final_G = G[i];

        }

        if (B[i] > final_B) {

          final_B = B[i];

        }

      }

      Serial.print(“R=”);

      Serial.print(final_R);

      Serial.print(” G=”);

      Serial.print(final_G);

      Serial.print(” B=”);

      Serial.println(final_B);

      /*

        final_R = map(final_R, 75, 185, 0, 255);

        final_G = map(final_G, 120, 136, 0, 255);

        final_B = map(final_B, 70, 200, 0, 255);

        analogWrite(LED_R, 255 – final_R);

        analogWrite(LED_G, 255 – final_G);

        analogWrite(LED_B, 255 – final_B);

      */

      

      if (final_R > final_G && final_R > final_B) {

        Serial.println(“RED”);

        analogWrite(LED_R, 0);

        analogWrite(LED_G, 255);

        analogWrite(LED_B, 255);

      }

      else if (final_G > final_R && final_G > final_B) {

        Serial.println(“GREEN”);

        analogWrite(LED_R, 255);

        analogWrite(LED_G, 0);

        analogWrite(LED_B, 255);

      }

      else if (final_B > final_R && final_B > final_G) {

        Serial.println(“BLUE”);

        analogWrite(LED_R, 255);

        analogWrite(LED_G, 255);

        analogWrite(LED_B, 0);

      }

      

      delay(10);

    }

    last = buf;

  }

}