The story to this post started in early May when my teacher Richard Lachman asked me if I wanted to participate in this initiative called “TIFF Nexus”. He didn’t tell me much except that there was going to be game developers and hardware hackers and it was going to be a whole lot of fun. Skeptical but intrigued I decided to fill out the application and send it back to him. A few months later I get an email about the first meeting.
In late July or early August the TIFF Nexus Peripheral Initiative had its first meeting. Durning this time we all shared what were were working on and what cool hacks we had done. We were also introduced to a few people which would help us along the way. At the second meeting we had a team building session so that we could better get to know each other and this was one of the highlights of this initiative. The moderator was great and although I dont really remember his name, he did leave a lasting impression in my mind. I also remember him asking me for my website I had shown so that he could show his son some of the cool hacks I had worked on. This also made me really happy to be a part of this event.
After a few meetings it became more clear about what this initiative was about and the goals and expectations involved. The hardware hackers were going to team-up with the game developers and they were going to create some crazy, never before seen games. We were given a budget of $800 and great freedom about what we could do. That $800 seemed like it was way more then enough money to complete almost anything, but looking back now, it really went in a second. Just after school had started up again in September we had a meeting where we were told it was time to pick our teams. Everyone wrote ideas about possible projects and taped them to a wall, then everyone else without an idea would write their names beside the ideas they were most interested in building.
When I started this initiative i really wanted to attempt to build something that can be used in the future and that can be upgraded and built up. My partner to be Alex had a game idea called “button masher”, I game board of buttons and lights that users would interact with. This idea really cough my attention as it was exactly what I was looking for. I knew that no matter what we did, we could always upgrade and add to this project after it was over. I really didn’t know it at the time but “button masher” was going to be very popular. I wrote my name on his idea and that was that, we were going to build “button masher” .
Alex had a pervious flash based hexagonal game that he really wanted to use and upgrade to make button masher. That was totally cool with me since I wanted to do all my coding on the Arduino platform. With some little research we found a way to make the Arduino and Flash talk and we were ready to start building the project. After everything was decided we both split up and started working at what we did best. I really didn’t try and add to any of Alex’s game mechanics because I knew that he was the developer and trusted he could create really fun and engaging games. This was totally mutual and I remember Alex saying in an interview that neither of us could do this project without eachother. We both did our own thing for the most part and tried to keep each other sane though different points of the project.
After deciding that we would create two game boards each with 30 buttons/lights in a hexagonal pattern, I started getting to work on how I was going to make this possible. I knew that RGB leds would be the best alternative since we are able to create more then 3 colours by combining light from the red, green and blue leds. In order to drive this many LEDs(120 of them) with an Arduino I needed to find or make some sort of controller to drive them all. I also wanted to make sure that each LED was individually addressable meaning that we could change the color of each LED independently. I looked at a few options such as using shift registers to free up pins, or using LED matrix driver chips. These solutions were great but they were either too expensive for our budget. Then I had another idea. I knew that Sparkfun produced 8X8 RGB LED Matrix Backpacks and they addressable by serial communication which makes them individually addressable. I decided that I was just going to hack the backpack board and create my own custom LED RGB matrix.
After a little bit of work I had my hexagonal LED matrix set up. I also made a breakout board for the backpack from sparkfun so that I would be able to just pop it on and off for testing. Another thing I need to do with to remove the SMD reisitors that were going to each LED in order to keep the voltage regulated. I knew that the LEDs I was using and was rated at a higher voltage so in order to get the full brightness these needed to get removed.
After hooking everything up almost everyting was working perfectly. I had a few LEDs that would not turn on, and some that were not properly soldered to the boards. After a few fixes and some code for the Arduino the board was working and now fully addressable. Check out this video posted of the first test of the fully working matrix.
Now that the matrix was taken care of it was time to figure out how we were going to make buttons that we can embed with LEDs or if we could find some button lights that we could buy for cheap. At this point with all the LEDs, the matrix backpacks and the 2 Arduino megas needed for the two boards out budget was about half done. I really wanted to design some buttons and cut them out with a lazer cutter but one of our advisors suggests we just find push button lights and use those instead. I am really really glad he told us to do that because if we didn’t I can probably say that there would be no button masher. Finding push button lights in toronto became very challenging. We could find them everywhere be they were $8-$15. I went to Amazon and to my amazment I found the same push lights as the store had for $2.10 each. This was a perfect price for us so I decided to order them. The total cost for the buttons were about $250 since shipping costs were so high.
When we ordered the buttons we had about 3 weeks left to build and test the devices and we were really worried that they would not be delivered in time. To our surrise they were shipped with a very faster service and we got them about 3 days later. After a long wait at the UPS facility the buttons where finally home.
It was now time to start the gruelling process of opening the buttons up, taking the old light out, and soldering leads for the buttons. I just wanted to note that these push button come with a on/off switch. This ment that each time you pressed the switch the state of the button would go from on to off or vise versa. For the button masher we needed to have momentary switches so that we could detect when the press was made. To make the standard on/off buttons work with out project I wrote some code that was able to detect the state changes and whenever the state changed it was trigger a button press. This worked great and solved that issue. So now we had 60 buttons and they needed to be opened up. This is when the button “sweat shop” started in my basement.
After a long night of working the buttons where done and it was time to start building the boards. Here is a stop motion of me measuring and attaching the buttons to board.
For the wiring of the LEDs I wanted to use ribbon cable in order to keep everything neat and organized. This really proved helpful and having never worked with ribbon cable before I can say that I will be using it in the future. Although it is a little more expensive it will save you a great deal of headaches when connecting a large amount of wire together.
The next little part is a bit of a blur as I had about 4 days to build two of these boards. I used a glue gun to glue the lights to the buttons and then used network cable to attach the buttons to the Arduino. For the button part of the project I also needed to make a custom board in order to attach 10k pullup resistors so that the buttons would be as accurate as possible. The board was build with a few hours to spare and was fully working on the night of the exhibit. Bellow is a video of the demonstration mode running as well as some pictures from the night of the exhibit.