Documentation – 62-362 Fall 2022 https://courses.ideate.cmu.edu/62-362/f2022 Electronic Logics && Creative Practice Tue, 06 Jun 2023 14:10:13 +0000 en-US hourly 1 https://wordpress.org/?v=6.0.8 Project 1 Final Documentation https://courses.ideate.cmu.edu/62-362/f2022/project-1-final-documentation/ Sat, 29 Oct 2022 03:49:13 +0000 https://courses.ideate.cmu.edu/62-362/f2022/?p=12342 Ovalight

Final Documentation
Jasper Krarup | Gates Project | Fall 2022 | 62-362

Narrative Description

A matte black acrylic housing contains LED strip lights whose luminance is diffused by an oblong, semi-opaque, white face in the front of the box. With the power of a 5V cord and plug, an on/off switch in the back turns the LEDs on. On the front there are 3 of each component: push buttons, sliders, and dials. Each RGB color (red, green, and blue) in the LEDs is controlled by one of each component. The buttons turn the lights on and off, the sliders change their brightness, and the dials change their brightness as well. With fine tuning, the user can explore a wide range of colors.

Process Images


Figuring out the basics of the interactions I planned to use in my project. An array of sliders, knobs and buttons make the object more engaging.


I decided that bent corners, although more difficult to achieve, would be more elegant than just 6 sides of a rectangular prism glued together. These were my experimentation and practice bends using extra acrylic from failed cuts. The yellow heat gun in the back is what I used to make the rigid acrylic more malleable.


Upon realizing how fingerprint-prone glossy acrylic was, I experimented with a circular sander. I tried a couple of different grits to see what would create the cleanest matte finish. P180 was the winner. Here is a piece whose top part is untouched, and whose bottom half is sanded with P180.


A fully sanded bare bones version of the front piece with all the holes measured out and oriented to neatly fit the components.


The first light! Propped up on foam blocks, I tried to simulate what the object would look like fully assembled. This was the first time I was able to see what the LED lights would look like through the semi-opaque diffusing acrylic.

Process Reflection

For me, this project was a success. Although my concept was heavily informed by my major (product design), I definitely learned a number of new things. First the capabilities of Arduino; this was my first ever experience using an Arduino, so it was interesting to see what could be done with it and how it’s integrated into a programmed object. Secondly, it was enlightening to brush up on my wiring ability. I’ve only ever programmed and wired anything once before, and it was a much simpler mechanism. Using a breadboard was helpful, but it was a good reminder of the arduous process of soldering and wire management. Also, the breadboard: I struggled for a number of hours over the breadboard, and completely scrapped even more hours of work with the intention of just doing the wiring directly. But, for some reason after doing that, something went off in my head and I immediately grasped how the breadboard worked, and I rewired everything in a matter of minutes. It made the wire management a lot easier and circumvented a lot of soldering that would have made my assembly process a lot slower.

I think that my project gave the user a very different experience than the other students’ projects did, but not in a better or worse way. I think that with my design background, I was able to take a simple form, as well as a simple interaction, and make it engaging and elegant with careful visual and interactive decisions. If I were to do this project again with the knowledge and experience that I have now, I think I would do a bit more iteration on the form. I would also try to add an additional interaction, that would control a black strip light that would add an interesting element to the LEDs. It would be cool to see how the two types of lights interaction in one visual field. This project having been my first time working with acrylic in the way that I did, I would come up with a better way to execute that process more cleanly there were flaws that I was able to buff out, but that created problems during final assembly. I also would have taken more time to do calculations before assembly, just to achieve tighter fitting parts. Overall, though, I think my craft was decent. Considering that all of the craft processes were relatively new to me, I think I did well in that field, and learned a lot about DFA (designing for assembly) and DFM (designing for manufacturing) approaches. I would love to explore and iterate on this more, and try to develop a process that could be translated to a mass production scale, just for the purpose of understanding how a product like this would perform in the real commercial world.

Detail Images


Interactive Components Close-Up


Control Pad


Scale Reference. Main Housing Dimensions: 14.75″ L x 3.5″ W x 2.25″ D


Opened up view of interior components. The housing being openable and closable was important for the sake of maintenance.

Interaction Video

Link: https://drive.google.com/file/d/1wL3T_zTrbQyLEtgYcx1JT8Xm8iEySVQE/view?usp=share_link

]]>
GATES Rausch Documentation https://courses.ideate.cmu.edu/62-362/f2022/gates-rausch-documentation/ Fri, 14 Oct 2022 21:20:12 +0000 https://courses.ideate.cmu.edu/62-362/f2022/?p=12263 AMOR FATI

By Cassie Rausch

(click images above for videos)

NARRATIVE DESCRIPTION:

This desktop philosophical experience is intended to be placed discretely somewhere in CMU with high foot traffic.

After sitting down, you answer each question as it appears on the screen. The ‘y’ key means yes and the ‘n key means no. All of the questions are modeled after decisions that a CMU student might make on a normal day, some a bit more dramatic than others. After you answer all of the questions, you will get a receipt printed with some of the positive and negative consequences of the choices you made.

PROGRESS IMAGES:

I started my process by working with Zach to learn how to control the receipt printer and how to use Processing.

 

Some of the text that we generated to test the code/printer. It says mouse repeatedly because I spammed the mouse click.

More messing with printing text. Most of this was from my attempts to make a keypress result in text printing.

I spent much of my time surrounded by receipts. It took a while to format the text to print well.

This is when I was trying to figure out why it printed some responses but not others.

A spread of some of my first successful runs! I started by making all of the yes responses print properly then the no responses.

Running my project through another monitor to see how it would display.

PROCESS REFLECTION:

This project was a success in my opinion, because my main goal was to learn more about philosophy and Processing. Taking a philosophy that is new to me and trying to convey it through an experience for a stranger to understand that philosophy was harder than I imagined. If I were to redo this project, I would have spent much more time debugging my code and considering the experience of my project and less studying philosophy. Experience design is not something new to me, but this was my first attempt at an experiential art piece. Something I learned was how much more you are trying to influence the users emotions and thoughts and less so the actions like I typically do in my products.

Processing was vaguely familiar to me from a basic high school course I took in java, but I learned so much from this project and re-familiarized myself with this coding language. Zach was a huge help in clarifying basic concepts for me again, and even more so in making the more complex parts of my code work. I learned a lot about strings and how finicky they can be, and how to connect processing to Arduino. The receipt printer was also new for me to use, but I’d love to work with it more in the future. The idea of walking away from a digital experience with something physical is important to me, because it crosses the boundary from being a thought experiment to something that users will hold onto.

CODE:

//AMOR FATI
//by Cassie Rausch
//this code is designed to recieve input from a user as a key press of either 'y' or 'n'
//in response to a displayed question and then compile correlating responses 
//to this input and print a receipt with the responses generated


int qcounter = 0; //counter that tracks the question you are on

String []  receipt = {" ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; //string that holds all of the responses to be printed

char results[] = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}; //string that holds all of the users input

String [] question = {
  "Your alarm goes off, but you're so tired. Do you snooze? Y/N", 
  "You're still so groggy. Do you get coffee? Y/N", 
  "You have a midterm in an hour. Do you study? Y/N", 
  "You haven't talked to your mom in over a week. Do you call her? Y/N", 
  "You decide on Thai for dinner. Do you order delivery? Y/N", 
  "As you walk home you pass someone homeless, begging for money. Do you help them? Y/N", 
  "A startup has reached out to you with a dream job offer, but they insist that you drop out of CMU first. Do you do it? Y/N", 
  "You are up late working on a project for a class, but all you want to do is sleep. Do you stay awake to finish it? Y/N", 
  "You catch your partner cheating, but they swear they'll change. Do you give them a second chance? Y/N", 
  "Would you make the same decisions again?", 
};

String [] nanswers = {
  "You wake up and make it to class on time,\nbut fall back asleep during lecture.\n\n", 
  "\nYou're so tired you don't take any\nnotes in class and fail the next quiz.\n\n", 
  "\nYou get a lower grade on your test,\nbut spent time outside relaxing.\n\n", 
  "\nYou are grateful for the free time and\ntake a nap, but miss your moms call.\n\n", 
  "\nYou have to walk in the cold to pick up\nyour dinner, but avoid delivery fees\n\n", 
  "\nThe homeless person struggles\nto find food and becomes ill. You stay\nsafe and keep your money.\n\n", 
  "\nYou graduate CMU and work at Meta.\nIt's fine.\n\n", 
  "\nYou get a lovely night of sleep, but\ncome to class with an unfinished project.\n\n", 
  "\nYou watch the person you were in love with\nleave you for someone else.\nYou are alone, but happy.\n\n\n\n\n\n", 
  "\n\nAMOR FATI  \n\n\n\n"
};

String [] yanswers = {
  "You wake up late feeling less tired,\nbut you slept through your class.\r\n", 
  "\n\nYou contribute to the mass\ndeforestation for coffee farming.\r\n", 
  "\n\nYou get a higher grade on your test,\nbut missed a beautiful day.\r\n", 
  "\n\nYou enjoy talking to your mom,\nbut she talks forever.\r\n", 
  "\n\nDelivery very expensive,\nbut you enjoy the warm food.\r\n", 
  "\n\nYou give the homeless person money,\nbut they quickly spend it.\r\n", 
  "\n\nYou love working your dream job\nuntil the startup fails.\r\n", 
  "\n\nYou stay up all night,\nbut feel awful all day\r\n", 
  "\n\nYour partner continues to cheat,\nbut for a bit you're happy again.\r\n\n\n", 
  "\n\nAMOR FATI   \n\n\n\n"
};

import processing.serial.*;

Serial myPort;  // Create object from Serial class
int val;        // Data received from the serial port


void setup() {

  size(1300, 700);
  println(Serial.list());
  String portName = Serial.list()[1];
  myPort = new Serial(this, portName, 9600);
}

void draw() { // drawing background and text
  background (240, 130, 0);
  textSize(25);
  rectMode (CENTER);
  textAlign(CENTER, CENTER);
  String printresults = new String(results);
  if (qcounter == 10) {
    delay (1000);
    receiptbuilder ();
    delay (5000);
    qcounter = 0;
  }
  // text(printresults, 10, 10);
  // text(qcounter, 10, 20);
  if (qcounter < 10) text(question[qcounter], width/2, height/2, 500, 300);
}

void keyPressed () { 
  if (qcounter < 10) {
    if (key == 'y') {
      results[qcounter] = 'y';
      qcounter++;
    }
    if (key == 'n') {
      results[qcounter] = 'n';
      qcounter++;
    }
  }
}

void  receiptbuilder () {  // function to build all of the responses to be printed based on user input
  for (int counter = 0; counter < 10; counter++) {
    if (results[counter] == 'y') {
      receipt[counter] = yanswers[counter];
    } else if (results[counter] == 'n') {
      receipt[counter] = nanswers[counter];
    }
  } 
  myPort.write(receipt[0]);
  delay (2000);
  myPort.write(receipt[1]);
  delay (2000);
  myPort.write(receipt[2]);
  delay (2000);
  myPort.write(receipt[3]);
  delay (2000);
  myPort.write(receipt[4]);
  delay (2000);
  myPort.write(receipt[5]);
  delay (2000);
  myPort.write(receipt[6]);
  delay (2000);
  myPort.write(receipt[7]);
  delay (2000);
  myPort.write(receipt[8]);
  delay (2000);
  myPort.write(receipt[9]);
}

void serialEvent (Serial p) {
  String inString = p.readString();
  // println (inString);
}

 

 

 

 

]]>
Project 1 Final Documentation (gprado) https://courses.ideate.cmu.edu/62-362/f2022/project-1-final-documentation-gprado/ Fri, 14 Oct 2022 06:11:19 +0000 https://courses.ideate.cmu.edu/62-362/f2022/?p=12240 Study on Code Response Time – Barman Corporation #355

Photos

Video

Narrative Description

A suitcase contains two black panels: a panel in front of the lid has a square grid of nine LEDs and a panel on top of the base has 9 buttons arranged in the profile of two human hands. The tenth finger, which does not have a button, has a clear cap that covers two LEDs. In front of the suitcase, there is a QR code, a headset, and a paper template. This template includes nine lines, ordered from first to ninth. The user will scan the QR code, which gives them a link to an audio file, then plug in the headset into their mobile device, and press play on the audio. The recording, narrated by a robotic male voice, introduces the user to a study by the Barman Corporation that they are the main participant of. They are instructed to receive a code from the voice and enter the code via the buttons on the base panel, all within 3 minutes. The user is asked to use the paper template as a guide to help enter the code. When they’ve submitted the code correctly, a blue LED will light up under their right thumb, and they must pause the recording. The voice then starts a 3-minute timer, afterward providing the user with the code: 0 1 1, 1 0 0, 0 1 0. After 12 seconds of silence, a whispered, female voice emerges in the recording. The voice claims that the user is about to launch a missile strike. The user must enter a termination code to stop the strike from occurring and, no matter what, not enter the code provided by the previous voice. After a few seconds, this voice provides the user with the following code: 1 0 0, 0 0 1, 1 0 0. The previous voice then reminds the user that they have one minute remaining. Afterward, the voice thanks the user for their input in the study.

Progression to Final Project

Simplified Circuit –> Maquette –> Full Wiring –> Extended Wiring –> Full Assembly

Simplified Circuit

Simple circuit with three buttons all going through an AND gate (one of the buttons first goes through a NOT gate). All buttons connect to a green LED, and a red LED lights when the circuit output is true.

Maquette

 

Maquette made out of legos and wood, using the simplified circuit above.                                                            

Full Wiring 

Wiring of all buttons, LEDs, and logical connections to breadboard

Extended Wiring

Extending wire connections for buttons and LEDs to fit into plywood panels

Full Assembly

Placing of panels into suitcase, includes QR code, paper code template, and headset

Reflection

Working on this project proved to be tedious, but very rewarding. Coming into this project, I wanted to create a suspenseful game that ran purely on integrated logic circuits. My main idea was to set this game in the CMU steam tunnels, where users would navigate a “robot” through the tunnels until they reached a final destination. The interaction for this would be achieved through a missile control panel, which I thought best suited the environment of suspense. Unfortunately, after a few days of brainstorming, I found it very complicated to model such a game with only logic chips. Wanting to prioritize the use of these chips, I decided to slightly change the scope of my project while still retaining a suspenseful, militaristic game identity. I ultimately took inspiration from nuclear suitcases as the main physical interaction for my project. The new game idea involved a user inputting a code via buttons into a square grid of LEDs, similar to the nine-dot grid found on Android lock screens. To maximize suspense, I used audio, creating a 3-minute recording that contextualized the piece and gave weight to the user’s decisions in the game. I also set the piece in a dark room with one light source lighting it from above.

The build phase for this project was a physically challenging task. My first step was to CAD the assembly, which I did not find very difficult given my previous CAD experience. Using this CAD, I then created DXFs to laser cut every surface. Unfortunately, there were some hole alignment issues with the support struts I made for the panel base, which I ended up fixing by removing one of these struts. After laser cutting, I proceeded to start the wiring process. I wired the logic of the project on a single breadboard and not considering any space considerations. This is when the hardest part of the project appeared: elongating these connections to fit the assembly. Because of the large amount of connections, it was very difficult to replace the wires with longer ones without sometimes missing the ports they were connected to. It was very easy to accidentally unplug some of the wires without realizing. However, I was able to complete this phase, successfully feeding the wires through the button holes. Another challenge arose when trying to feed the LEDs through their holes. This involved closing the panel base sub-assembly. Unfortunately, because of the length of the wires, it was quite difficult to close and feed the wires through to the lid panel (where the LED holes are). I had to extend the wires again to be able to reach these holes. With all of the wiring, the whole assembly did not fit into the suitcase. So, I had to use the foam inserts that came with the suitcase to prop up the assembly from the bottom.

Overall, the electronics of the project worked and were reliable. The major issue of the design was the lack of thought with wiring. I severely underestimated how much space wires can take up and how tangled they can get. As a MechE, wiring is a design consideration I had never really encountered before; working on this project gave me really valuable insight and experience on this. Another issue I struggled with in this project was the idea of meaningful interaction. Previously, with the steam tunnel idea, I was envisioning the project to be a purely arcade experience. However, this is not a very impactful environment, and I wanted my project to be meaningful in some way. I ended up taking inspiration from the experiences of soldiers in missile command centers: they have the power to destroy with the click of a few buttons. This is detailed in my artist’s statement below.

Artist’s Statement

My aim with this project is to recreate an experience inspired by soldiers at missile command centers. With just the press of a few buttons, they can cause destruction and tragedy. They are given an inhumane level of power and control over many lives. Despite this, there are stories where their humanity saved the world. One such story occurred in the USSR in 1983, where officer Stanislav Petrov received missile attack warnings from the United States while stationed at a command center. He interpreted the warnings to be a false alarm; this turned out to be true of course. Instead of following usual protocols, which would have likely resulted in nuclear warfare, Petrov disobeyed them. This decision fascinated me; it demonstrates how the actions of just one person can affect the fate of the world. This event is at the core of my project.

This project provides interaction through physical, visual, and auditory means. It is a briefcase with an acrylic black board in front of each interior panel. The lid panel board has nine green LEDs arranged in a square, and each of these LEDS is mapped to a button in the base panel board. These buttons are arranged in a bird’s eye view of a hand. Under the right hand thumb, there are two LEDs to indicate when two certain combinations of buttons are pressed. The user begins their experience by listening to an audio recording, which explains their involvement in a fictional study. Users must enter the correct combination that is presented in the audio recording. However, the recording also reveals that this combination activates a missile strike, and it provides an alternative combination to stop the strike from occurring. Otherwise, inputting the first combination or not inputting anything will initiate the strike. This all occurs within 3 minutes, so users are given a short amount of time to make a decision.  

Having such a plot creates a suspenseful environment and puts more meaning into the user’s decisions. Ultimately, the goal with this is to manifest the consequences of seemingly simple actions; this gives users insight on how much weight their actions truly have in life. Like the actions of Petrov in 1983, one’s actions can have a drastic effect on the state of the world, and this is crucial for people to be cognizant of. 

Sources

Voices in Recording –> https://voicemaker.in/

Info on 1983 USSR Nuclear False Alarm –> https://en.wikipedia.org/wiki/1983_Soviet_nuclear_false_alarm_incident

Missile Countdown Recording –> https://youtu.be/ATznMAs-vfA

Video:

  • Subject #355 –> Gabriel Prado
  • Cameraman –> Katarina Garcia

 

 

]]>