When we started making Run! our original plan was to create a fitness app/program which would be an interesting way to encourage people to work out and sustain a healthy lifestyle, especially in light of the increasing obesity rates in the US in the last few decades. Over 23% of Americans get enough exercise, but with 150 million Americans playing video games, we wanted to create a game that would allow people to integrate their passion for gaming with exercise. However, as we kept working and developing our idea, we ended up with a program that not only supports the sustainability of health in communities but also creates a fun, competitive game that encourages players to keep exercising if they want to attain a higher score.
What it does
Run! tracks acceleration and position of various directional vectors and creates a game-like program that tells users to run faster, jump, or sidestep through the LED Screen. If users achieve the goal, they continue on to the next task in an infinite loop. When the user fails, then the program prints the score asks if the player would like to restart or exit the game.
How we built it
In our hardware, we used an Arduino with an accelerometer to track the acceleration of the runner (x-axis) as well as the vertical change (y-axis), and distance of sidestep (z-axis). Alongside that, we used a button to begin the program, an LCD screen that tells the runner the current task, and a buzzer that plays a song as the program runs to indicate when the next action will take place. As for software, we used Arduino IDE to develop the program and did a lot of testing to determine the sensitivity needed for the code design. We also used various libraries and a unique header files to reduce dynamic memory.
Challenges we ran into
As first-time hackers, we have never created an entire program such as this one in this short a period of time. At first, we were interested in making a mobile app before realizing that we didn’t have any experience with React Native, NodeJS, and Android Studio, nor did we have access to Swift. As a result, we ended up switching over to what is now called Run!, another one of the ideas we brainstormed. We initially tried using Raspberry Pi before realizing that we only needed a microcontroller and that we didn’t have much experience using that piece of hardware.
We found that Arduino made more sense in both the hardware and software aspects. The main programming language which knew was C++ and therefore, implementation in C was a lot easier to adjust to. The most difficult part about the program was the debugging process which took a lot of time, especially in terms of decreasing our usage of dynamic memory by putting data into program memory and figuring out the overflow of our time variable.
Accomplishments that we're proud of
We’re really proud that we finished our very first hackathon and produced something which not only allowed us to grow as students but also might be helpful to other people. This has definitely allowed us to step outside our comfort zone, especially with the integration of hardware in our hack which is something we don’t have that much experience in.
What we learned
Through this process, we learned a lot about working under time pressure and the importance of understanding each other’s strengths and using them to our advantage as a result. We also learned a lot more about hardware, such as pins, groves, and various input and output devices. We learned how to use libraries and look up how different components work and how to phrase the questions we came across while debugging to find the most helpful answers to our problems. Learning how to debug hardware was challenging but rewarding!
What's next for Run!
Due to memory constraints, in the future we hope to expand the type and amount of music users can use to play as well as develop more story-like scenarios such as being chased or needed to jump over an obstacle to make the experience more entertaining. If we're able to, we'd also like to get narration for the stories and possibly make it wearable.