This week it was my turn to work with a team in order to develop an interactive project that took advantage of the new skills and technologies we learned in class. In last week's class, we looked at using the Arduino Yún as a bridge between the physical world and the online spaces we've been creating since the beginning of the semester.
After brainstorming many ideas, we decided we wanted to make a collaborative game online that would have a physical output in the real world. Ideally we would have made the physical world an input to have an output in the digital world (we thought that would be more interesting) but we were limited by the timeframe (1 week) and the hardware available to us (we only have 1 Arduino Yún).
Our game is quite simple: users have to keep their mouse cursor on a ball that is moving across the screen. The longer their mouse is on the ball, the more points are added up. Everyone's points are stacked up, and when a certain threshold is reached, a servo motor is triggered in the physical world which demolishes a Jenga tower by pulling out one of the Jenga blocks. Here's a video of the project in action in class:
I focused on the web portion of the project: creating an online space where all users could interact together and see each other's interactions, and sending the proper data to the Arduino Yún once the threshold was reached. For the website, we used a canvas element to draw the bouncing ball, as well as every user's mouse cursor. Everyone sees the same bouncing ball, and everyone sees everyone's cursor as well. Everyone is aware of each other's presence, movements, and interactions. Once the point threshold is reached, an HTTP request is sent to the Arduino Yún (It has its own IP address), on the pin that the servo motor is connected to, turning it on. Once on, it spins and pulls the string which is tied to the Jenga block.
The code for the web portion is up on Github.
To improve on this in the future, we would enhance the visual design and user experience of the website to provide more feedback on the points each user has, along with the total score of the group. We'd also add feedback to let them know when the mouse cursor is on the ball. The feedback for this could be visual or in the form of audio.