- Jump It! – Kenneth Chu- Gottfried
- CONCEPTION AND DESIGN:
The concept of my project was to allow its users to move around a bit. I realized that after starting the semester, I haven’t had much opportunities to do exercise, so I decided to create this 2 player game, using tilt sensors similar to recitation 2, but adding the processing component, as well as the competition one. During the user testing session, I had some peers try out the project, and they did not have any critiques in term of the feedback, all critiques were about the user interface. These included things such as, moving the heart monitor to the top corners as it wasn’t as relevant, making the jumping jacks larger, also making them black for them to be easier to see, and lastly making a win page for whoever reached the 75 repetitions first. I think it simplified the user interface, while still giving key feedback to the user, so overall it was successful.
User testing:
Feedback:
- FABRICATION AND PRODUCTION:
For the fabrication & production part I did it in 3 steps. These were Arduino, digital fab, and processing. More detailed steps can be found below. I decided to use velcro as the main material for the sensor, because it was easier to adjust on the finger than other materials. Then I used super long wires to take into account the range of movement that the users had. For sensors, I wanted to focus mainly on the heart rate of the user. However, after buying it, and testing it, I realized that it was too unreliable, so that’s where my idea for tilt sensor came in. This sensor was best suited, because it was easier to use, and had far less parameters than the other ones. Another option was an accelerometer, but it had too many parameters, which made it not feasible.
Arduino:
For this first part, I tested heart sensor, because I have never worked with it before. I used the internet for code references, as well as wiring schemes. At first, the heart rate reading was too unstable, so Gottfried suggested a technique using average, so the values wouldn’t go from 80 to 200. Then to put the arduino part together, I soldered the tilt sensors together with the long wires, as well as the heart sensors. The video can be found below. Afterwards, I used electrical tape to cover the exposed parts, as well as to do some cable management. The final sensors can be viewed below as well. After that I started wiring everything together, And hot gluing them so they stayed fixed in place. The Arduino code can be found below.
Heart rate sensor:
Soldering:
Cable management:
Final sensors:
;
Gluing part one:
Gluing part 2:
Final physical part:
Code:
Digital FAB:
For this part, I searched for an online box maker, and then measured the size of the Arduino. After taking the measurement, I created the box, and went to the fab lab in order to use the laser cutter.
SVG file:
Cutting time lapse:
Assembly:
Processing:
For the processing part, I used what I did in recitation 10, and applied it here. Firstly, I drew 2 different colored rectangles to represent the sensor colors. Then I used the text function in order to draw the interface. I also uploaded 2 images, one for the win page, and other one for when a player reached 50 jumping jacks. Then used IF statements for when a player reached 75, thus displaying the win page. The code can be found below.
Code:
import processing.serial.*;
import osteele.processing.SerialRecord.*;
PImage photo;
PFont myFont;
PImage photo1;
Serial serialPort;
SerialRecord serialRecord;
void setup() {
fullScreen();
photo= loadImage(“Win.jpg”);
photo1= loadImage(“almost.png”);
String serialPortName = SerialUtils.findArduinoPort();
serialPort = new Serial(this, serialPortName, 9600);
serialRecord = new SerialRecord(this, serialPort, 4);
serialRecord.logToCanvas(false);
String[] fontList = PFont.list();
printArray(fontList);
myFont = createFont(“Broadway”, 32);
textFont(myFont);
}
void draw () {
serialRecord.read();
//red sensor
int val0 = serialRecord.values[0];
int val1 = serialRecord.values[1];
//green sensor
int val2 = serialRecord.values[2];
int val3 = serialRecord.values[3];
fill(255, 0, 0);
noStroke();
rect(0, 0, width/2, height );
fill(0, 255, 0);
noStroke();
rect(960, 0, width, height);
//repetitions red
if (val0 > 0) {
fill(0);
textSize(90);
text(val0, 448, 600);
}
//heart rate red
if (val1 > 0) {
fill(0);
textSize(50);
text(val1, 165, 60);
}
//repetitions Green
if (val2 > 0) {
fill(0);
textSize(90);
text(val2, 1460, 600);
}
//heart rate green
if (val3 > 0) {
fill(0);
textSize(50);
text(val3, 1830, 60);
}
fill(0);
textSize(80);
text(“JUMP IT!”, 800, 150);
fill(0);
textSize(75);
text(“Player 1:”, 280, 220);
//P1 BPM
fill(0);
textSize(50);
text(“BPM:”, 25, 60 );
//P1 REPETITION
fill(0);
textSize(70);
text(“Jumping Jacks:”, 160, 380);
//P2
fill(0);
textSize(75);
text(“Player 2:”, 1300, 220);
fill(0);
textSize(50);
text(“BPM:”, 1680, 60);
fill(0);
textSize(70);
text(“Jumping Jacks:”, 1160, 380);
fill(0);
textSize(70);
text(“First to 75 wins!”, 690, 1000);
//Almost there
if (val0 >=50) {
image(photo1, 340, 680);
}
if (val2 >=50) {
image(photo1, 1350, 680);
}
//final win page
if (val0 >= 75) {
val2=0;
background(255, 0, 0);
image(photo, 700, height/2);
fill(0);
textSize(90);
text(“Player 1 Wins!!”, 600, 380);
} else if (val2 >= 75) {
val0=0;
background(0, 255, 0);
image(photo, 700, height/2);
fill(0);
textSize(90);
text(“Player 2 Wins!!”, 600, 380);
}
println(mouseX, mouseY);
}
- CONCLUSIONS:
Begin your conclusion by restating the goals of your project. Did your project achieve its stated goals? Based on your expectations of your audience’s response, how, ultimately, did your audience interact with your project? How do your project results align with your definition of interaction? How would you improve your project if you had more time? What of value have you learned from any setbacks and / or failures? What do you take away from your accomplishments?
To conclude, I designed this project in order for all of us to move. The project did achieve its goal. Based on the audience, they enjoyed the part where it was a competitive game. I think that it aligns with interaction, because of how engaged the users are. If I had more time, I would improve the user interface, as well as making the sensors wireless using Bluetooth. To wrap up I believe people should care, because how important physical movement is to health, and not having enough of it could negatively impact it.
- ANNEX
Final class presentation:
Sources:
https://lastminuteengineers.com/pulse-sensor-arduino-tutorial/