First Midterm Project – GPS Random Scoring Machine
GPS Random Scoring Machine – Raphael & Jennifer – Instructor: Eric Parren
I
CONTEXT AND SIGNIFICANCE
Previous group projects gave me the inspiration to help people solve their choice disorder, so this time I envisioned a random scoring machine.
In the GPS (Global Perspective of Society, which is a mandatory course for all freshmen students in NYU Shanghai) class, the teachers will give us grades based on the reading response weekly. However, the scores we get are often confusing. As a self-ironic thought, we designed this.
II
CONCEPTION AND DESIGN
At the beginning, we wanted to make a combination of retro mini-games. The main elements in our project are a 3D pinball game and Rube Goldberg Machines. The user launches a ball in a track, and depending on the user’s strength, the ball goes into different lanes. This is very much like the very old-fashioned pinball games of yesteryear.
The ball is then used to perform a series of chain reactions. This part of the game is inspired by many of the youtubers, where a single reaction generates a series of chain reactions, through some complex mechanisms, and ultimately achieves some simple purpose, perhaps to pick up a drink or answer a phone call.
The materials we used are wood, acrylic, and cardboard. When selecting materials, we mainly consider the rigidity and density of the material. Because the whole installation is very tall and needs to be rigid, strong materials are used for the base plate, pillars and facades. For other parts, we use more lightweight and low-density materials to reduce the overall weight.
Another possible option was to use all the watch rooms, but we rejected this option because the final product would not be rigid enough and would probably collapse when the ball is launched.
III
FABRICATION AND PRODUCTION
Production Process
One of the major shortcomings of our project is that it took too long. My teammates and I worked in the studio for almost seven hours a day for a week, and we also suffered from severe lack of sleep.
The success, in my opinion, is that we managed to complete the work in the end, from the process of launching the three different paths to receiving and displaying the results. The entire project can even be seen as consisting of five small projects, so the construction is very difficult and there are many mistakes. It is not easy to complete it in the end.
My teammates and I complete a task together most of the time, so we can better detect errors and deficiencies in the execution of the task.
We learned the use of laser cutting and 3D printing together, which helped us a lot in cutting wood boards, acrylic boards and making small balls respectively.
The adjustment process is also extremely long. We adjust the curvature and length of the track little by little to ensure that the ball travels along the expected track. We also adjust the spacing between each board little by little to allow the ball to fall in just right. It won’t get stuck and it won’t bounce around.
We also need to consider the placement of each component and place the circuitry and display within it to make the entire project aesthetically pleasing.
When it comes to writing code, since we have never learned how to use a display, we encountered many difficulties in both connection and coding. Fortunately, we finally found the instruction manual by scanning the QR code on the outer box. And connecting the sensor is not as easy as we imagined. Since there are only two sets of analog output interfaces at most after plugging in the display, two Arduinos and two computers are needed to make the connection of the entire project stable.
Here is my code:
#include #include LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // select the pins used on the LCD panel #define TRIGGER_PIN_1 3 #define ECHO_PIN_1 11 #define TRIGGER_PIN_2 13 #define ECHO_PIN_2 12 #define MAX_DISTANCE_1 400 // Maximum distance we want to measure (in centimeters). #define MAX_DISTANCE_2 400 // Maximum distance we want to measure (in centimeters). NewPing sonar1(TRIGGER_PIN_1, ECHO_PIN_1, MAX_DISTANCE_1); // NewPing setup of pins and maximum distance. NewPing sonar2(TRIGGER_PIN_2, ECHO_PIN_2, MAX_DISTANCE_2); // NewPing setup of pins and maximum distance. void setup() { Serial.begin(9600); } void loop() { delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings. int distance1 = sonar1.ping_cm(); // Send ping, get distance in cm and print result (0 = outside set distance range) int distance2 = sonar2.ping_cm(); // Send ping, get distance in cm and print result (0 = outside set distance range) Serial.print("Distance1: "); Serial.print(distance1); Serial.println("cm"); Serial.print("Distance2: "); Serial.print(distance2); Serial.println("cm"); if (distance1 < 10 && distance2 > 2) { lcd.print("You get C "); } if (distance2 < 10 && distance1 > 2) { lcd.print("You get B "); } if (distance2 > 10 && distance1 > 10) { lcd.print(" "); } }
User testing session
During the user testing phase, many teachers and students who came to visit made many constructive suggestions. For example, the launch device could be improved because the original spring was too hard to stretch, resulting in a launch speed that was not high enough to trigger a subsequent chain reaction. So after that, we improved the launching device and replaced the spring with a small wooden stick. The speed at which the ball flies out depends on the thrust.
As for the sensor that finally detects the arrival of the ball and displays the result, our professor Eric also gave some suggestions. He pointed out that the pressure sensor may not be able to detect the impact force of the ball. After practice, we found that this is indeed the case and will It is replaced with an ultrasonic sensor to measure whether the ball is in contact with the sensor.
IV
CONCLUSIONS
Overall, after going through all the hard work, our project is finally presented to everyone in a relatively complete form. I think it achieved what we originally envisioned, which was to make four different choices through the pop-up of a random ball. It also achieves an interactive effect, launching multiple results at once and providing multiple feedbacks. Different paths can also bring different visual enjoyment to the audience.
According to the feedback from the audience, everyone highly recognized our project and expressed surprise and appreciation for its creativity and interactivity.
However, the project still has some imperfections, such as it is not strong and stable enough, sometimes the mechanism cannot be triggered correctly, and sometimes there will be problems with the circuit or code.
But I learned from my failures again and again that as long as I keep improving, I may not necessarily be able to achieve my goals, but I will always continue to move towards them.
This project truly is amazing interest me