Final Project Progress

Finalized Concept:

For my final project, I decided to stick with the idea of a plushy that can react to your hugs. Designed to spread positivity and happiness for everyone especially during finals season, I want the P5 to output the plushy’s “mood scale” based on the tightness (pressure) of the hug.

The repeated idea:

Sometimes, all we need is a long hug to help us recover from a long day. So, why not be able to hug a responsive cute fuzzy plushy?

Although it doesn’t have a name yet, this plushy with a pressure sensor will be able to activate various designs on the P5 screen when the user hugs it. Ideally it will output randomized sounds for each hug, such as “That made my day!” “Aww thanks!” “Cozy!” Etc.. no matter the tightness of the hug. I will also try to create a digitally animated version of it, where it can have 4 different facial expressions as well as 4 different mood settings and backgrounds. These will range from a little sad to very happy. In the end, I just want to create something that will make users feel loved and appreciated, even if it’s just from a little plushy

D&D of Arduino:

For the design of the Arduino, the project’s physical aspects consist of the plushy being able to detect the user’s inputs so that it can send an output through its speaker and P5. Using either a pressure sensor or a flex sensor, depending on which one better suits the plushy, it will be placed inside of the plushy so it can take in the hug and measure the intensity of the hug. This hug intensity data will be sent to Arduino, which will output randomized sound effects through the piezo buzzer. The pressure data will also be sent to P5.js through the “handshake” of serial communication between Arduino and P5.js, which will be how all of the digital magic appears.

D&D of P5:

As for the P5 side of things, the P5’s input would be the received pressure data from Arduino. There will be 3 different levels of pressure values that the data can reach, which will be mapped to different outputs depending on which of the three pressure levels that user’s hug reaches. This would then output the digital plushy’s various expressions and backgrounds. The P5 screen would output the visuals to match the intensity of the user’s hug, and I’m hoping I’ll be able to make the differences pretty drastic so the user can get the idea that a tighter hug will output different visual feedback

Final Project Idea

Sometimes, all we need is a long hug to help us recover from a long day. So, why not be able to hug a responsive cute fuzzy teddy bear?

The idea for my final project is still pretty rough, but I want to make something that is cute and wholesome that can also help promote well-being as final season is approaching. I was thinking of a teddy bear with a pressure sensor that activates LEDs that form a heart shape when the user hugs it. Maybe I could also figure out getting it to output randomized sounds for each hug, such as “That made my day!” “Aww thanks!” “Cozy!” Etc.. The P5 screen could animate a corresponding background for the teddy bear in awe, such as a bunch of hearts growing in size or cheerful floating bubbles. In the end, I just want to create something that will make users feel loved and appreciated, even if it’s just a little teddy bear

For a back up idea, that’s actually quite ambitious, I thought I could make a fake robot pet that’s always grumpy and will turn around and move away from you when you come close to it unless you have a hot treat for it. I think think the hot treat part might be a bit hard to accomplish, because warm cookies aren’t super hot and I haven’t used a temperature sensor yet, so I don’t know how sensitive it is

Reading Reflection – Week 11

In this exploration between design and disability, the author shows how design can evolve beyond simply addressing a disability and instead serve as a powerful tool for self-expression and even empowerment. Glasses were once purely a medical device, and now, they have become a fashion accessory, where people who don’t even need glasses to fix their vision will still want a pair for the looks of it. This shift in design can go from solely functionality to embracing style and personal expression, and the glasses example was pretty predictable, but the example on Hugh Herr’s prosthetic limbs in particular really stood out! I liked that he used his prosthetics as a form of empowerment towards him as a rock climber by having telescopic legs that could extended to different lengths while climbing, which would give him an advantage.

I think the topic of accessibility is one that can never be spoken about enough, as there’s always something that ends up being inaccessible because it wasn’t clear if accessibility was kept in mind while creating those designs. We have to keep in mind that not all disabilities are the same and not all disabilities are visible. With how much we’re advancing today and continuing to advance each day, we can learn more on how to move beyond the traditional medical models and instead figure out how to enhance and celebrate the body as well as the technology and artistry of the medical device.

 

Exercise 1:

Make something that uses only one sensor on Arduino and makes the ellipse in p5 move on the horizontal axis, in the middle of the screen, and nothing on Arduino is controlled by p5.

The location of the x of ellipse is being altered by the potentiometer.

The value from the potentiometer is mapped between 0 and 640, the width of the canvas.

Utilizing a Potentiometer, the ellipse moves along the horizontal axis, while also changing colors by making changes to the B value of fill.

Arduino Code: 

P5 Code:

let ellipseX = 0; //x value of ellipse to be changed by potentiometer
let B =0;

function setup() {
  createCanvas(640, 480);
  ellipseMode(CENTER);
}

function draw() {
  clear();
  background(0)
  fill(255,0,B);
  ellipse(ellipseX, height/2, 50, 50);


  if (!serialActive) {
    text("Press Space Bar to select Serial Port", 20, 30);
  } else {
    text("Connected", 20, 30);  
    // Print the current values
    text('ellipseX = ' + str(ellipseX), 20, 50);
  }
}

function keyPressed() {
  if (key == " ") {
   
    setUpSerial(); //establish serial communication
  }
}

function readSerial(data) {  
  if (data) {    //run only if data is received
    data = data.trim(); // Remove any whitespace
    if (!isNaN(data)) { //check whether data is a number or not
      //debug: console.log("Received:", data);
      ellipseX = int(data);
    }
  }

Exercise 2:

Make something that controls the LED brightness from p5.

A slider is created and data from it is sent to the Arduino. Based on the input from the p5 sketch, the LED’s brightness is adjusted accordingly.

Arduino Code: 

P5 Code:

let slider;
let brightness = 0;
function setup() {
  createCanvas(400, 400);
  // Create a brightness slider
  slider = createSlider(0, 255, 128);
  slider.position(width/2, height/2);
  slider.style('width', '100px');
}
function draw() {
  background(255);
  if (!serialActive) {
    textAlign(CENTER)
    text("Press Space Bar to select Serial Port", width/2, height/3);
  } else {
    text("Connected", width/2, height/3);
  }
  brightness = slider.value();
}
function keyPressed() {
  if (key == " ") {
    // important to have in order to start the serial connection!!
    setUpSerial();
  }
}
function readSerial(data) {
  console.log(data);
    let dataToSend = brightness + ", \n";
    writeSerial(dataToSend);  
}

Exercise 3:

Take the gravity wind example and make it so every time the ball bounces one led lights up and then turns off, and you can control the wind from one analog sensor.

Using a potentiometer mapped from -2 to 2, when the potentiometer is towards the left, the wind blows towards the left, and vice versa. The LED lights up every time the ball touches the bottom edge of the canvas.

A serial signal is sent to arduino everytime the ball touches the bottom of the canvas, resulting in the led to light up on the arduino. The potentiometer’s value will be reflected in the direction that the wind is blowing on the ball. I also added two walls on the right and left sides of the canvas, to prevent the wind from blowing the ball outside of the canvas.

Arduino Code:

P5 Code:

let led;
let velocity;
let gravity;
let position;
let acceleration;
let wind;
let drag = 0.99;
let mass = 50;

function setup() {
  createCanvas(640, 360);
  noFill();
  position = createVector(width/2, 0);
  velocity = createVector(0,0);
  acceleration = createVector(0,0);
  gravity = createVector(0, 0.5*mass);
  wind = createVector(0,0);
}

function draw() {
  background(255);
  applyForce(wind);
  applyForce(gravity);
  velocity.add(acceleration);
  velocity.mult(drag);
  position.add(velocity);
  acceleration.mult(0);
  ellipse(position.x,position.y,mass,mass);
  if (position.y > height-mass/2) {
      velocity.y *= -0.9;  // A little dampening when hitting the bottom
      position.y = height-mass/2;
    
    
    if(serialActive){
      writeSerial("bounced\n");
    }
    }
  // Check for collisions with the left wall
  if (position.x < mass / 2) {
    velocity.x =0; // Reverse horizontal velocity (bounce)
    position.x = mass / 2; // Correct position
  }

  // Check for collisions with the right wall
  if (position.x > width - mass / 2) {
    velocity.x =0; // Reverse horizontal velocity (bounce)
    position.x = width - mass / 2; // Correct position
  }
}

function applyForce(force){
  // Newton's 2nd law: F = M * A
  // or A = F / M
  let f = p5.Vector.div(force, mass);
  acceleration.add(f);
}




function keyPressed() {
  if (key == " ") {
    // important to have in order to start the serial connection!!
    setUpSerial();
  }
  if (keyCode==DOWN_ARROW){
    //mass=random(15,80);
    position.y=-mass;
    velocity.mult(0);
  }
}


function readSerial(data){
  
  if (data != null){
    wind.x=int(data);
    console.log("working");

  }
}

 

Reading Reflection – Week 10

A Brief Rant on the Future of Interaction Design:

This was a really nice read! I enjoyed this new rant-style writing that was also very visually telling of what the author was ranting about. I definitely agreed with his point at the start, and that only solidified more and more as I read all of the examples he pointed out, where everyday activities seem so simple, yet are actually complex, but we just do it out of instinct.

The fact that we have different types of fundamental grips for different purposes is so interesting! It really put hand manipulation into perspective because there’s only so many options you can do with a touch screen, and all of them are the same sliding or tapping on a glassy screen.

Another really interesting point he made was how we often think vision carries us a lot, but that’s because we’re not consciously thinking about the significance of touch. This example in particular really stood out to me and made me think twice about how important it is for our hands to feel things and understand weight and texture as well.

Try this: close your eyes and tie your shoelaces. No problem at all, right? Now, how well do you think you could tie your shoes if your arm was asleep? Or even if your fingers were numb? When working with our hands, touch does the driving, and vision helps out from the back seat.

Although I do agree that “pictures under glass” technology limits our physical interaction and connection with the devices, as well as the power and capabilities of our hands, I think it’s still crucial to consider how easy and accessible digital devices can make things. Yes, we wouldn’t be able to tell how far into a book we are if it’s digital instead of physical, but it could save the burden of carrying 4 thick textbooks with you throughout the school day, or make it easier for people to access international books that aren’t physically sold in their country. There are pros and cons to either side of things, and it would be revolutionary if we could find a way to somehow combine human capabilities and glassy technology by making it multi-sensory.

Responses on the Rant:

Reading people’s responses to the author’s rant as well as the author’s responses to those readers’ responses was quite fascinating and the way he explained and defended himself was nicely straight to the point. I enjoyed how he was kind of sarcastic in the initial response and then followed up with some true examples to further defend his case, such as:

Yeah! iPhone bad! iPad bad!

No! iPad good! For now! In 1900, Eastman’s new Kodak camera was good! The film was black-and-white, but everyone loved it anyway. It was genuinely revolutionary! But it was also obvious that something was missing, and research continued. Practical color film was released thirty years later, and gradually took over.

Assignment 10: Musical Instrument – Piano

Concept:

For this assignment, we were inspired by the toy pianos that we’ve all played with at least a few times as children. These toys were often quite limited, as they only had enough space to accommodate the keys for a single octave. We decided to create a miniature piano that could play the notes from C to A, with a knob that can be turned to change octaves.

Toy Piano

Setup and Code:

We set up a row of buttons that play a note when pressed, a potentiometer that changes the octave, and a switch that switches the notes to their respective sharp notes.

We created arrays that store the frequencies of the natural notes across seven octaves, doing the same for the sharp notes. The range of the potentiometer is mapped to a range of 0-6 and determines which octave the notes will be played in. When the switch is low, natural notes are played, and vice versa.

To prevent the notes from continuously playing, the noTone() function stops the buzzer playing any sound when no button is pressed.

Github Code

if (buttonState7 == LOW && buttonState6 == LOW && buttonState5 == LOW && 
    buttonState4 == LOW && buttonState3 == LOW && buttonState2 == LOW) {
  noTone(8);  // Stop any tone on pin 8
}

 

Demo:

 

Reflection:

Overall, this group project was a success as we managed to recreate our inspiration using Arduino. We were really satisfied with how we made sure to implement the natural notes as well as sharp notes in our project. A few struggles we faced was that the wires and resistors were really crowded on our small breadboards, making it a little difficult to reach the buttons. Ideally, we would want to get bigger breadboards in the future so that there would be more room for interacting with the product. Additionally, the bread board was just a little too small for us to add the 7th natural note, so we could only fit 6, as we’re missing a B note.

In the future, we would like to add two different colored led lights that switch on and off along with the natural or sharp notes. This way, it would help users know if they are currently playing natural or sharp notes, as not everyone is familiar with musical notes in that sense.

Assignment 9: Rate Your Mood

Concept & Inspiration:

For this week’s project, we had to find a way to use both an analog and digital method to turn on a led light. I decided to use a button for my digital sensor, and a potentiometer for my analog sensor. My original idea was to use the button to change the colors of the two RBG led lights to represent different emotions and the potentiometer to change how dim or bright that emotion is for the day. For example, yellow being happiness, red being anger, blue being gloomy, purple as spirituality, etc. I tried to follow some tutorials, but it ended up being a bit too complicated, so I stuck to what we knew.

To rate your mood, users can twist the potentiometer to match how good they’re feeling, with the maximum blinking light representing them having a fantastic day. The button is a “feel good button,” meant to help users reduce their stress by fidgeting with a button that turns on with each click. The satisfying sounds may be soothing to some.

Demo Video:

Rate Your Mood

Github Link:

Rate Your Mood .ino File

Highlight Code:

if(buttonState == HIGH){
  digitalWrite(13,HIGH);
} else {
  digitalWrite(13,LOW);
}

The code I used is basically the exact same as the one we worked on in class while learning about digital input/output, except I made it so that the light was originally off and would turn on if the circuit is complete. Meanwhile in class, it was originally on and would turn off if the circuit was complete. This is highlighted because the feel good button is more satisfying when each click turns on the light, rather than turns off the light

Reflection + Future Improvements:

Overall, I’m still satisfied with how this project turned out. I got to use a new item (the RBG led light) and even though I didn’t get to use it the way I wished and planned for, I still got to use it for its automatic blinking that starts when the potentiometer is maximized. I didn’t do any of that with code, which was really cool. In the future, I would really like to expand on and execute the initial idea I had, to make the colors change with the button. In that case, I would also like to find a different way to create a “feel good button” or some other kind of satisfying fidget since the button would have a different purpose

Reading Reflection – Week 9

Physical Computing’s Greatest Hits (and misses):

Copying and originality are quite controversial topics when it comes to art, especially AI art. We tend to try to come up with fully new concepts, as some of our ideas might sound a bit too similar to preexisting concepts. This article talks about how it’s okay if your idea isn’t original, because there’s opportunities for you to make it so. The repetitiveness of certain project themes in physical computing can help users, especially those new to physical computing, learn to create variations of works that inspire them. It is a great means to study and learn concepts that are foreign to you, as you can recreate the work and later build onto it and make it more your own.

I like how the author encourages people to keep going through with an idea even though they think it’s not original. As someone who is still a beginner at physical computing, recreating unoriginal work is a great way to gain experience at the methods, while not needing the brain power to come up with something new when I don’t even understand the basics. The list will come in handy to me as gloves, video mirrors, and things you yell at are in my interest. I like how he also mentions the potential drawbacks of a few of the themes, and explains a situations where that could occur.

Making Interactive Art: Set the Stage, Then Shut Up and Listen:

I liked how almost brutal and straight to the point the author is about the concept of only being able to guide the audience through your interactive work and then shutting up and letting them work their way around your piece on their own. He makes a lot of good points about having to let the audience/users think for themselves when it comes to interpreting interactive art, and the acting example was a wonderful way of putting that necessary autonomy into perspective.

“You can suggest intentions, but you can’t give him interpretations. You can give him props to work with, or place them in the way so he’ll discover them. You can suggest actions, but you can’t tell him how to feel about those actions; he will have to find it for himself.”

It actually reminded me of a recent interaction I had with a friend who needed feedback on his Sound Project. It’s a project solely focusing on audio, with no visuals, and I got a bit lost by the middle and he had to explain what was happening for me to get it. Reading this piece reminded me of that because my interpretation of it wasn’t exactly how he wanted it to be, but he couldn’t just force those ideas into my head. Even after his explanation, I still couldn’t hear what he was pointing out, so my interpretation of his project would’ve been great feedback for him, since it would allow him to see from a perspective where he isn’t interpreting his own work. He can work on “setting the stage more” now that he has “shut up and listened.”

Assignment 8: Chopswitch (Unusual Switch)

Concept & Inspiration:

I spent a lot of time trying to come up with a creative switch idea, but nothing was clicking for days. Just today, I was sitting in Marketplace eating a poké bowl while doing some work for my other classes. I was eating it with a pair of wooden chopsticks, and that’s when I realized, I should use chopsticks as my switch. Chopsticks are the one utensil I can always count on, and I’ve used chopsticks to eat a large variety of foods that people wouldn’t usually use chopsticks with, such as hot cheetos so my fingers don’t stain red. I realized I have steel chopsticks in my dorm, so that was a plus because they can act as conductors.

Demo Video:

Chopswitch

Although in my demo I use my hands to turn the LED light on, it’s still possible to turn it on without using hands, as long as the two chopsticks touch each other. You could kick them together with your foot or use your elbow

Github Link:

Chopswitch .ino File

Highlight Code:

if (buttonState == HIGH){
  digitalWrite(13, HIGH); // Turn on light
} else {
  digitalWrite(13, LOW); // Turn off light
}

The code I used is basically the exact same as the one we worked on in class while learning about digital input/output, except I made it so that the light was originally off and would turn on if the circuit is complete. Meanwhile in class, it was originally on and would turn off if the circuit was complete.

Reflection + Future Improvements:

I was originally really scared of this assignment given we learned for just two days before already having to create something with Arduino, which was unfamiliar to me. It ended up being rather easy and straightforward, and I would’ve liked to have come up with a more complex and creative concept to execute, since I didn’t plan on having that because I was so scared it would take me a lot of time to understand the assignment and get it to even work. Maybe I could’ve linked a chopstick to a plushy, and have two plushies to make them sword fight with chopsticks. When their “swords” clash, the light would turn on. I think that would’ve been a cool and fun concept, and would’ve matched the “no hands” aspect of the assignment more because it would be easier to kick them.

Reading Reflection – Week 8

Her Code Got Humans on the Moon—And Invented Software Itself:

I was truly amazed and in awe at Margaret Hamilton’s journey as an incredibly strong, dedicated, powerful, and influential woman and mother. Women in tech at the time were basically unheard of, and even in today’s world, tech is still a male-dominant field. Yet, it was a woman that made such significant advances to software engineering. Not only was she a working money who would bring her 4-year-old daughter to labs as she worked, she wrote the code for the world’s first portable computer  and eventually became Apollo’s command module computer.

It’s a shame that I’ve never once heard of her before reading this article, especially given how pivotal her work was, that even helped Neil Armstrong land on the moon. Something I found interesting was how Hamilton wanted to add code to prevent the simulation to crash if the program P01 was launched, yet NASA overruled her idea despite the fact that it happened already from Lauren accidentally launching P01. NASA insisted that their astronauts would not make any mistakes because they were “trained to be perfect,” which, evenstill, it doesn’t hurt to play things safe. Just five days into the Apollo 8 flight in 1968, astronaut Jim Lovell accidentally pressed P01 and luckily enough, Hamilton and MIT coders were able to plan and upload new navigational data. It makes me wonder, would NASA have listened to her if she was a man presenting that idea instead?

It shows how important it is to be aware of and know how to navigate potential problems in works, even if you’re confident nothing will happen. Reading this made me a lot more aware and cautious of my future work, and I’ll be on the look out for potential problems that could surface and figure out, even just briefly, how to combat those issues should they arise.

Attractive Things Work Better:

I enjoyed reading Norman’s piece on how aesthetic designs can impact the way we feel towards that product. He makes a really interesting case with his three teapots. He definitely proved his point by showing images of those three teapots and explaining when he would use each one, because the design of the Carelman tea/coffeepot is so incredibly ugly to me that it’s actually frustrating to look at, and I wouldn’t even want that in my house let alone use it. Just its presence would probably ruin the calm and peaceful mood I was probably in if I wanted to make some tea.

The whole concept reminds me of pretty privilege and the saying “look good, feel good.” The concept of object pretty privilege is shown with the teapots, as all of them are functioning teapots at the end of the day, but with very different designs. The concept of the phrase is shown as Norman talks about the concept of positive vs negative “affect.” Positive affect enhances problem-solving and performing tasks while negative affect makes it harder. How we feel about things influences how easy or difficult it would be to think through and finish a task.

Something I found interesting was that negative “affect” didn’t necessarily only have a negative effect on us. Although positive affect helps us creatively think better, negative affect can help us focus and concentrate on potential threats or problems. He even mentions how anxiety also helps us concentrate, as people are less distractible.

I do agree that to an extent, (as long as the product functions decently well) aesthetic designs can make a big influence on the same product depending on the influence of positive of negative affect that stems from it. It could even apply to animals. If you saw a pastel colored mini snake vs a black and yellow colored one, would you take them to be the same level of danger? Well, maybe you would, especially if you have a severe fear of snakes. But, the different looks of the snakes could possibly affect the intensity of negative affect.

A real-life example of attractive things working better could be gardening tools. They still function the same, but certain colors that match your aesthetic or match the aesthetic of your garden might boost positive affect that makes you want to garden more than a basic boring colored tool