Artisan's Asylum Hovercraft Competition

From Friday, Jan 27 to Sunday, Jan 29 a few of my friends and I spent a lot of time at Artisan's Asylum in Somerville, MA. We weren't there just for fun (though we had plenty of fun). Instead we were there to design a working RC hovercraft in 48 hours. The participants from BUILDS (BU's hackerspace) were divided up into two teams:

Team McFly and the Hoverboard: Christopher Woodall (me), Ian Felder, Marc Beneck and Alejandro Bancalari

The Cult of the Devouring Fan and Brogle the Insatiable: Russel Shomberg, Patrick Ehrlicher, William Gullotta and Alex Whittemore

In the beginning we were given the electronics, a piece of pink foam, some wood and access to most of the tools in Artisan's Asylum. There is no real documentation from either my group's design, or the other BUILDS group's design; however we certainly had a ton of fun and we have pictures and videos. Also, it was my first time helping design a Radio Controlled vehicle and it was a ton of fun (which I hope to do again).

Nomis: A Simon Clone for the ATTiny85

Overview

Nomis is a Simon-like memory game for the ATTiny85, which uses the ATTiny85. The game logic in the ATTiny85 was implemented using AVR C and takes up 983 bytes in program memory and 6 bytes in data memory. The implementation size comes in under 1kB, but could most certainly be smaller. The pin usage, however, is very conservative and the games electronics take up a total of 4 of the 6 available pins. The 4 LEDs are controlled on 3 pins using Charlieplexing model (which could easily be extended to 6 LEDs). On the other hand the 4 pushbutton switches are feed into an ADC input through an R2R ladder configuration. I am very happy with the limited pin usage of this project.

The gameplay of Nomis is the same basic scheme as Simon. Which is to say once you initiate a game with it the game logic generates a random move, which lights up one of the 4 LEDs. Then Nomis waits for you to copy it. Each consecutive move is stored in an array and the string of moves must be copied exactly by the player. The game has no real ending conditions; however, the maximum number of moves is 100, but even then that limit was arbitrarily set by me. With a sufficiently large slice of memory and an extremely skilled (or cheat prone) individual the game could last forever. That said, the goal of the game is to best your previous score, which you keep track of by yourself.

Continue reading Nomis: A Simon Clone for the ATTiny85

Projects: Reload-JS (v0.1)

Reload-JS is a javascript live loader whose goal is to be simple and light weight. I created Reload-JS while working on an Infographics Landing Page, and embedding solution, for Newlogic USA. I needed to load and check for any libraries I need (namely jQuery). The loading part has been taken care of in this version, but I am trying to figure out how to include tests for each library, to make sure no override occurs (my jQuery doesn’t break or overwrite the loaded pages jQuery).

More after the jump.

Here is the Reload-JS source code. It is simple and it doesn’t really do anything special. Most of the code has been used previously and is very popular for live loading. It accomplishes its task by using a recursive set of callbacks and has a few ways to call it.

First you can use the following:

Or this

My personal favorite is this following call:

You see Reload will automatically append the js if you don’t already have it attached. This is a nice feature to make nice simple calls like above. Reload allows you to set your primary library location and then takes care of it too. This makes loading multiple libraries pretty nice. However, what if you need to use a different host for one of your libraries? No worries! just make sure you use http:// and Reload will detect that it shouldn’t append your default library location to your URL (absolute URL handling).

Reload also has the ability to load from a variable it holds called libs. This can be risky, if multiple people try to use it and is not suggested unless you are sure no one else is using Reload.

Here is the code (and decently commented):

Enjoy!

Review of 2010

 Some rights reserved by aresauburn"2010 was a busy year for me. It started in chaos and ended quite enjoyably. When I started this year I was a senior in high school confused about what I wanted to do with me life, now I am a freshman in college, still confused, but with an inspiration to create. I am pretty set on engineering now, but more than that I am excited to just make things, DIY things and ultimately express myself through these things. My pursuit of music was a pursuit of expression, but I am starting to find a new way of expressing myself through electronics.

  • Blinking LEDs on an Arduino

Making LEDs bling was my first working Arduino circuit and I, daresay, one of the more intriguing projects I finished because I felt empowered. I don’t think, there is something that can empower a person more than feeling like they have just opened the door to all of electronics, the building block of modern technology and life. Sure it was tiny, but it was meaningful and after a burnt LED or two I learnt a lot.

  • Photo-phone

This was my first foray into the analog side of electronics. The project was to build a photophone, a “phone” which transmits the sound via a fiber optic cable. The schematics were already done for us, but it was the first time I even looked at an op-amp and worked with ICs directly. More importantly, it was the first full working project I made working it was my first time not using the Arduino to process input and generate output.

  • MIDI Ribbon Controller using an Arduino

Moving back to using the Arduino as the base of my project I decided to make a MIDI Ribbon Controller for my Electro-Acoustics/Electric Guitar class. The project for the class was fairly open ended. Despite the project dying during transport I was able to get it working. The last bug I had to work out was the pitch bend algorithm to make it gracefully bend across two octaves lined up (at least approximately) with the notes. I learnt a lot this, especially not to transport breadboard based circuits from Boston to Long Island in a plastic box in your backpack

  • Random Tiny Scripts

This was the year for me to restart with my programming. I had not actually taken programming seriously since 9th grade or so, but finally I am starting to come back around to it. I rekindled my love of programming at RHoK and it has been continuing as a brush up on Python and Ruby (and twiddle around with Haskell and deepen my knowledge of C). Let us see where this goes!

Python Development: Brushing Up and Google APIs

PythonI started brushing up on python recently. In actuality there was not a whole lot of brushing up to do. In fact, the process was fairly straight forward. I remembered the syntax and most of the basic concepts behind the language. I also started working on a “List Cruncher” for http://www.onethirtybpm.com (a music site which I co-founded, but currently am uninvolved in).

While being updated on the status of 130BPM I was told of the horrors of compiling the year end lists (out start of next year due to maintenance). I decided to use my knowledge of python and try to offer up a solution. They maintain all of the information on Google Docs Spreadsheets, add weight and crunch the numbers by hand.

What I decided to do was take the Google Data API (which is not well documented, especially by Google standards) to retrieve the spreadsheet as a csv file and then crunch the information from there outputting the final list. So far the process has been straight forward, but the documentation is holding me back.

I also discovered I need to work on documentation myself. I need to start reading up on that. Updates on this project will be coming (and the source code should be released under some open-source license) to GitHub soon!