Midterm Ideas & Notes

Things I may want to try:

1. Using mirrors — multiple me’s running into each other.

2. Using fake walls inside of the locker (for projection proportion purposes).

3. Still image as background and something to look at that will effect that background on the front of the locker.

4. Running up a physical ramp into the distance (After Effects to key myself smaller while running away).

5. Box inside of a box, inside of a box…etc.

6. LED lights from Arduino.

I think I want the background image to be a picture of a tsunami because the theme of our illusion is dream based and one dream I remember very well was an end of the world nightmare.

Another idea is to have a physical wall inside of the locker and have a pepper’s ghost illusion version of me running through a wall.



Nothing Midterm Progress

For the midterm our team of four decided upon an illusion that will take place inside each of our lockers. The other day we filmed each other in front of a green screen doing the activity we want to project. This was the first time I’ve ever gotten rid of a background in After Effects and replaced it with something else. The background I chose for the video as practice isn’t what I’m going to use. I also need to consider the amount of green screen space needed in order to run. The idea is to have myself running back and forth between the two metal walls of my locker as though I’m trapped inside but disappearing in and out of the walls.

I realized through this editing process that I want to change almost everything!

Green Screen Test from Marco Wylie on Vimeo.


pComp Midterm – Cube Switch Game

For this assignment my partner and I came up with a game that has 5 colorful buttons on each side of a square cube with an LED above each light to signify when to press it. Upon pressing the sixth, black button, the game initiates and the player has only a few moments to press the button where the light is and the timing gets faster and faster as the game progresses. If the button isn’t pressed in time, all the LED’s light up in succession and the game is over.

Since part of the assignment was to include a serial connection to p5.js, we included sounds using serial.print that play every time a button is pressed and also when the player loses.

We laser cut a 1/4″ piece of Acrylic and fastened arcade buttons to each side of the cube.

Here is the code for Arduino:

//LED Pins
int LEDPins[] = {5, 6, 7, 8, 9};
//Switch Pins
int switchPins [] = {12, 11, 2, 3, 4};
int activeSide;
int activeSwitchState;
int lastActiveSwitchState;
//Start button
int startButtonPin = 10;
bool gameActive = false;
int startButtonState;
int lastStartButtonState;
bool userLost = false;
long startTime;
long interval;
void setup() {
pinMode(LEDPins[0], OUTPUT);
pinMode(LEDPins[1], OUTPUT);
pinMode(LEDPins[2], OUTPUT);
pinMode(LEDPins[3], OUTPUT);
pinMode(LEDPins[4], OUTPUT);
//Digital Switches (buttons)
pinMode(switchPins[0], INPUT);
pinMode(switchPins[1], INPUT);
pinMode(switchPins[2], INPUT);
pinMode(switchPins[3], INPUT);
pinMode(switchPins[4], INPUT);
//start button
pinMode(startButtonPin, INPUT);
void loop() {
//make array of switch inputs
int switchStates [] = {
//analog inputis
//start button
startButtonState = digitalRead(startButtonPin);
//when start button is pressed, game is activated
if (startButtonState != lastStartButtonState) {
if (startButtonState == HIGH) {
gameActive = true;
userLost = false;
//initialize time
startTime = millis();
activeSide = pickRandomSide();
interval = 10000;
lastStartButtonState = startButtonState;
if (gameActive) {
//within the time limit
if (millis() - startTime <= interval) {
activeSwitchState = switchStates[activeSide];
if (activeSwitchState != lastActiveSwitchState) {
if (activeSwitchState == HIGH) {
interval *= 0.80;
activeSide = pickRandomSide();
startTime = millis();
lastActiveSwitchState = activeSwitchState;
} else {
//game not active, user lost game
gameActive = false;
userLost = true;
if (!gameActive && userLost) {
//if you go over the time interval you lose & LEDs will flash
for (int i = 0; i < 5; i++) {
digitalWrite(LEDPins[i], HIGH);
digitalWrite(LEDPins[i], LOW);
//function that lights up the LED & returns value of the side it is on
int pickRandomSide() {
for (int j = 0; j < 5; j++) {
digitalWrite(LEDPins[j], LOW);
int side = random(0, 5);
digitalWrite(LEDPins[side], HIGH);
return side;

And the code for p5.js:
// Declare a "SerialPort" object
let serial;
let latestData = "waiting for data";
let sounds = [];
//incoming data from arduino
let arduinoData = [];
let activeSide;
let interval;
//logic for when to play sound
let lastInterval;
function preload() {
for (let i = 0; i < 6; i++) { sounds.push(loadSound('sound' + i + '.mp3')); } } function setup() { // Instantiate our SerialPort object serial = new p5.SerialPort(); serial.open("/dev/cu.usbmodemFD121"); serial.on('data', gotData); } function gotData() { var currentString = serial.readLine(); // read the incoming string trim(currentString); // remove any trailing whitespace if (!currentString) return; // if the string is empty, do no more //console.log(currentString); // println the string latestData = currentString; // save it for the draw method } function draw() { arduinoData = split(latestData, ','); activeSide = arduinoData[0]; interval = arduinoData[1]; if (activeSide >= 0 && activeSide <= 5 && lastInterval != interval) {
lastInterval = interval;

I’m going to have to upload the pictures of the box making process tomorrow because dreamhost won’t let me upload any more pictures tonite…

Here’s the finished working result!

IMG_9641 from Marco Wylie on Vimeo.