About two months ago I created this little WebGL game (and a smaller version here) for a graphics course at school. The code can be found here on GitHub and the documentation here.
This was a while ago (I really do need to update this site more often, whoops), but back in early September, Tumblr decided to change its layout. Sideblogs, which used to be clickable links at the top of the page, are now on a right sidebar, and what’s annoying is that you have to click twice to get to a sideblog, whereas before it only took one click. Might just be a minor issue, but it kinda bothered me.
Today I was bored and I remembered this video I saw awhile back that had a TF2 kill counter using an Arduino. I’ve been playing TF2 a lot recently (since it became free to play, I’ve been doing a lot better in comparison) so I figured it would be cool to implement something like that. I could’ve done it with LEDs or even GLCD screens (actually it might be cool to do something with the LoLShield), but since Cubey’s been sitting on my desk unused for the past few months, I thought I’d put him to use. Cubey gradually turns around as I get more kills, and after a certain point, he starts moving his ears. He turns back around in disappointment when I die, though.
I used Python to read the config.log file located in the tf folder (on mine, it’s “C:¥Program Files (x86)¥Steam¥steamapps¥your_username_here¥team fortress 2¥tf”). It reads the latest lines and looks for “A killed B” or “A suicided” and sends either a + to the Arduino when A kills someone or it sends a 0 when A is killed by someone else or kills themself. The Arduino then reads from the serial port one character at a time and makes the Cubey servos move accordingly.
Binary tree generator. No, not the data structure, but an artistic representation of a binary tree (edit: I have learned that this kind of thing is called an L-system). The swf can be found here or embedded in the full post. Click the button on the bottom left to randomly generate a new tree. I’ve also uploaded the source FLA file here. I didn’t really bother to optimize the code, so there are probably a lot of improvements that could be made.
Note: The FLA file is saved in Macromedia Flash Professional 8 format, with Actionscript 2.0. It’s a pretty old version of Flash, so it should be openable by any of the Adobe versions of Flash as well.
Made this back in May but never actually made a post on here about it. I used the “Touch Screen/Digitizer for NDSi LL” I got from DealExtreme and a speaker to generate sound based on where you press on the screen.
I modified the scrolling text program some more, and was able to get it to display text based on received serial input. Then I wrote a Python script to get random entries from various RSS feeds (In the video above, the RSS feeds were the Twitter favorites of various people) and send them to a serial port (to be received by the Arduino). One issue was that sometimes the text was too long for the Arduino’s 128-byte serial buffer, so it would get cut off at the end. To resolve this, in the Python script, I split the text into multiple parts and had it wait for the Arduino to request the next part before sending it.
The Arduino code works on its own; you can use the serial monitor in the Arduino compiler to send text to it, but if it’s more than 128 characters, it’ll get cut off. Just remember to have it add a newline character to the end of your input. Also, removing the lines that say “Serial.write(GET_NEW);” and “Serial.write(GET_MORE);” would be a good idea, if you don’t plan on using an external program to provide the input.
(Edit: I’ve updated the code so that it doesn’t spam the serial monitor if you don’t input any text. Also the python code has many flaws and sometimes it crashes, whoops)
Soldering it took forever (three hours) because I am terrible at soldering. In the end, things weren’t soldered so well so some of the LEDs weren’t lighting up (two of the columns didn’t light up because of a single badly-done solder joint), so I had to do a lot of checking. I also burned out one of the LEDs; thankfully they included 8 extra LEDs, probably for such things. The solder vacuum helped a lot more than I thought it would; it’s way better than the desoldering bulb I was using.
An improved version of that image mirroring program I made awhile back. This one allows you to select the line of symmetry, rather than always having it be at the center of the image. Left-clicking sets the line of symmetry. Right-clicking changes the location of the zoom-box and the left/right keys nudge the line of symmetry one pixel to the left or right, if you want more precision.
It gets kinda slow if you try using it on larger images, so smaller images will yield quicker results.
A java applet and Processing source code can be found here.